@Override public Collection<Injectable<?>> start(GraphDatabaseService graphDatabaseService, Configuration config) { EmbeddedDriver embeddedDriver = new EmbeddedDriver(graphDatabaseService); sessionFactory = createSessionFactory(embeddedDriver); return Arrays.asList(new OgmInjectable<>(sessionFactory, SessionFactory.class)); }
@Override public Collection<Injectable<?>> start(GraphDatabaseService graphDatabaseService, Configuration config) { EmbeddedDriver embeddedDriver = new EmbeddedDriver(graphDatabaseService, null); sessionFactory = createSessionFactory(embeddedDriver); return Arrays.asList(new OgmInjectable<>(sessionFactory, SessionFactory.class)); }
@Test public void shouldBeAbleToHaveMultipleInstances() { Configuration configuration = new Configuration.Builder().build(); try ( EmbeddedDriver driver1 = new EmbeddedDriver(); EmbeddedDriver driver2 = new EmbeddedDriver()) { driver1.configure(configuration); driver2.configure(configuration); GraphDatabaseService service1 = driver1.unwrap(GraphDatabaseService.class); GraphDatabaseService service2 = driver2.unwrap(GraphDatabaseService.class); assertThat(service1).isNotNull(); assertThat(service2).isNotNull(); // instances should be different assertThat(service1 == service2).isFalse(); // underlying file stores should be different assertThat( service1.toString().equals(service2.toString())) .isFalse(); } }
@Test // GH-169 public void shouldCreateDirectoryIfMissing() throws IOException { final String EMBEDDED_DIR = "/var/tmp/ogmEmbeddedDir"; Path path = Paths.get(EMBEDDED_DIR); if (Files.exists(path)) { FileUtils.deleteDirectory(path); } Configuration configuration = new Configuration.Builder().uri("file://" + EMBEDDED_DIR).build(); try (EmbeddedDriver driver = new EmbeddedDriver()) { driver.configure(configuration); assertThat(configuration.getURI()).isEqualTo("file://" + EMBEDDED_DIR); assertThat(driver.unwrap(GraphDatabaseService.class)).isNotNull(); assertThat(Files.exists(path)).isTrue(); } FileUtils.deleteDirectory(path); }
@Test public void shouldLoadHaBasedOnNeo4ConfFile() { assumeTrue(canRunHATests()); try (EmbeddedDriver driver = new EmbeddedDriver()) { driver.configure(new Configuration.Builder().neo4jConfLocation("classpath:custom-neo4j-ha.conf").build()); GraphDatabaseService databaseService = driver.unwrap(GraphDatabaseService.class); assertThat(databaseService.getClass().getSimpleName()).isEqualTo(NAME_OF_HA_DATABASE_CLASS); } }
@Test public void shouldCreateImpermanentInstanceWhenNoURI() { Configuration configuration = new Configuration.Builder().build(); try (EmbeddedDriver driver = new EmbeddedDriver()) { driver.configure(configuration); assertThat(configuration.getURI()).isNull(); assertThat(driver.unwrap(GraphDatabaseService.class)).isNotNull(); } }
@Test public void shouldWriteAndReadFromProvidedDatabase() throws Exception { GraphDatabaseService impermanentDatabase = new TestGraphDatabaseFactory().newImpermanentDatabase(); try (EmbeddedDriver driver = new EmbeddedDriver(impermanentDatabase, null)) { GraphDatabaseService databaseService = driver.unwrap(GraphDatabaseService.class); try (Transaction tx = databaseService.beginTx()) { databaseService.execute("CREATE (n: Node {name: 'node'})"); Result r = databaseService.execute("MATCH (n) RETURN n"); assertThat(r.hasNext()).isTrue(); tx.success(); } } }
@Test public void shouldWriteAndRead() { try (EmbeddedDriver driver = new EmbeddedDriver()) { driver.configure(new Configuration.Builder().build()); GraphDatabaseService databaseService = driver.unwrap(GraphDatabaseService.class); try (Transaction tx = databaseService.beginTx()) { databaseService.execute("CREATE (n: Node {name: 'node'})"); Result r = databaseService.execute("MATCH (n) RETURN n"); assertThat(r.hasNext()).isTrue(); tx.success(); } } }
@BeforeClass public static void initSessionFactory() { Driver driver = new EmbeddedDriver(serverControls.graph(), new Configuration.Builder().build()); sessionFactory = new SessionFactory(driver, DOMAIN_PACKAGE); }
@Test public void shouldHandleCustomConfFiles() { try (EmbeddedDriver driver = new EmbeddedDriver()) { driver.configure(new Configuration.Builder().neo4jConfLocation("classpath:custom-neo4j.conf").build()); GraphDatabaseService databaseService = driver.unwrap(GraphDatabaseService.class); assertReadOnly(databaseService); } }
@Test public void impermanentInstancesShouldNotShareTheSameDatabase() { Configuration configuration = new Configuration.Builder().build(); try (EmbeddedDriver driver1 = new EmbeddedDriver(); EmbeddedDriver driver2 = new EmbeddedDriver() ) { driver1.configure(configuration); driver2.configure(configuration); GraphDatabaseService db1 = driver1.unwrap(GraphDatabaseService.class); GraphDatabaseService db2 = driver2.unwrap(GraphDatabaseService.class); try (Transaction tx = db1.beginTx()) { db1.execute("CREATE (n: Node {name: 'node'})"); tx.success(); } try (Transaction tx1 = db1.beginTx(); Transaction tx2 = db2.beginTx()) { Result r1 = db1.execute("MATCH (n) RETURN n"); Result r2 = db2.execute("MATCH (n) RETURN n"); assertThat(r1.hasNext()).isTrue(); assertThat(r2.hasNext()).isFalse(); tx1.success(); tx2.success(); } } catch (Exception e) { fail("Should not have thrown exception"); } }
@Test public void shouldHandleCustomConfFilesFromOgmProperties() { try (EmbeddedDriver driver = new EmbeddedDriver()) { driver.configure( new Configuration.Builder(new ClasspathConfigurationSource("ogm-pointing-to-custom-conf.properties")) .build()); GraphDatabaseService databaseService = driver.unwrap(GraphDatabaseService.class); assertReadOnly(databaseService); } }