package com.opower.updater;
import com.opower.updater.admin.LayoutUpdateTable;
import org.apache.hadoop.hbase.HConstants;
import org.junit.Test;
import org.kiji.schema.Kiji;
import org.kiji.schema.KijiNotInstalledException;
import org.kiji.schema.KijiURI;
import org.kiji.schema.tools.BaseTool;
import java.io.IOException;
import static junit.framework.Assert.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
/**
* Tests for {@link com.opower.updater.UpdaterInstallTool}.
*
* @author felix.trepanier
*/
public class TestUpdaterInstallTool extends UpdaterToolTest {
@Test
public void testCreateInstanceIfItDoesNotExist() throws Exception {
// check that the instance does not exist
KijiURI kijiURI = getTestKijiURI();
try {
Kiji.Factory.open(kijiURI);
fail("Instance should not exist at this point.");
}
catch (KijiNotInstalledException e) {
// expected
}
assertEquals(BaseTool.SUCCESS, runTool(new UpdaterInstallTool(fakeUpdaterLocker), "--kiji=" + getTestKijiURI()));
// open the kiji instance, now this should not throw an exception
Kiji kijiInstance = Kiji.Factory.open(kijiURI);
assertTrue(kijiInstance.getMetaTable().tableExists(LayoutUpdateTable.TABLE_NAME));
kijiInstance.release();
}
private KijiURI getTestKijiURI() throws IOException {
String[] zookeepers = getConf().get(HConstants.ZOOKEEPER_QUORUM).split(",");
return KijiURI.newBuilder()
.withZookeeperQuorum(zookeepers)
.withZookeeperClientPort(getKiji().getURI().getZookeeperClientPort())
.withInstanceName("test").build();
}
}