diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/storage/FoundationDbClusterExtension.java b/service/src/test/java/org/whispersystems/textsecuregcm/storage/FoundationDbClusterExtension.java index 5a1f244c1..fb7f13920 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/storage/FoundationDbClusterExtension.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/storage/FoundationDbClusterExtension.java @@ -6,15 +6,19 @@ package org.whispersystems.textsecuregcm.storage; import com.apple.foundationdb.FDB; +import com.apple.foundationdb.Range; import java.io.IOException; import org.junit.jupiter.api.extension.BeforeAllCallback; +import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; import org.whispersystems.textsecuregcm.storage.foundationdb.FaultTolerantDatabase; -public class FoundationDbClusterExtension implements BeforeAllCallback, ExtensionContext.Store.CloseableResource { +public class FoundationDbClusterExtension implements BeforeAllCallback, BeforeEachCallback, ExtensionContext.Store.CloseableResource { - private FoundationDbDatabaseLifecycleManager[] databaseLifecycleManagers; - private FaultTolerantDatabase[] databases; + private final FoundationDbDatabaseLifecycleManager[] databaseLifecycleManagers; + private final FaultTolerantDatabase[] databases; + + private static final Range ALL_KEYS_RANGE = new Range(new byte[] {}, new byte[] {(byte) 0xff}); public FoundationDbClusterExtension(final int numInstances) { this.databaseLifecycleManagers = new FoundationDbDatabaseLifecycleManager[numInstances]; @@ -38,6 +42,16 @@ public class FoundationDbClusterExtension implements BeforeAllCallback, Extensio } } + @Override + public void beforeEach(final ExtensionContext context) throws Exception { + for (final FaultTolerantDatabase database : databases) { + database.run(transaction -> { + transaction.clear(ALL_KEYS_RANGE); + return null; + }, FaultTolerantDatabase.Context.TEST); + } + } + public FaultTolerantDatabase[] getDatabases() { return databases; }