diff --git a/apis/nova/src/test/java/org/jclouds/openstack/nova/live/PropertyHelper.java b/apis/nova/src/test/java/org/jclouds/openstack/nova/live/PropertyHelper.java index 3f65a987e9..4d5943fab4 100644 --- a/apis/nova/src/test/java/org/jclouds/openstack/nova/live/PropertyHelper.java +++ b/apis/nova/src/test/java/org/jclouds/openstack/nova/live/PropertyHelper.java @@ -18,7 +18,6 @@ */ package org.jclouds.openstack.nova.live; -import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Map; @@ -37,30 +36,23 @@ public class PropertyHelper { private static String provider = "nova"; - public static void overridePropertyFromSystemProperty(final Properties properties, String propertyName) { - if ((System.getProperty(propertyName) != null) && !System.getProperty(propertyName).equals("${" + propertyName + "}")) - properties.setProperty(propertyName, System.getProperty(propertyName)); - } - - public static Map setupKeyPair(Properties properties) throws FileNotFoundException, IOException { - return ImmutableMap.of( - "private", Resources.toString(Resources.getResource(properties.getProperty("test.ssh.keyfile.private")), Charsets.UTF_8), - "public", Resources.toString(Resources.getResource(properties.getProperty("test.ssh.keyfile.public")), Charsets.UTF_8)); + public static Map setupKeyPair(Properties properties) throws IOException { + return ImmutableMap.of( + "private", Resources.toString(Resources.getResource(PropertyHelper.class, properties.getProperty("test.ssh.keyfile.private")), Charsets.UTF_8), + "public", Resources.toString(Resources.getResource(PropertyHelper.class, properties.getProperty("test.ssh.keyfile.public")), Charsets.UTF_8)); } public static Properties setupProperties(Class clazz) throws IOException { Properties properties = new Properties(); - InputStream propertiesStream = clazz.getResourceAsStream("/test.properties"); - if (propertiesStream != null) + String propertiesPath = System.getProperty("test.properties"); + if (propertiesPath != null) { + InputStream propertiesStream = clazz.getResourceAsStream(propertiesPath); properties.load(propertiesStream); - overridePropertyFromSystemProperty(properties, "test." + provider + ".endpoint"); - overridePropertyFromSystemProperty(properties, "test." + provider + ".apiversion"); - overridePropertyFromSystemProperty(properties, "test." + provider + ".identity"); - overridePropertyFromSystemProperty(properties, "test." + provider + ".credential"); - overridePropertyFromSystemProperty(properties, "test.ssh.keyfile.private"); - overridePropertyFromSystemProperty(properties, "test.ssh.keyfile.public"); - overridePropertyFromSystemProperty(properties, "test.initializer"); + } + + properties.putAll(System.getProperties()); + return properties; } diff --git a/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/ComputeBase.java b/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/ComputeBase.java index ee08c37008..f2137b8157 100644 --- a/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/ComputeBase.java +++ b/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/ComputeBase.java @@ -38,6 +38,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import com.google.common.collect.Iterables; import org.jclouds.compute.ComputeService; import org.jclouds.compute.ComputeServiceContext; import org.jclouds.compute.ComputeServiceContextFactory; @@ -75,6 +76,7 @@ public class ComputeBase { protected Map keyPair; protected Properties overrides; + protected String testImageId; @BeforeTest public void before() throws InterruptedException, ExecutionException, TimeoutException, IOException { @@ -82,6 +84,7 @@ public class ComputeBase { setupOverrides(properties); overrides = properties; keyPair = setupKeyPair(properties); + testImageId = properties.getProperty("test.nova.image.id"); initializeContextAndComputeService(properties); } @@ -97,7 +100,7 @@ public class ComputeBase { } protected TemplateBuilder getDefaultTemplateBuilder() { - return computeService.templateBuilder().imageId("95").options(getDefaultTemplateOptions()); + return computeService.templateBuilder().imageId(testImageId).options(getDefaultTemplateOptions()); } private TemplateOptions getDefaultTemplateOptions() { @@ -133,13 +136,14 @@ public class ComputeBase { computeService = context.getComputeService(); } - protected String awaitForPublicAddressAssigned(String nodeId) throws InterruptedException { + protected String awaitForStartup(String nodeId) throws InterruptedException { while (true) { - Set addresses = computeService.getNodeMetadata(nodeId).getPublicAddresses(); + NodeMetadata metadata = computeService.getNodeMetadata(nodeId); + Set addresses = metadata.getPublicAddresses(); System.out.println(addresses); - System.out.println(computeService.getNodeMetadata(nodeId).getState()); - if (addresses != null) - if (!addresses.isEmpty()) return addresses.iterator().next(); + System.out.println(metadata.getState()); + if (metadata.getState() == NodeState.RUNNING && addresses != null && !addresses.isEmpty()) + return addresses.iterator().next(); Thread.sleep(1000); } } diff --git a/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/ComputeServiceCheck.java b/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/ComputeServiceCheck.java index 6bcb61b6b5..f9632d40e9 100644 --- a/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/ComputeServiceCheck.java +++ b/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/ComputeServiceCheck.java @@ -49,6 +49,7 @@ import com.google.common.collect.ImmutableSet; public class ComputeServiceCheck { private ComputeServiceContextFactory contextFactory; private ComputeServiceContext context; + private String testImageId; @BeforeTest public void setupClient() throws IOException { @@ -56,6 +57,7 @@ public class ComputeServiceCheck { Properties properties = setupOverrides(setupProperties(this.getClass())); context = contextFactory.createContext("nova", ImmutableSet.of(new SshjSshClientModule(), new SLF4JLoggingModule()), properties); + testImageId = properties.getProperty("test.nova.image.id"); } @Test @@ -73,7 +75,7 @@ public class ComputeServiceCheck { ComputeService cs = context.getComputeService(); TemplateOptions options = new TemplateOptions().blockUntilRunning(false); - Template template = cs.templateBuilder().imageId("95").hardwareId("2").options(options).build(); + Template template = cs.templateBuilder().imageId(testImageId).hardwareId("2").options(options).build(); Set metedata = cs.createNodesInGroup("test", 1, template); System.out.println(metedata); } diff --git a/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/NovaComputeServiceLiveTest.java b/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/NovaComputeServiceLiveTest.java index 0ca8fedf16..d8120a2b2a 100644 --- a/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/NovaComputeServiceLiveTest.java +++ b/apis/nova/src/test/java/org/jclouds/openstack/nova/live/compute/NovaComputeServiceLiveTest.java @@ -49,6 +49,7 @@ import java.util.SortedSet; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeoutException; +import net.schmizz.sshj.userauth.UserAuthException; import org.jclouds.compute.ComputeServiceContext; import org.jclouds.compute.ComputeServiceContextFactory; import org.jclouds.compute.RunNodesException; @@ -150,10 +151,10 @@ public class NovaComputeServiceLiveTest extends ComputeBase { .family(OsFamily.UBUNTU).description("ffoo").build())); } - @Test(expectedExceptions = AuthorizationException.class, expectedExceptionsMessageRegExp = "Auth fail", timeOut = 120000) - void testScriptExecutionWithWrongCredentials() throws Throwable, RunScriptOnNodesException, URISyntaxException, InterruptedException { + @Test(expectedExceptions = UserAuthException.class, timeOut = 240000) + void testScriptExecutionWithWrongCredentials() throws Throwable { NodeMetadata node = getDefaultNodeImmediately(group); - String address = awaitForPublicAddressAssigned(node.getId()); + String address = awaitForStartup(node.getId()); awaitForSshPort(address, new Credentials("root", keyPair.get("private"))); OperatingSystem os = node.getOperatingSystem(); try { @@ -165,11 +166,11 @@ public class NovaComputeServiceLiveTest extends ComputeBase { } } - @Test(timeOut = 120000) + @Test(timeOut = 240000) public void testScriptExecutionAfterBootWithBasicTemplate() throws InterruptedException, RunNodesException, RunScriptOnNodesException, URISyntaxException, IOException { NodeMetadata node = getDefaultNodeImmediately(group); - String address = awaitForPublicAddressAssigned(node.getId()); + String address = awaitForStartup(node.getId()); awaitForSshPort(address, new Credentials("root", keyPair.get("private"))); for (Map.Entry response : computeService.runScriptOnNodesMatching( runningInGroup(group), Statements.exec("echo hello"), @@ -267,7 +268,6 @@ public class NovaComputeServiceLiveTest extends ComputeBase { @Test(timeOut = 120000) public void testGetNodeMetadata() throws Exception { Set nodes = Sets.newHashSet(getDefaultNodeImmediately(group)); - awaitForPublicAddressAssigned(nodes.iterator().next().getId()); Map metadataMap = newLinkedHashMap(uniqueIndex(filter(computeService .listNodesDetailsMatching(all()), and(inGroup(group), not(TERMINATED))), new Function() { @@ -279,6 +279,7 @@ public class NovaComputeServiceLiveTest extends ComputeBase { })); for (NodeMetadata node : nodes) { + awaitForStartup(node.getId()); metadataMap.remove(node.getId()); NodeMetadata nodeMetadata = computeService.getNodeMetadata(node.getId()); assertEquals(parseGroupFromName(nodeMetadata.getName()), group); diff --git a/apis/nova/src/test/java/org/jclouds/openstack/nova/live/novaclient/ClientBase.java b/apis/nova/src/test/java/org/jclouds/openstack/nova/live/novaclient/ClientBase.java index a3e1295d1b..f7fcb9b4ed 100644 --- a/apis/nova/src/test/java/org/jclouds/openstack/nova/live/novaclient/ClientBase.java +++ b/apis/nova/src/test/java/org/jclouds/openstack/nova/live/novaclient/ClientBase.java @@ -50,7 +50,7 @@ import com.google.inject.Module; * @author Victor Galkin */ public class ClientBase { - protected int testImageId = 95; + protected int testImageId; protected NovaClient client; protected SshClient.Factory sshFactory; @SuppressWarnings("unused") @@ -76,6 +76,8 @@ public class ClientBase { injector.injectMembers(socketOpen); // add logger keyPair = setupKeyPair(properties); + + testImageId = Integer.valueOf(properties.getProperty("test.nova.image.id")); } protected Server getDefaultServerImmediately() { diff --git a/apis/nova/src/test/resources/.gitignore b/apis/nova/src/test/resources/.gitignore deleted file mode 100644 index c6e479480a..0000000000 --- a/apis/nova/src/test/resources/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/test.properties diff --git a/apis/nova/src/test/resources/test.properties.template b/apis/nova/src/test/resources/dragon004.properties similarity index 54% rename from apis/nova/src/test/resources/test.properties.template rename to apis/nova/src/test/resources/dragon004.properties index dd98c75dc9..85d7434859 100644 --- a/apis/nova/src/test/resources/test.properties.template +++ b/apis/nova/src/test/resources/dragon004.properties @@ -2,6 +2,6 @@ test.nova.endpoint=http://dragon004.hw.griddynamics.net:8774 test.nova.apiversion=1.1 test.nova.identity=admin test.nova.credential=d744752f-20d3-4d75-979f-f62f16033b07 -test.initializer= -test.ssh.keyfile.private=f:/gigaspace/distr/gigaspaces.pem -test.ssh.keyfile.public=f:/gigaspace/distr/gigaspaces.pem \ No newline at end of file +test.nova.image.id=17 +test.ssh.keyfile.private=/keys/rhelimg.pem +test.ssh.keyfile.public=/keys/rhelimg.pub \ No newline at end of file