From 04ecc2e78f8b69b1d6e57e7b37886eb75ee783e6 Mon Sep 17 00:00:00 2001 From: gbrodman Date: Fri, 30 Jul 2021 15:31:46 -0400 Subject: [PATCH] Add a test for replaying cascading deletes to SQL (#1259) * Add a test for replaying cascading deletes to SQL --- .../ReplayCommitLogsToSqlActionTest.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/core/src/test/java/google/registry/backup/ReplayCommitLogsToSqlActionTest.java b/core/src/test/java/google/registry/backup/ReplayCommitLogsToSqlActionTest.java index 7fe2998e1..459c26f44 100644 --- a/core/src/test/java/google/registry/backup/ReplayCommitLogsToSqlActionTest.java +++ b/core/src/test/java/google/registry/backup/ReplayCommitLogsToSqlActionTest.java @@ -525,6 +525,35 @@ public class ReplayCommitLogsToSqlActionTest { assertThat(TestObject.beforeSqlDeleteCallCount).isEqualTo(1); } + @Test + void testSuccess_cascadingDelete() throws Exception { + DateTime now = fakeClock.nowUtc(); + jpaTm().transact(() -> SqlReplayCheckpoint.set(now.minusMinutes(1).minusMillis(1))); + createTld("tld"); + DomainBase domain = + newDomainBase("example.tld") + .asBuilder() + .setDsData(ImmutableSet.of(DelegationSignerData.create(1, 2, 3, new byte[] {0, 1, 2}))) + .build(); + jpaTm().transact(() -> jpaTm().put(domain)); + + assertThat(jpaTm().transact(() -> jpaTm().loadAllOf(DelegationSignerData.class))).isNotEmpty(); + + saveDiffFile( + gcsUtils, + createCheckpoint(now.minusMinutes(1)), + CommitLogManifest.create( + getBucketKey(1), now.minusMinutes(3), ImmutableSet.of(Key.create(domain)))); + runAndAssertSuccess(now.minusMinutes(1), 1); + + jpaTm() + .transact( + () -> { + assertThat(jpaTm().loadAllOf(DomainBase.class)).isEmpty(); + assertThat(jpaTm().loadAllOf(DelegationSignerData.class)).isEmpty(); + }); + } + private void runAndAssertSuccess(DateTime expectedCheckpointTime, int numFiles) { action.run(); assertThat(response.getStatus()).isEqualTo(SC_OK);