/*
* Copyright (c) 2002-2017 "Neo Technology,"
* Network Engine for Objects in Lund AB [http://neotechnology.com]
*
* This product is licensed to you under the Apache License, Version 2.0 (the "License").
* You may not use this product except in compliance with the License.
*
* This product may include a number of subcomponents with
* separate copyright notices and license terms. Your use of the source
* code for these subcomponents is subject to the terms and
* conditions of the subcomponent's license, as noted in the LICENSE file.
*/
package org.neo4j.ogm.testutil;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import org.junit.BeforeClass;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.ogm.config.ClasspathConfigurationSource;
import org.neo4j.ogm.config.Configuration;
import org.neo4j.ogm.driver.DriverManager;
import org.neo4j.ogm.drivers.bolt.driver.BoltDriver;
import org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver;
import org.neo4j.ogm.drivers.http.driver.HttpDriver;
/**
* @author Vince Bickers
* @author Mark Angrish
*/
public class MultiDriverTestClass {
private static TestServer testServer;
private static File graphStore;
private static Configuration.Builder baseConfiguration = new Configuration.Builder(new ClasspathConfigurationSource("ogm.properties"));
static {
testServer = new TestServer(true, true, 5);
graphStore = createTemporaryGraphStore();
}
@BeforeClass
public static void setupMultiDriverTestEnvironment() {
if (baseConfiguration.build().getDriverClassName().equals(HttpDriver.class.getCanonicalName())) {
baseConfiguration.uri(testServer.getUri()).credentials(testServer.getUsername(), testServer.getPassword());
} else if (baseConfiguration.build().getDriverClassName().equals(BoltDriver.class.getCanonicalName())) {
baseConfiguration.uri(testServer.getUri()).credentials(testServer.getUsername(), testServer.getPassword());
} else {
baseConfiguration.uri(graphStore.toURI().toString()).build();
}
}
public static Configuration.Builder getBaseConfiguration() {
return Configuration.Builder.copy(baseConfiguration);
}
public static GraphDatabaseService getGraphDatabaseService() {
// if using an embedded config, return the db from the driver
if (baseConfiguration.build().getURI().startsWith("file")) {
return ((EmbeddedDriver) DriverManager.getDriver()).getGraphDatabaseService();
}
// else (bolt, http), return just a test server (not really used except for indices ?)
return testServer.getGraphDatabaseService();
}
private static File createTemporaryGraphStore() {
try {
Path path = Files.createTempDirectory("graph.db");
File f = path.toFile();
f.deleteOnExit();
return f;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}