mirror of https://github.com/apache/jclouds.git
Added BaseComputeServiceLiveTest.testConcurrentUseOfComputeServiceToCreateNodes
This commit is contained in:
parent
fed9c22a23
commit
4e02bd5caa
|
@ -138,6 +138,8 @@ public class StubComputeServiceIntegrationTest extends BaseComputeServiceLiveTes
|
||||||
SshClient client3 = createMock(SshClient.class);
|
SshClient client3 = createMock(SshClient.class);
|
||||||
SshClient client4 = createMock(SshClient.class);
|
SshClient client4 = createMock(SshClient.class);
|
||||||
SshClient client5 = createMock(SshClient.class);
|
SshClient client5 = createMock(SshClient.class);
|
||||||
|
SshClient client6 = createMock(SshClient.class);
|
||||||
|
SshClient client7 = createMock(SshClient.class);
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
factory.create(HostAndPort.fromParts("144.175.1.1", 22),
|
factory.create(HostAndPort.fromParts("144.175.1.1", 22),
|
||||||
|
@ -211,10 +213,20 @@ public class StubComputeServiceIntegrationTest extends BaseComputeServiceLiveTes
|
||||||
factory.create(HostAndPort.fromParts("144.175.1.5", 22),
|
factory.create(HostAndPort.fromParts("144.175.1.5", 22),
|
||||||
LoginCredentials.builder().user("root").password("password5").build())).andReturn(client5)
|
LoginCredentials.builder().user("root").password("password5").build())).andReturn(client5)
|
||||||
.times(2);
|
.times(2);
|
||||||
|
expect(
|
||||||
|
factory.create(HostAndPort.fromParts("144.175.1.6", 22),
|
||||||
|
LoginCredentials.builder().user("root").password("password6").build())).andReturn(client6)
|
||||||
|
.times(2);
|
||||||
|
expect(
|
||||||
|
factory.create(HostAndPort.fromParts("144.175.1.7", 22),
|
||||||
|
LoginCredentials.builder().user("root").password("password7").build())).andReturn(client7)
|
||||||
|
.times(2);
|
||||||
|
|
||||||
runScriptAndInstallSsh(client3, "bootstrap", 3);
|
runScriptAndInstallSsh(client3, "bootstrap", 3);
|
||||||
runScriptAndInstallSsh(client4, "bootstrap", 4);
|
runScriptAndInstallSsh(client4, "bootstrap", 4);
|
||||||
runScriptAndInstallSsh(client5, "bootstrap", 5);
|
runScriptAndInstallSsh(client5, "bootstrap", 5);
|
||||||
|
runScriptAndInstallSsh(client6, "bootstrap", 6);
|
||||||
|
runScriptAndInstallSsh(client7, "bootstrap", 7);
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
factory.create(eq(HostAndPort.fromParts("144.175.1.1", 22)),
|
factory.create(eq(HostAndPort.fromParts("144.175.1.1", 22)),
|
||||||
|
@ -236,11 +248,21 @@ public class StubComputeServiceIntegrationTest extends BaseComputeServiceLiveTes
|
||||||
factory.create(eq(HostAndPort.fromParts("144.175.1.5", 22)),
|
factory.create(eq(HostAndPort.fromParts("144.175.1.5", 22)),
|
||||||
eq(LoginCredentials.builder().user("defaultAdminUsername").privateKey(Pems.PRIVATE_PKCS1_MARKER).build())))
|
eq(LoginCredentials.builder().user("defaultAdminUsername").privateKey(Pems.PRIVATE_PKCS1_MARKER).build())))
|
||||||
.andReturn(client5);
|
.andReturn(client5);
|
||||||
|
expect(
|
||||||
|
factory.create(eq(HostAndPort.fromParts("144.175.1.6", 22)),
|
||||||
|
eq(LoginCredentials.builder().user("defaultAdminUsername").privateKey(Pems.PRIVATE_PKCS1_MARKER).build())))
|
||||||
|
.andReturn(client6);
|
||||||
|
expect(
|
||||||
|
factory.create(eq(HostAndPort.fromParts("144.175.1.7", 22)),
|
||||||
|
eq(LoginCredentials.builder().user("defaultAdminUsername").privateKey(Pems.PRIVATE_PKCS1_MARKER).build())))
|
||||||
|
.andReturn(client7);
|
||||||
|
|
||||||
helloAndJava(client2);
|
helloAndJava(client2);
|
||||||
helloAndJava(client3);
|
helloAndJava(client3);
|
||||||
helloAndJava(client4);
|
helloAndJava(client4);
|
||||||
helloAndJava(client5);
|
helloAndJava(client5);
|
||||||
|
helloAndJava(client6);
|
||||||
|
helloAndJava(client7);
|
||||||
|
|
||||||
replay(factory);
|
replay(factory);
|
||||||
replay(client1);
|
replay(client1);
|
||||||
|
@ -251,6 +273,8 @@ public class StubComputeServiceIntegrationTest extends BaseComputeServiceLiveTes
|
||||||
replay(client3);
|
replay(client3);
|
||||||
replay(client4);
|
replay(client4);
|
||||||
replay(client5);
|
replay(client5);
|
||||||
|
replay(client6);
|
||||||
|
replay(client7);
|
||||||
|
|
||||||
bind(SshClient.Factory.class).toInstance(factory);
|
bind(SshClient.Factory.class).toInstance(factory);
|
||||||
}
|
}
|
||||||
|
@ -472,6 +496,11 @@ public class StubComputeServiceIntegrationTest extends BaseComputeServiceLiveTes
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(enabled = true, dependsOnMethods = "testTemplateMatch")
|
@Test(enabled = true, dependsOnMethods = "testTemplateMatch")
|
||||||
|
public void testConcurrentUseOfComputeServiceToCreateNodes() throws Exception {
|
||||||
|
super.testConcurrentUseOfComputeServiceToCreateNodes();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(enabled = true, dependsOnMethods = "testConcurrentUseOfComputeServiceToCreateNodes")
|
||||||
public void testCreateTwoNodesWithRunScript() throws Exception {
|
public void testCreateTwoNodesWithRunScript() throws Exception {
|
||||||
super.testCreateTwoNodesWithRunScript();
|
super.testCreateTwoNodesWithRunScript();
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,9 @@ import static org.testng.Assert.assertEquals;
|
||||||
import static org.testng.Assert.assertNotNull;
|
import static org.testng.Assert.assertNotNull;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
@ -105,7 +107,10 @@ import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
import com.google.common.net.HostAndPort;
|
import com.google.common.net.HostAndPort;
|
||||||
|
import com.google.common.util.concurrent.Futures;
|
||||||
import com.google.common.util.concurrent.ListenableFuture;
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
|
import com.google.common.util.concurrent.ListeningExecutorService;
|
||||||
|
import com.google.common.util.concurrent.MoreExecutors;
|
||||||
import com.google.inject.Module;
|
import com.google.inject.Module;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -323,7 +328,7 @@ public abstract class BaseComputeServiceLiveTest extends BaseComputeServiceConte
|
||||||
ComputeTestUtils.checkHttpGet(view.utils().http(), node, 8080);
|
ComputeTestUtils.checkHttpGet(view.utils().http(), node, 8080);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(enabled = true, dependsOnMethods = "testCompareSizes")
|
@Test(enabled = true, dependsOnMethods = "testConcurrentUseOfComputeServiceToCreateNodes")
|
||||||
public void testCreateTwoNodesWithRunScript() throws Exception {
|
public void testCreateTwoNodesWithRunScript() throws Exception {
|
||||||
try {
|
try {
|
||||||
client.destroyNodesMatching(inGroup(group));
|
client.destroyNodesMatching(inGroup(group));
|
||||||
|
@ -412,6 +417,39 @@ public abstract class BaseComputeServiceLiveTest extends BaseComputeServiceConte
|
||||||
this.nodes.add(node);
|
this.nodes.add(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(enabled = true, dependsOnMethods = "testCompareSizes")
|
||||||
|
public void testConcurrentUseOfComputeServiceToCreateNodes() throws Exception {
|
||||||
|
final long timeoutMs = 20*60*1000;
|
||||||
|
List<String> groups = new ArrayList<String>();
|
||||||
|
List<ListenableFuture<NodeMetadata>> futures = new ArrayList<ListenableFuture<NodeMetadata>>();
|
||||||
|
ListeningExecutorService executor = MoreExecutors.listeningDecorator(context.utils().userExecutor());
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (int i = 0; i < 2; i++) {
|
||||||
|
final int groupNum = i;
|
||||||
|
final String group = "groupconcurrent"+groupNum;
|
||||||
|
groups.add(group);
|
||||||
|
|
||||||
|
ListenableFuture<NodeMetadata> future = executor.submit(new Callable<NodeMetadata>() {
|
||||||
|
public NodeMetadata call() throws Exception {
|
||||||
|
NodeMetadata node = getOnlyElement(client.createNodesInGroup(group, 1,
|
||||||
|
inboundPorts(22, 8080).blockOnPort(22, 300+groupNum)));
|
||||||
|
getAnonymousLogger().info("Started node "+node.getId());
|
||||||
|
return node;
|
||||||
|
}});
|
||||||
|
futures.add(future);
|
||||||
|
}
|
||||||
|
|
||||||
|
ListenableFuture<List<NodeMetadata>> compoundFuture = Futures.allAsList(futures);
|
||||||
|
compoundFuture.get(timeoutMs, TimeUnit.MILLISECONDS);
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
for (String group : groups) {
|
||||||
|
client.destroyNodesMatching(inGroup(group));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test(enabled = true, dependsOnMethods = "testCreateAnotherNodeWithANewContextToEnsureSharedMemIsntRequired")
|
@Test(enabled = true, dependsOnMethods = "testCreateAnotherNodeWithANewContextToEnsureSharedMemIsntRequired")
|
||||||
public void testCredentialsCache() throws Exception {
|
public void testCredentialsCache() throws Exception {
|
||||||
initializeContext();
|
initializeContext();
|
||||||
|
|
Loading…
Reference in New Issue