package org.vertexium.accumulo.blueprints.util; import org.apache.accumulo.minicluster.MiniAccumuloCluster; import org.apache.accumulo.minicluster.MiniAccumuloConfig; import org.apache.commons.io.FileUtils; import org.vertexium.accumulo.AccumuloGraphConfiguration; import org.vertexium.util.VertexiumLogger; import org.vertexium.util.VertexiumLoggerFactory; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class TestAccumuloCluster { private static final VertexiumLogger LOGGER = VertexiumLoggerFactory.getLogger(TestAccumuloCluster.class); private static final String ACCUMULO_USERNAME = "root"; private static final String ACCUMULO_PASSWORD = "test"; private static File tempDir; private static AccumuloGraphConfiguration config; private static MiniAccumuloCluster accumulo; public static AccumuloGraphConfiguration getConfig() { return config; } public static void start() throws IOException, InterruptedException { if (accumulo != null) { return; } tempDir = File.createTempFile("blueprints-accumulo-temp", Long.toString(System.nanoTime())); tempDir.delete(); tempDir.mkdir(); LOGGER.info("writing to: %s", tempDir); MiniAccumuloConfig miniAccumuloConfig = new MiniAccumuloConfig(tempDir, ACCUMULO_PASSWORD); miniAccumuloConfig.setZooKeeperStartupTime(60000); accumulo = new MiniAccumuloCluster(miniAccumuloConfig); accumulo.start(); Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { try { TestAccumuloCluster.stop(); } catch (Exception e) { System.out.println("Failed to stop Accumulo test cluster"); } } }); Map configMap = new HashMap(); configMap.put(AccumuloGraphConfiguration.ZOOKEEPER_SERVERS, accumulo.getZooKeepers()); configMap.put(AccumuloGraphConfiguration.ACCUMULO_INSTANCE_NAME, accumulo.getInstanceName()); configMap.put(AccumuloGraphConfiguration.ACCUMULO_USERNAME, ACCUMULO_USERNAME); configMap.put(AccumuloGraphConfiguration.ACCUMULO_PASSWORD, ACCUMULO_PASSWORD); configMap.put(AccumuloGraphConfiguration.AUTO_FLUSH, true); config = new AccumuloGraphConfiguration(configMap); } private static void stop() throws IOException, InterruptedException { if (accumulo != null) { accumulo.stop(); accumulo = null; } FileUtils.deleteDirectory(tempDir); } }