Skip to content

Commit

Permalink
[NOID] Fix flaky ConfigTest (neo4j-contrib/neo4j-apoc-procedures#3559) (
Browse files Browse the repository at this point in the history
#414)

* [NOID] Fix flaky ConfigTest

* [NOID] changed apocConfig test handling
  • Loading branch information
vga91 authored May 19, 2023
1 parent e3023e0 commit 3f07d4d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 29 deletions.
32 changes: 12 additions & 20 deletions core/src/test/java/apoc/trigger/TriggerNewProceduresTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.ProvideSystemProperty;
import org.junit.rules.TemporaryFolder;
import org.neo4j.configuration.GraphDatabaseSettings;
import org.neo4j.dbms.api.DatabaseManagementService;
Expand All @@ -40,18 +41,13 @@
import org.neo4j.test.TestDatabaseManagementServiceBuilder;

import java.io.File;
import java.io.FileWriter;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.TimeUnit;

import static apoc.ApocConfig.SUN_JAVA_COMMAND;
import static apoc.trigger.TriggerNewProcedures.DB_NOT_FOUND_ERROR;
import static apoc.trigger.TriggerNewProcedures.TRIGGER_BAD_TARGET_ERROR;
import static apoc.trigger.TriggerNewProcedures.NON_SYS_DB_ERROR;
import static apoc.trigger.TriggerNewProcedures.TRIGGER_NOT_ROUTED_ERROR;
import static apoc.trigger.TriggerNewProcedures.*;
import static apoc.trigger.TriggerTestUtil.TIMEOUT;
import static apoc.trigger.TriggerTestUtil.TRIGGER_DEFAULT_REFRESH;
import static apoc.trigger.TriggerTestUtil.awaitTriggerDiscovered;
Expand All @@ -76,18 +72,14 @@ public class TriggerNewProceduresTest {
private static GraphDatabaseService db;
private static DatabaseManagementService databaseManagementService;

@BeforeClass
public static void beforeClass() throws Exception {
// we cannot set via ApocConfig.apocConfig().setProperty("apoc.trigger.refresh", "2000") in `setUp`, because is too late
final File conf = new File(directory, "apoc.conf");
try (FileWriter writer = new FileWriter(conf)) {
writer.write(String.join("\n",
"apoc.trigger.refresh=" + TRIGGER_DEFAULT_REFRESH,
"apoc.trigger.enabled=true"));
}
// we cannot set via ApocConfig.apocConfig().setProperty("apoc.trigger.refresh", "2000") in `setUp`, because is too late
@ClassRule
public static final ProvideSystemProperty systemPropertyRule =
new ProvideSystemProperty("apoc.trigger.refresh", String.valueOf(TRIGGER_DEFAULT_REFRESH))
.and("apoc.trigger.enabled", "true");

System.setProperty(SUN_JAVA_COMMAND, "config-dir=" + directory.getAbsolutePath());
@BeforeClass
public static void beforeClass() {
databaseManagementService = new TestDatabaseManagementServiceBuilder(storeDir.getRoot().toPath())
.setConfig(procedure_unrestricted, List.of("apoc*"))
.build();
Expand Down Expand Up @@ -280,7 +272,7 @@ public void testTxId() throws Exception {
UNWIND $createdNodes AS n
MATCH (a:Another) WITH a, n
SET a.txId = $transactionId, a.txTime = $commitTime""";

sysDb.executeTransactionally("CALL apoc.trigger.install('neo4j', $name, $query, {phase:'after'})",
Map.of("name", name, "query", query));
awaitTriggerDiscovered(db, name, query);
Expand Down Expand Up @@ -384,7 +376,7 @@ private void testMetaData(String triggerQuery, String phase, String matchQuery)
tx.execute("CREATE (f:Bar)");
tx.commit();
}

testCall(db, matchQuery, (row) -> {
final Node node = (Node) row.get("n");
assertEquals("Bar", node.getProperty("label"));
Expand Down Expand Up @@ -702,7 +694,7 @@ public void testInstallTriggerInUserDb() {
assertTrue(e.getMessage().contains(TRIGGER_NOT_ROUTED_ERROR));
}
}

@Test
public void testShowTriggerInUserDb() {
try {
Expand Down
16 changes: 7 additions & 9 deletions core/src/test/java/apoc/trigger/TriggerRestartTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,20 @@
import apoc.util.TestUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.contrib.java.lang.system.ProvideSystemProperty;
import org.junit.rules.TemporaryFolder;
import org.neo4j.configuration.GraphDatabaseSettings;
import org.neo4j.dbms.api.DatabaseManagementService;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.test.TestDatabaseManagementServiceBuilder;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collections;
import java.util.Map;

import static apoc.ApocConfig.SUN_JAVA_COMMAND;
import static apoc.trigger.TriggerTestUtil.TRIGGER_DEFAULT_REFRESH;
import static apoc.trigger.TriggerTestUtil.awaitTriggerDiscovered;
import static apoc.util.TestUtil.waitDbsAvailable;
Expand All @@ -51,14 +50,13 @@ public class TriggerRestartTest {
private GraphDatabaseService sysDb;
private DatabaseManagementService databaseManagementService;

// we cannot set via apocConfig().setProperty(apoc.trigger.refresh, ...) in `@Before`, because is too late
@ClassRule
public static final ProvideSystemProperty systemPropertyRule =
new ProvideSystemProperty("apoc.trigger.refresh", String.valueOf(TRIGGER_DEFAULT_REFRESH));

@Before
public void setUp() throws IOException {
final File conf = store_dir.newFile("apoc.conf");
try (FileWriter writer = new FileWriter(conf)) {
writer.write("apoc.trigger.refresh=" + TRIGGER_DEFAULT_REFRESH);
}
System.setProperty(SUN_JAVA_COMMAND, "config-dir=" + store_dir.getRoot().getAbsolutePath());

databaseManagementService = new TestDatabaseManagementServiceBuilder(store_dir.getRoot().toPath()).build();
db = databaseManagementService.database(GraphDatabaseSettings.DEFAULT_DATABASE_NAME);
sysDb = databaseManagementService.database(GraphDatabaseSettings.SYSTEM_DATABASE_NAME);
Expand Down

0 comments on commit 3f07d4d

Please sign in to comment.