package org.vertexium.accumulo.blueprints.util;
import com.tinkerpop.blueprints.Graph;
import com.tinkerpop.blueprints.TestSuite;
import com.tinkerpop.blueprints.impls.GraphTest;
import org.apache.accumulo.core.client.Connector;
import org.junit.Ignore;
import org.vertexium.GraphConfiguration;
import org.vertexium.accumulo.AccumuloGraph;
import org.vertexium.accumulo.AccumuloGraphConfiguration;
import org.vertexium.accumulo.blueprints.AccumuloAuthorizationsProvider;
import org.vertexium.accumulo.blueprints.AccumuloVertexiumBlueprintsGraph;
import org.vertexium.blueprints.AuthorizationsProvider;
import org.vertexium.blueprints.DefaultVisibilityProvider;
import org.vertexium.blueprints.VisibilityProvider;
import java.util.HashMap;
@Ignore
public class AccumuloBlueprintsGraphTestHelper extends GraphTest {
private final AccumuloVertexiumBlueprintsGraph defaultGraph;
private final VisibilityProvider visibilityProvider = new DefaultVisibilityProvider(new HashMap());
private final AuthorizationsProvider authorizationsProvider = new AccumuloAuthorizationsProvider(new HashMap());
public AccumuloBlueprintsGraphTestHelper() {
try {
this.ensureAccumuloIsStarted();
AccumuloGraphConfiguration config = this.getGraphConfig(GraphConfiguration.DEFAULT_TABLE_NAME_PREFIX);
this.defaultGraph = new AccumuloVertexiumBlueprintsGraph(AccumuloGraph.create(config), visibilityProvider, authorizationsProvider);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
@Override
public Graph generateGraph() {
return this.defaultGraph;
}
@Override
public Graph generateGraph(String graphDirectoryName) {
try {
AccumuloGraphConfiguration config = this.getGraphConfig(graphDirectoryName);
return new AccumuloVertexiumBlueprintsGraph(AccumuloGraph.create(config), visibilityProvider, authorizationsProvider);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
@Override
public void doTestSuite(TestSuite testSuite) throws Exception {
throw new RuntimeException("not implemented");
}
public void setUp() {
dropGraph(GraphConfiguration.DEFAULT_TABLE_NAME_PREFIX);
}
@Override
public void dropGraph(String graphDirectoryName) {
try {
Connector connector = getConnector(graphDirectoryName);
if (connector.tableOperations().exists(graphDirectoryName + "_d")) {
connector.tableOperations().delete(graphDirectoryName + "_d");
}
if (connector.tableOperations().exists(graphDirectoryName + "_v")) {
connector.tableOperations().delete(graphDirectoryName + "_v");
}
if (connector.tableOperations().exists(graphDirectoryName + "_e")) {
connector.tableOperations().delete(graphDirectoryName + "_e");
}
connector.tableOperations().create(graphDirectoryName + "_d");
connector.tableOperations().create(graphDirectoryName + "_v");
connector.tableOperations().create(graphDirectoryName + "_e");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public Connector getConnector(String graphDirectoryName) {
try {
return this.getGraphConfig(graphDirectoryName).createConnector();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private void ensureAccumuloIsStarted() {
try {
TestAccumuloCluster.start();
} catch (Exception e) {
throw new RuntimeException("Failed to start Accumulo mini cluster", e);
}
}
private AccumuloGraphConfiguration getGraphConfig(String tableName) {
AccumuloGraphConfiguration config = TestAccumuloCluster.getConfig();
config.set(GraphConfiguration.DEFAULT_TABLE_NAME_PREFIX, tableName);
return config;
}
}