public void testAddAndRemoveWithVersions() throws Exception {
System.err.println(CommandSupport.executeCommand("fabric:create --force --clean -n"));
ModuleContext moduleContext = RuntimeLocator.getRequiredRuntime().getModuleContext();
ServiceProxy<FabricService> fabricProxy = ServiceProxy.createServiceProxy(moduleContext, FabricService.class);
try {
FabricService fabricService = fabricProxy.getService();
System.out.println(CommandSupport.executeCommand("fabric:version-create --parent 1.0 1.1"));
System.out.println(CommandSupport.executeCommand("fabric:container-upgrade --all 1.1"));
Set<Container> containers = ContainerBuilder.create(2).withName("basic_ens_a").withProfiles("default").assertProvisioningResult().build(fabricService);
try {
Deque<Container> containerQueue = new LinkedList<Container>(containers);
Deque<Container> addedContainers = new LinkedList<Container>();
for (int e = 0; e < 3 && containerQueue.size() >= 2 && containerQueue.size() % 2 == 0; e++) {
Container cnt1 = containerQueue.removeFirst();
Container cnt2 = containerQueue.removeFirst();
addedContainers.add(cnt1);
addedContainers.add(cnt2);
EnsembleSupport.addToEnsemble(fabricService, cnt1, cnt2);
System.err.println(CommandSupport.executeCommand("config:proplist --pid io.fabric8.zookeeper"));
System.err.println(CommandSupport.executeCommand("fabric:container-list"));
System.err.println(CommandSupport.executeCommand("fabric:ensemble-list"));
ZooKeeperClusterService zooKeeperClusterService = ServiceLocator.awaitService(ZooKeeperClusterService.class);
Assert.assertNotNull(zooKeeperClusterService);
List<String> ensembleContainersResult = zooKeeperClusterService.getEnsembleContainers();
Assert.assertTrue(ensembleContainersResult.contains(cnt1.getId()));
Assert.assertTrue(ensembleContainersResult.contains(cnt2.getId()));
ProvisionSupport.provisioningSuccess(Arrays.asList(fabricService.getContainers()), ProvisionSupport.PROVISION_TIMEOUT);
}
System.out.println(CommandSupport.executeCommand("fabric:version-create"));
System.out.println(CommandSupport.executeCommand("fabric:container-upgrade --all 1.2"));
for (int e = 0; e < 3 && addedContainers.size() >= 2 && addedContainers.size() % 2 == 0; e++) {
Container cnt1 = addedContainers.removeFirst();
Container cnt2 = addedContainers.removeFirst();
containerQueue.add(cnt1);
containerQueue.add(cnt2);
EnsembleSupport.removeFromEnsemble(fabricService, cnt1, cnt2);
System.err.println(CommandSupport.executeCommand("config:proplist --pid io.fabric8.zookeeper"));
System.err.println(CommandSupport.executeCommand("fabric:container-list"));
System.err.println(CommandSupport.executeCommand("fabric:ensemble-list"));
ZooKeeperClusterService zooKeeperClusterService = ServiceLocator.awaitService(ZooKeeperClusterService.class);
Assert.assertNotNull(zooKeeperClusterService);
List<String> ensembleContainersResult = zooKeeperClusterService.getEnsembleContainers();
Assert.assertFalse(ensembleContainersResult.contains(cnt1.getId()));
Assert.assertFalse(ensembleContainersResult.contains(cnt2.getId()));
ProvisionSupport.provisioningSuccess(Arrays.asList(fabricService.getContainers()), ProvisionSupport.PROVISION_TIMEOUT);
}
} finally {
ContainerBuilder.stop(fabricService, containers);
}
} finally {