@Test
public void testMultiDeployFiring() throws Throwable {
// Same as test deploy firing, but with more than one DNode and different deploy actions
SploutConfiguration config1 = SploutConfiguration.getTestConfig();
DNode dnode1 = TestUtils.getTestDNode(config1, new IDNodeHandler() {
@Override
public void init(SploutConfiguration config) throws Exception {
}
@Override
public String sqlQuery(String tablespace, long version, int partition, String query)
throws DNodeException {
return null;
}
@Override
public String deploy(List<DeployAction> deployActions, long distributedBarrier)
throws DNodeException {
/*
* DNode1 asserts
*/
Assert.assertEquals(2, deployActions.size());
Assert.assertEquals("hdfs://foo/bar1/0.db", deployActions.get(0).getDataURI());
Assert.assertEquals("hdfs://foo/bar2/0.db", deployActions.get(1).getDataURI());
Assert.assertEquals("partition1", deployActions.get(0).getTablespace());
Assert.assertEquals("partition2", deployActions.get(1).getTablespace());
return "FOO";
}
@Override
public String rollback(List<RollbackAction> rollbackActions, String ignoreMe)
throws DNodeException {
return null;
}
@Override
public String status() throws DNodeException {
return null;
}
@Override
public void stop() throws Exception {
}
@Override
public void giveGreenLigth() {
}
@Override
public String abortDeploy(long version) throws DNodeException {
return null;
}
@Override
public String deleteOldVersions(List<com.splout.db.thrift.TablespaceVersion> versions)
throws DNodeException {
return null;
}
@Override
public String testCommand(String command) throws DNodeException {
// TODO Auto-generated method stub
return null;
}
}, "dnode-" + this.getClass().getName() + "-3");
SploutConfiguration config2 = SploutConfiguration.getTestConfig();
DNode dnode2 = TestUtils.getTestDNode(config2, new IDNodeHandler() {
@Override
public void init(SploutConfiguration config) throws Exception {
}
@Override
public String sqlQuery(String tablespace, long version, int partition, String query)
throws DNodeException {
return null;
}
@Override
public String deploy(List<DeployAction> deployActions, long distributedBarrier)
throws DNodeException {
/*
* DNode2 asserts
*/
Assert.assertEquals(1, deployActions.size());
Assert.assertEquals("hdfs://foo/bar1/0.db", deployActions.get(0).getDataURI());
Assert.assertEquals("partition1", deployActions.get(0).getTablespace());
return "FOO";
}
@Override
public String rollback(List<RollbackAction> rollbackActions, String ignoreMe)
throws DNodeException {
return null;
}
@Override
public String status() throws DNodeException {
return null;
}
@Override
public void stop() throws Exception {
}
@Override
public void giveGreenLigth() {
}
@Override
public String abortDeploy(long version) throws DNodeException {
return null;
}
@Override
public String deleteOldVersions(List<com.splout.db.thrift.TablespaceVersion> versions)
throws DNodeException {
return null;
}
@Override
public String testCommand(String command) throws DNodeException {
// TODO Auto-generated method stub
return null;
}
}, "dnode-" + this.getClass().getName() + "-4");
QNodeHandler handler = new QNodeHandler();
try {
handler.init(config1);
ReplicationEntry repEntry1 = new ReplicationEntry(0, dnode1.getAddress(), dnode2.getAddress());
ReplicationEntry repEntry2 = new ReplicationEntry(0, dnode1.getAddress());
DeployRequest deployRequest1 = new DeployRequest();
deployRequest1.setTablespace("partition1");
deployRequest1.setPartitionMap(PartitionMap.oneShardOpenedMap().getPartitionEntries());
deployRequest1.setReplicationMap(Arrays.asList(repEntry1));
deployRequest1.setData_uri("hdfs://foo/bar1");
DeployRequest deployRequest2 = new DeployRequest();
deployRequest2.setTablespace("partition2");
deployRequest2.setPartitionMap(PartitionMap.oneShardOpenedMap().getPartitionEntries());
deployRequest2.setReplicationMap(Arrays.asList(repEntry2));
deployRequest2.setData_uri("hdfs://foo/bar2");
List<DeployRequest> l = new ArrayList<DeployRequest>();
l.add(deployRequest1);
l.add(deployRequest2);
handler.deploy(l);
} finally {
handler.close();
dnode1.stop();
dnode2.stop();
Hazelcast.shutdownAll();
}
}