Package io.lumify.test

Source Code of io.lumify.test.TestAccumulo

package io.lumify.test;

import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.security.Authorizations;
import org.apache.accumulo.minicluster.MiniAccumuloCluster;
import org.apache.accumulo.minicluster.MiniAccumuloConfig;
import org.securegraph.accumulo.AccumuloGraphConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

public class TestAccumulo {
    private static final Logger LOGGER = LoggerFactory.getLogger(TestAccumulo.class);
    private static final String ACCUMULO_USERNAME = "root";
    private static final String ACCUMULO_PASSWORD = "test";
    private final Properties lumifyConfig;
    private File tempDir;
    private MiniAccumuloCluster accumulo;
    private AccumuloGraphConfiguration config;
    private Connector connector;

    public TestAccumulo(Properties config) {
        this.lumifyConfig = config;
    }

    public void startup() {
        try {
            tempDir = File.createTempFile("accumulo-test", Long.toString(System.nanoTime()));
            tempDir.delete();
            tempDir.mkdir();
            LOGGER.info("writing to: " + tempDir);

            LOGGER.info("Starting accumulo");
            MiniAccumuloConfig miniAccumuloConfig = new MiniAccumuloConfig(tempDir, ACCUMULO_PASSWORD);
            accumulo = new MiniAccumuloCluster(miniAccumuloConfig);
            accumulo.start();

            setLumifyProperties();

            Map configMap = getConfig();
            config = new AccumuloGraphConfiguration(configMap);
            connector = config.createConnector();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public void shutdown() {
        LOGGER.info("shutdown");
        try {
            if (accumulo != null) {
                accumulo.stop();
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            tempDir.delete();
            config = null;
            accumulo = null;
        }
    }

    public void setAuthorizations(String user, String... auths) {
        try {
            connector.securityOperations().changeUserAuthorizations(user, new Authorizations(auths));
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    protected Map<String, Object> getConfig() {
        Map<String, Object> configMap = new HashMap<String, Object>();
        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);
        configMap.put(AccumuloGraphConfiguration.DATA_DIR, "/tmp/");
        return configMap;
    }

    private void setLumifyProperties() {
        lumifyConfig.setProperty("bigtable.accumulo.instanceName", accumulo.getInstanceName());
        lumifyConfig.setProperty("bigtable.accumulo.zookeeperServerNames", accumulo.getZooKeepers());
        lumifyConfig.setProperty("graph.zookeeperServers", accumulo.getZooKeepers());
    }
}
TOP

Related Classes of io.lumify.test.TestAccumulo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.