Live tests fix

This commit is contained in:
vicglarson 2011-04-22 20:30:16 +04:00
parent b9a5397a45
commit 8c8161ec79
5 changed files with 793 additions and 815 deletions

View File

@ -385,7 +385,7 @@ public class NovaAsyncClientTest extends RestClientTest<NovaAsyncClient> {
Method method = NovaAsyncClient.class.getMethod("changeAdminPass", int.class, String.class); Method method = NovaAsyncClient.class.getMethod("changeAdminPass", int.class, String.class);
HttpRequest request = processor.createRequest(method, 2, "foo"); HttpRequest request = processor.createRequest(method, 2, "foo");
assertRequestLineEquals(request, "POST http://endpoint/vapiversion/servers/2/action HTTP/1.1"); assertRequestLineEquals(request, "POST http://endpoint/vapiversion/servers/2/action HTTP/1.1");
assertNonPayloadHeadersEqual(request, ""); assertNonPayloadHeadersEqual(request, "");
assertPayloadEquals(request, "{\"changePassword\":{\"adminPass\":\"foo\"}}", MediaType.APPLICATION_JSON, false); assertPayloadEquals(request, "{\"changePassword\":{\"adminPass\":\"foo\"}}", MediaType.APPLICATION_JSON, false);

View File

@ -18,31 +18,33 @@
*/ */
package org.jclouds.openstack.nova.functions; package org.jclouds.openstack.nova.functions;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.Injector; import com.google.inject.Injector;
import com.google.inject.Key; import com.google.inject.Key;
import com.google.inject.TypeLiteral; import com.google.inject.TypeLiteral;
import org.jclouds.http.HttpResponse; import org.jclouds.http.HttpResponse;
import org.jclouds.http.functions.UnwrapOnlyJsonValue; import org.jclouds.http.functions.UnwrapOnlyJsonValue;
import org.jclouds.io.Payloads; import org.jclouds.io.Payloads;
import org.jclouds.json.config.GsonModule; import org.jclouds.json.config.GsonModule;
import org.jclouds.openstack.nova.domain.Address; import org.jclouds.openstack.nova.domain.Address;
import org.jclouds.openstack.nova.domain.Addresses; import org.jclouds.openstack.nova.domain.Addresses;
import org.jclouds.openstack.nova.domain.Server; import org.jclouds.openstack.nova.domain.Server;
import org.jclouds.openstack.nova.domain.ServerStatus; import org.jclouds.openstack.nova.domain.ServerStatus;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.io.InputStream; import java.io.InputStream;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.SimpleTimeZone; import java.util.SimpleTimeZone;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertEquals;

View File

@ -29,6 +29,7 @@ import org.jclouds.ssh.SshClient;
import org.testng.annotations.AfterMethod; import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.security.SecureRandom;
import java.util.Map; import java.util.Map;
/** /**

View File

@ -19,41 +19,24 @@
package org.jclouds.openstack.nova.live; package org.jclouds.openstack.nova.live;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.inject.Injector;
import com.google.inject.Module;
import org.jclouds.domain.Credentials; import org.jclouds.domain.Credentials;
import org.jclouds.http.HttpResponseException; import org.jclouds.http.HttpResponseException;
import org.jclouds.io.Payload; import org.jclouds.io.Payload;
import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
import org.jclouds.net.IPSocket; import org.jclouds.net.IPSocket;
import org.jclouds.openstack.nova.NovaClient;
import org.jclouds.openstack.nova.domain.*; import org.jclouds.openstack.nova.domain.*;
import org.jclouds.openstack.nova.options.RebuildServerOptions; import org.jclouds.openstack.nova.options.RebuildServerOptions;
import org.jclouds.predicates.RetryablePredicate;
import org.jclouds.predicates.SocketOpen;
import org.jclouds.rest.RestContextFactory;
import org.jclouds.ssh.SshClient; import org.jclouds.ssh.SshClient;
import org.jclouds.ssh.jsch.config.JschSshClientModule;
import org.jclouds.util.Strings2; import org.jclouds.util.Strings2;
import org.testng.annotations.AfterTest; import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import java.io.IOException; import java.io.IOException;
import java.security.SecureRandom;
import java.util.Map;
import java.util.Properties;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit;
import static org.jclouds.openstack.nova.live.PropertyHelper.*;
import static org.jclouds.openstack.nova.options.CreateServerOptions.Builder.withFile;
import static org.jclouds.openstack.nova.options.ListOptions.Builder.withDetails; import static org.jclouds.openstack.nova.options.ListOptions.Builder.withDetails;
import static org.testng.Assert.*; import static org.testng.Assert.*;
import static org.testng.Assert.assertEquals;
/** /**
* Tests behavior of {@code NovaClient} * Tests behavior of {@code NovaClient}
@ -62,9 +45,9 @@ import static org.testng.Assert.*;
*/ */
// disabled [Web Hosting #129069 // disabled [Web Hosting #129069
@Test(groups = "live", sequential = true) @Test(groups = "live", sequential = true)
public class NovaClientLiveTest { public class NovaClientLiveTest extends ClientBase{
private int testImageId = 95; <<<<<<< .mine private int testImageId = 95;
protected NovaClient client; protected NovaClient client;
protected SshClient.Factory sshFactory; protected SshClient.Factory sshFactory;
private Predicate<IPSocket> socketTester; private Predicate<IPSocket> socketTester;
@ -75,8 +58,8 @@ public class NovaClientLiveTest {
private String adminPass; private String adminPass;
Map<String, String> metadata = ImmutableMap.of("jclouds", "rackspace"); Map<String, String> metadata = ImmutableMap.of("jclouds", "rackspace");
private int createdImageId; private int createdImageId;
=======>>>>>>> .theirs
<<<<<<< .mine
@BeforeTest @BeforeTest
public void setupClient() throws IOException { public void setupClient() throws IOException {
Properties properties = setupOverrides(setupProperties(this.getClass())); Properties properties = setupOverrides(setupProperties(this.getClass()));
@ -95,7 +78,7 @@ public class NovaClientLiveTest {
keyPair = setupKeyPair(properties); keyPair = setupKeyPair(properties);
} }
@Test =======>>>>>>> .theirs @Test
public void testListServers() throws Exception { public void testListServers() throws Exception {
Set<Server> response = client.listServers(); Set<Server> response = client.listServers();
assert null != response; assert null != response;
@ -228,18 +211,21 @@ public class NovaClientLiveTest {
} }
@Test(enabled = true) @Test(enabled = true)
public void testCreateServer() throws Exception { public void testCreateServer() throws Exception {
String imageRef = client.getImage(testImageId).getURI().toASCIIString(); <<<<<<< .mine String imageRef = client.getImage(testImageId).getURI().toASCIIString();
String flavorRef = client.getFlavor(1).getURI().toASCIIString(); String flavorRef = client.getFlavor(1).getURI().toASCIIString();
String serverName = serverPrefix + "createserver" + new SecureRandom().nextInt(); String serverName = serverPrefix + "createserver" + new SecureRandom().nextInt();
Server server = client.createServer(serverName, imageRef, flavorRef, withFile("/etc/jclouds.txt", Server server = client.createServer(serverName, imageRef, flavorRef, withFile("/etc/jclouds.txt",
"rackspace".getBytes()).withMetadata(metadata)); "rackspace".getBytes()).withMetadata(metadata));
assertNotNull(server.getAdminPass()); ======= Server server = getDefaultServerImmediately();
>>>>>>> .theirs assertNotNull(server.getAdminPass());
assertEquals(server.getStatus(), ServerStatus.BUILD); assertEquals(server.getStatus(), ServerStatus.BUILD);
serverId = server.getId(); int serverId = server.getId();
adminPass = server.getAdminPass(); String adminPass = server.getAdminPass();
blockUntilServerActive(serverId); blockUntilServerActive(serverId);
blockUntilPublicAddress(serverId); blockUntilPublicAddress(serverId);
client.getServer(serverId).getAddresses().getPublicAddresses().iterator().next().getAddress(); client.getServer(serverId).getAddresses().getPublicAddresses().iterator().next().getAddress();
@ -281,33 +267,34 @@ public class NovaClientLiveTest {
@Test(enabled = true, timeOut = 300000) @Test(enabled = true, timeOut = 300000)
public void testServerDetails() throws Exception { public void testServerDetails() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); Server server = getDefaultServerImmediately();
Server server = client.getServer(serverId);
assertNotNull(server.getHostId(), "Host id: "); assertNotNull(server.getHostId(), "Host id: ");
assertEquals(server.getStatus(), ServerStatus.ACTIVE); assertEquals(server.getStatus(), ServerStatus.ACTIVE);
assertNotNull(server.getAddresses()); assertNotNull(server.getAddresses());
// check metadata // check metadata
assertEquals(server.getMetadata(), metadata); assertEquals(server.getMetadata(), metadata);
<<<<<<< .mine
assertTrue(server.getImageRef().endsWith(String.valueOf(testImageId))); assertTrue(server.getImageRef().endsWith(String.valueOf(testImageId)));
// listAddresses tests.. ======= assertTrue(server.getImageRef().endsWith(String.valueOf(testImageId)));
assertEquals(client.getAddresses(serverId), server.getAddresses()); >>>>>>> .theirs // listAddresses tests..
assertEquals(client.getAddresses(server.getId()), server.getAddresses());
assertEquals(server.getAddresses().getPublicAddresses().size(), 1); assertEquals(server.getAddresses().getPublicAddresses().size(), 1);
assertEquals(client.listPublicAddresses(serverId), server.getAddresses().getPublicAddresses()); assertEquals(client.listPublicAddresses(server.getId()), server.getAddresses().getPublicAddresses());
assertEquals(server.getAddresses().getPrivateAddresses().size(), 1); assertEquals(server.getAddresses().getPrivateAddresses().size(), 1);
assertEquals(client.listPrivateAddresses(serverId), server.getAddresses().getPrivateAddresses()); <<<<<<< .mine assertEquals(client.listPrivateAddresses(serverId), server.getAddresses().getPrivateAddresses());
assertPassword(server, adminPass); assertPassword(server, adminPass);
assertTrue(server.getFlavorRef().endsWith("1")); assertTrue(server.getFlavorRef().endsWith("1"));
assert server.getProgress() >= 0 : "newDetails.getProgress()" + server.getProgress(); ======= assertEquals(client.listPrivateAddresses(server.getId()), server.getAddresses().getPrivateAddresses());
assertPassword(server, server.getAdminPass());
assertTrue(server.getFlavorRef().endsWith("1"));
>>>>>>> .theirs assert server.getProgress() >= 0 : "newDetails.getProgress()" + server.getProgress();
} }
private void assertPassword(Server server, String pass) throws IOException { private void assertPassword(Server server, String pass) throws IOException {
IPSocket socket = new IPSocket(Iterables.get(server.getAddresses().getPublicAddresses(), 0).getAddress(), 22); IPSocket socket = new IPSocket(Iterables.get(server.getAddresses().getPublicAddresses(), 0).getAddress(), 22);
socketTester.apply(socket); //socketTester.apply(socket);
SshClient client = sshFactory.create(socket, new Credentials("root", keyPair.get("private"))); SshClient client = sshFactory.create(socket, new Credentials("root", keyPair.get("private")));
try { try {
@ -323,8 +310,8 @@ public class NovaClientLiveTest {
@Test(enabled = true, timeOut = 5 * 60 * 1000) @Test(enabled = true, timeOut = 5 * 60 * 1000)
public void testRenameServer() throws Exception { public void testRenameServer() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); Server server = getDefaultServerImmediately();
Server server = client.getServer(serverId); int serverId = server.getId();
String oldName = server.getName(); String oldName = server.getName();
client.renameServer(serverId, oldName + "new"); client.renameServer(serverId, oldName + "new");
blockUntilServerActive(serverId); blockUntilServerActive(serverId);
@ -333,49 +320,51 @@ public class NovaClientLiveTest {
@Test(enabled = true, timeOut = 5 * 60 * 1000) @Test(enabled = true, timeOut = 5 * 60 * 1000)
public void testChangePassword() throws Exception { public void testChangePassword() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); int serverId = getDefaultServerImmediately().getId();
blockUntilServerActive(serverId); blockUntilServerActive(serverId);
client.changeAdminPass(serverId, "elmo"); client.changeAdminPass(serverId, "elmo");
assertPassword(client.getServer(serverId), "elmo"); assertPassword(client.getServer(serverId), "elmo");
this.adminPass = "elmo";
} }
@Test(enabled = true, timeOut = 10 * 600 * 1000) @Test(enabled = true, timeOut = 10 * 600 * 1000)
public void testCreateImage() throws Exception { public void testCreateImage() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); Server server = getDefaultServerImmediately();
Image image = client.createImageFromServer("hoofie", serverId); Image image = getDefaultImageImmediately(server);
blockUntilImageActive(image.getId());
assertEquals("hoofie", image.getName()); assertEquals("hoofie", image.getName());
assertEquals(serverId, image.getServerRef()); assertEquals(image.getServerRef(), "");
createdImageId = image.getId();
blockUntilImageActive(createdImageId);
} }
@Test(enabled = true, timeOut = 10 * 60 * 1000) @Test(enabled = true, timeOut = 10 * 60 * 1000)
public void testRebuildServer() throws Exception { public void testRebuildServer() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); Server server = getDefaultServerImmediately();
client.rebuildServer(serverId, new RebuildServerOptions().withImage(String.valueOf(createdImageId))); Image image = getDefaultImageImmediately(server);
blockUntilServerActive(serverId); client.rebuildServer(server.getId(), new RebuildServerOptions().withImage(String.valueOf(image.getId())));
blockUntilServerActive(server.getId());
// issue Web Hosting #119580 createdImageId comes back incorrect after rebuild // issue Web Hosting #119580 createdImageId comes back incorrect after rebuild
assertEquals(createdImageId, client.getServer(serverId).getImageRef()); assertEquals(image.getURI(), client.getServer(server.getId()).getImageRef());
} }
@Test(enabled = true, timeOut = 10 * 60 * 1000) @Test(enabled = true, timeOut = 10 * 60 * 1000)
public void testRebootHard() throws Exception { public void testRebootHard() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); Server server = getDefaultServerImmediately();
client.rebootServer(serverId, RebootType.HARD); client.rebootServer(server.getId(), RebootType.HARD);
blockUntilServerActive(serverId); blockUntilServerActive(server.getId());
} }
@Test(enabled = true, timeOut = 10 * 60 * 1000) @Test(enabled = true, timeOut = 10 * 60 * 1000)
public void testRebootSoft() throws Exception { public void testRebootSoft() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); Server server = getDefaultServerImmediately();
client.rebootServer(serverId, RebootType.SOFT); client.rebootServer(server.getId(), RebootType.SOFT);
blockUntilServerActive(serverId); blockUntilServerActive(server.getId());
} }
@Test(enabled = false, timeOut = 60000, dependsOnMethods = "testRebootSoft") @Test(enabled = false, timeOut = 60000, dependsOnMethods = "testRebootSoft")
public void testRevertResize() throws Exception { public void testRevertResize() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); Server server = getDefaultServerImmediately();
int serverId = server.getId();
client.resizeServer(serverId, 2); client.resizeServer(serverId, 2);
blockUntilServerVerifyResize(serverId); blockUntilServerVerifyResize(serverId);
client.revertResizeServer(serverId); client.revertResizeServer(serverId);
@ -385,7 +374,8 @@ public class NovaClientLiveTest {
@Test(enabled = false, timeOut = 10 * 60 * 1000) @Test(enabled = false, timeOut = 10 * 60 * 1000)
public void testConfirmResize() throws Exception { public void testConfirmResize() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); Server server = getDefaultServerImmediately();
int serverId = server.getId();
client.resizeServer(serverId, 2); client.resizeServer(serverId, 2);
blockUntilServerVerifyResize(serverId); blockUntilServerVerifyResize(serverId);
client.confirmResizeServer(serverId); client.confirmResizeServer(serverId);
@ -395,45 +385,25 @@ public class NovaClientLiveTest {
@Test(enabled = true, timeOut = 60000) @Test(enabled = true, timeOut = 60000)
void deleteServer2() throws Exception { void deleteServer2() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); Server server = getDefaultServerImmediately();
if (serverId > 0) { int serverId = server.getId();
client.deleteServer(serverId); client.deleteServer(serverId);
waitServerDeleted(serverId); waitServerDeleted(serverId);
}
serverId = 0;
} }
@Test(enabled = true, timeOut = 60000) @Test(enabled = true, timeOut = 60000)
void testDeleteImage() throws Exception { void testDeleteImage() throws Exception {
if (createdImageId <= 0) { Image image = getDefaultImageImmediately(getDefaultServerImmediately());
testCreateImage(); client.deleteImage(image.getId());
} assert client.getImage(image.getId()) == null;
if (createdImageId > 0) {
client.deleteImage(createdImageId);
assert client.getImage(createdImageId) == null;
}
//TODO all servers created from the image should be deleted
} }
@Test(enabled = true, timeOut = 60000) @Test(enabled = true, timeOut = 60000)
void deleteServer1() throws Exception { void deleteServer1() throws Exception {
if (!isServerExist(serverId)) testCreateServer(); Server server = getDefaultServerImmediately();
if (serverId > 0) { int serverId = server.getId();
client.deleteServer(serverId); client.deleteServer(serverId);
waitServerDeleted(serverId); waitServerDeleted(serverId);
}
serverId = 0;
}
private boolean isServerExist(int serverId) {
return client.getServer(serverId) != null;
}
private void waitServerDeleted(int serverId) throws InterruptedException {
while (null != client.getServer(serverId)) {
System.out.println("Await deleted server" + serverId);
Thread.sleep(1000);
}
} }
@Test @Test