From 2df897ab0baea04a3884cab819df783b3da4c04d Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Tue, 22 Sep 2026 09:53:31 -0400 Subject: [PATCH] Clear FoundationDB databases before each test --- .../storage/FoundationDbClusterExtension.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) 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; }