All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.intropro.prairie.unit.hbase.HBaseUnit Maven / Gradle / Ivy

The newest version!
package com.intropro.prairie.unit.hbase;

import com.intropro.prairie.unit.common.PortProvider;
import com.intropro.prairie.unit.common.annotation.PrairieUnit;
import com.intropro.prairie.unit.common.exception.DestroyUnitException;
import com.intropro.prairie.unit.common.exception.InitUnitException;
import com.intropro.prairie.unit.hadoop.HadoopUnit;
import com.intropro.prairie.unit.zookeeper.ZookeeperUnit;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HConstants;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.io.IOException;

/**
 * Created by presidentio on 4/2/16.
 */
public class HBaseUnit extends HadoopUnit {

    private static final Logger LOGGER = LogManager.getLogger(HBaseUnit.class);

    @PrairieUnit
    private ZookeeperUnit zookeeperUnit;

    private HBaseTestingUtility hBaseTestingUtility;

    public HBaseUnit() {
        super("hbase");
    }

    @Override
    protected Configuration gatherConfigs() {
        System.setProperty("test.build.data.basedirectory", getTmpDir().resolve("data").toString());
        Configuration conf = HBaseConfiguration.create(super.gatherConfigs());
        conf.addResource("hbase-site.prairie.xml");
        conf.setInt(HConstants.MASTER_PORT, PortProvider.nextPort());
        conf.setInt(HConstants.MASTER_INFO_PORT, PortProvider.nextPort());
        conf.setInt(HConstants.REGIONSERVER_PORT, PortProvider.nextPort());
        conf.setInt(HConstants.REGIONSERVER_INFO_PORT, PortProvider.nextPort());
        conf.set(HConstants.HBASE_DIR, getTmpDir().resolve("root").toString());
        conf.set(HConstants.ZOOKEEPER_QUORUM, zookeeperUnit.getHost() + ":" + zookeeperUnit.getPort());
        conf.set(HConstants.ZK_CFG_PROPERTY_PREFIX + HConstants.CLIENT_PORT_STR, "" + zookeeperUnit.getPort());
        return conf;
    }

    @Override
    public Configuration getConfig() {
        return hBaseTestingUtility.getConfiguration();
    }

    @Override
    protected void destroy() throws DestroyUnitException {
        try {
            hBaseTestingUtility.shutdownMiniHBaseCluster();
            FileSystem.get(hBaseTestingUtility.getConfiguration()).delete(hBaseTestingUtility.getDefaultRootDirPath(),
                    true);
        } catch (IOException e) {
            throw new DestroyUnitException("Failed to shutdown hbase mini cluster", e);
        }
    }

    @Override
    protected void init() throws InitUnitException {
        hBaseTestingUtility = new HBaseTestingUtility(gatherConfigs());
        try {
            FileSystem.get(hBaseTestingUtility.getConfiguration()).delete(hBaseTestingUtility.getDefaultRootDirPath(),
                    true);
        } catch (IOException e) {
            LOGGER.error(e);
        }
        try {
            hBaseTestingUtility.startMiniHBaseCluster(1, 1);
        } catch (Exception e) {
            throw new InitUnitException("Failed to start hbase mini cluster", e);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy