From 1c6b0d806825a969d93d77a273c2212b67ae3709 Mon Sep 17 00:00:00 2001 From: RagnarW Date: Mon, 4 Dec 2017 14:12:32 +0100 Subject: [PATCH] Use RestoreDatabaseCommand when seeding stores Make sure configurations such as logical_logs_location are respected by using the RestoreDatabaseCommand instead of simply recursively copy the files. --- .../causalclustering/ClusterSeedingIT.java | 17 +++++++++-------- .../ConvertNonCausalClusteringStoreIT.java | 5 ++++- 2 files changed, 13 insertions(+), 9 deletions(-) rename {enterprise/causal-clustering => integrationtests}/src/test/java/org/neo4j/causalclustering/scenarios/ConvertNonCausalClusteringStoreIT.java (93%) diff --git a/enterprise/backup/src/test/java/org/neo4j/causalclustering/ClusterSeedingIT.java b/enterprise/backup/src/test/java/org/neo4j/causalclustering/ClusterSeedingIT.java index 59ff73ad15902..04f73173e5ad6 100644 --- a/enterprise/backup/src/test/java/org/neo4j/causalclustering/ClusterSeedingIT.java +++ b/enterprise/backup/src/test/java/org/neo4j/causalclustering/ClusterSeedingIT.java @@ -26,11 +26,9 @@ import org.junit.Test; import java.io.File; -import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; -import java.util.function.IntFunction; import org.neo4j.causalclustering.catchup.tx.FileCopyMonitor; import org.neo4j.causalclustering.catchup.tx.PullRequestMonitor; @@ -51,9 +49,9 @@ import org.neo4j.test.rule.fs.DefaultFileSystemRule; import static java.util.Collections.emptyMap; -import static java.util.Collections.singletonMap; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.neo4j.causalclustering.BackupCoreIT.backupAddress; import static org.neo4j.causalclustering.discovery.Cluster.dataMatchesEventually; import static org.neo4j.causalclustering.helpers.DataCreator.createEmptyNodes; @@ -138,15 +136,19 @@ public void shouldRestoreBySeedingAllMembers() throws Throwable DbRepresentation before = DbRepresentation.of( backupDir, config ); // when - fsa.copyRecursively( backupDir, cluster.getCoreMemberById( 0 ).storeDir() ); - fsa.copyRecursively( backupDir, cluster.getCoreMemberById( 1 ).storeDir() ); - fsa.copyRecursively( backupDir, cluster.getCoreMemberById( 2 ).storeDir() ); + for ( CoreClusterMember coreClusterMember : cluster.coreMembers() ) + { + String databaseName = coreClusterMember + .getMemberConfig().get( GraphDatabaseSettings.active_database ); + new RestoreDatabaseCommand( fsa, backupDir, coreClusterMember.getMemberConfig(), databaseName, true ) + .execute(); + } cluster.start(); // then dataMatchesEventually( before, cluster.coreMembers() ); assertFalse( detectFileCopyMonitor.fileCopyDetected.get() ); - assertEquals( 4, pullRequestMonitor.numberOfRequests() ); + assertTrue( pullRequestMonitor.numberOfRequests() >= 2 ); } @Test @@ -174,7 +176,6 @@ public void shouldSeedNewMemberFromEmptyIdleCluster() throws Throwable dataMatchesEventually( DbRepresentation.of( newMember.database() ), cluster.coreMembers() ); assertFalse( detectFileCopyMonitor.fileCopyDetected.get() ); assertEquals( 1, pullRequestMonitor.numberOfRequests() ); - assertEquals( 1, pullRequestMonitor.lastRequestedTxId() ); } @Test diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ConvertNonCausalClusteringStoreIT.java b/integrationtests/src/test/java/org/neo4j/causalclustering/scenarios/ConvertNonCausalClusteringStoreIT.java similarity index 93% rename from enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ConvertNonCausalClusteringStoreIT.java rename to integrationtests/src/test/java/org/neo4j/causalclustering/scenarios/ConvertNonCausalClusteringStoreIT.java index 8d0ab0dc28ce3..93de2949b6ab1 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ConvertNonCausalClusteringStoreIT.java +++ b/integrationtests/src/test/java/org/neo4j/causalclustering/scenarios/ConvertNonCausalClusteringStoreIT.java @@ -35,10 +35,12 @@ import org.neo4j.function.ThrowingSupplier; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Transaction; +import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.io.fs.DefaultFileSystemAbstraction; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.store.format.highlimit.HighLimit; import org.neo4j.kernel.impl.store.format.standard.Standard; +import org.neo4j.restore.RestoreDatabaseCommand; import org.neo4j.test.causalclustering.ClusterRule; import static java.util.concurrent.TimeUnit.SECONDS; @@ -81,7 +83,8 @@ public void shouldReplicateTransactionToCoreMembers() throws Throwable { for ( CoreClusterMember core : cluster.coreMembers() ) { - fileSystem.copyRecursively( classicNeo4jStore, core.storeDir() ); + new RestoreDatabaseCommand( fileSystem, classicNeo4jStore, core.getMemberConfig(), core.settingValue( + GraphDatabaseSettings.active_database.name() ), true ).execute(); } }