mirror of https://github.com/apache/jclouds.git
Issue 123: added test case for RimuHostingCreateServerResponse
git-svn-id: http://jclouds.googlecode.com/svn/trunk@2395 3d8758e0-26b5-11de-8745-db77d3ebf521
This commit is contained in:
parent
9c2628cdba
commit
0f835d1fdb
|
@ -39,7 +39,7 @@ import com.google.common.collect.Sets;
|
||||||
* @author Ivan Meredith
|
* @author Ivan Meredith
|
||||||
*/
|
*/
|
||||||
public class CreateServerResponseImpl implements CreateServerResponse {
|
public class CreateServerResponseImpl implements CreateServerResponse {
|
||||||
private static final Comparator<InetAddress> ADDRESS_COMPARATOR = new Comparator<InetAddress>() {
|
public static final Comparator<InetAddress> ADDRESS_COMPARATOR = new Comparator<InetAddress>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compare(InetAddress o1, InetAddress o2) {
|
public int compare(InetAddress o1, InetAddress o2) {
|
||||||
|
@ -95,4 +95,62 @@ public class CreateServerResponseImpl implements CreateServerResponse {
|
||||||
return credentials;
|
return credentials;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = 1;
|
||||||
|
result = prime * result + ((credentials == null) ? 0 : credentials.hashCode());
|
||||||
|
result = prime * result + ((id == null) ? 0 : id.hashCode());
|
||||||
|
result = prime * result + loginPort;
|
||||||
|
result = prime * result + ((loginType == null) ? 0 : loginType.hashCode());
|
||||||
|
result = prime * result + ((name == null) ? 0 : name.hashCode());
|
||||||
|
result = prime * result + ((privateAddresses == null) ? 0 : privateAddresses.hashCode());
|
||||||
|
result = prime * result + ((publicAddresses == null) ? 0 : publicAddresses.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
CreateServerResponseImpl other = (CreateServerResponseImpl) obj;
|
||||||
|
if (credentials == null) {
|
||||||
|
if (other.credentials != null)
|
||||||
|
return false;
|
||||||
|
} else if (!credentials.equals(other.credentials))
|
||||||
|
return false;
|
||||||
|
if (id == null) {
|
||||||
|
if (other.id != null)
|
||||||
|
return false;
|
||||||
|
} else if (!id.equals(other.id))
|
||||||
|
return false;
|
||||||
|
if (loginPort != other.loginPort)
|
||||||
|
return false;
|
||||||
|
if (loginType == null) {
|
||||||
|
if (other.loginType != null)
|
||||||
|
return false;
|
||||||
|
} else if (!loginType.equals(other.loginType))
|
||||||
|
return false;
|
||||||
|
if (name == null) {
|
||||||
|
if (other.name != null)
|
||||||
|
return false;
|
||||||
|
} else if (!name.equals(other.name))
|
||||||
|
return false;
|
||||||
|
if (privateAddresses == null) {
|
||||||
|
if (other.privateAddresses != null)
|
||||||
|
return false;
|
||||||
|
} else if (!privateAddresses.equals(other.privateAddresses))
|
||||||
|
return false;
|
||||||
|
if (publicAddresses == null) {
|
||||||
|
if (other.publicAddresses != null)
|
||||||
|
return false;
|
||||||
|
} else if (!publicAddresses.equals(other.publicAddresses))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,77 +23,48 @@
|
||||||
*/
|
*/
|
||||||
package org.jclouds.rimuhosting.miro.servers;
|
package org.jclouds.rimuhosting.miro.servers;
|
||||||
|
|
||||||
import org.jclouds.compute.domain.CreateServerResponse;
|
|
||||||
import org.jclouds.compute.domain.LoginType;
|
|
||||||
import org.jclouds.domain.Credentials;
|
|
||||||
import org.jclouds.rimuhosting.miro.domain.Server;
|
|
||||||
import org.jclouds.rimuhosting.miro.domain.NewServerResponse;
|
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
import java.util.SortedSet;
|
|
||||||
import java.util.TreeSet;
|
import org.jclouds.compute.domain.LoginType;
|
||||||
|
import org.jclouds.compute.domain.internal.CreateServerResponseImpl;
|
||||||
|
import org.jclouds.domain.Credentials;
|
||||||
|
import org.jclouds.rimuhosting.miro.domain.NewServerResponse;
|
||||||
|
import org.jclouds.rimuhosting.miro.domain.Server;
|
||||||
|
|
||||||
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Ivan Meredith
|
* @author Ivan Meredith
|
||||||
*/
|
*/
|
||||||
public class RimuHostingCreateServerResponse implements CreateServerResponse {
|
public class RimuHostingCreateServerResponse extends CreateServerResponseImpl {
|
||||||
private Server rhServer;
|
|
||||||
private NewServerResponse rhServerResponse;
|
|
||||||
|
|
||||||
public RimuHostingCreateServerResponse(NewServerResponse rhServerResponse){
|
public RimuHostingCreateServerResponse(NewServerResponse rhServerResponse) {
|
||||||
this.rhServer = rhServerResponse.getServer();
|
super(rhServerResponse.getServer().getId().toString(),
|
||||||
this.rhServerResponse = rhServerResponse;
|
rhServerResponse.getServer().getName(), getPublicAddresses(rhServerResponse
|
||||||
}
|
.getServer()), ImmutableList.<InetAddress> of(), 22, LoginType.SSH,
|
||||||
public String getId() {
|
new Credentials("root", rhServerResponse.getNewInstanceRequest().getCreateOptions()
|
||||||
return rhServer.getId().toString();
|
.getPassword()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
@VisibleForTesting
|
||||||
return rhServer.getName();
|
static Iterable<InetAddress> getPublicAddresses(Server rhServer) {
|
||||||
}
|
Iterable<String> addresses = Iterables.concat(ImmutableList.of(rhServer.getIpAddresses()
|
||||||
|
.getPrimaryIp()), rhServer.getIpAddresses().getSecondaryIps());
|
||||||
|
return Iterables.transform(addresses, new Function<String, InetAddress>() {
|
||||||
|
|
||||||
public SortedSet<InetAddress> getPublicAddresses() {
|
@Override
|
||||||
SortedSet<InetAddress> ipAddresses = new TreeSet<InetAddress>();
|
public InetAddress apply(String from) {
|
||||||
try {
|
try {
|
||||||
InetAddress address = InetAddress.getByName(rhServer.getIpAddresses().getPrimaryIp());
|
return InetAddress.getByName(from);
|
||||||
ipAddresses.add(address);
|
} catch (UnknownHostException e) {
|
||||||
} catch (UnknownHostException e) {
|
// TODO: log the failure.
|
||||||
//TODO: log the failure.
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(String ip : rhServer.getIpAddresses().getSecondaryIps()){
|
|
||||||
try {
|
|
||||||
InetAddress address = InetAddress.getByName(rhServer.getIpAddresses().getPrimaryIp());
|
|
||||||
ipAddresses.add(address);
|
|
||||||
} catch (UnknownHostException e) {
|
|
||||||
//TODO: log the failure.
|
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Rimuhosting does not support private addressess at this time.
|
|
||||||
* @return null
|
|
||||||
*/
|
|
||||||
public SortedSet<InetAddress> getPrivateAddresses() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Default port is always 22.
|
|
||||||
* @return 22
|
|
||||||
*/
|
|
||||||
public int getLoginPort() {
|
|
||||||
return 22;
|
|
||||||
}
|
|
||||||
|
|
||||||
public LoginType getLoginType() {
|
|
||||||
return LoginType.SSH;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Credentials getCredentials() {
|
|
||||||
return new Credentials("root",rhServerResponse.getNewInstanceRequest().getCreateOptions().getPassword());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||||
|
*
|
||||||
|
* ====================================================================
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
* ====================================================================
|
||||||
|
*/
|
||||||
|
package org.jclouds.rimuhosting.miro.servers;
|
||||||
|
|
||||||
|
import static org.easymock.EasyMock.expect;
|
||||||
|
import static org.easymock.classextension.EasyMock.createMock;
|
||||||
|
import static org.easymock.classextension.EasyMock.replay;
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
|
import org.jclouds.compute.domain.LoginType;
|
||||||
|
import org.jclouds.domain.Credentials;
|
||||||
|
import org.jclouds.rimuhosting.miro.data.CreateOptions;
|
||||||
|
import org.jclouds.rimuhosting.miro.data.NewServerData;
|
||||||
|
import org.jclouds.rimuhosting.miro.domain.IpAddresses;
|
||||||
|
import org.jclouds.rimuhosting.miro.domain.NewServerResponse;
|
||||||
|
import org.jclouds.rimuhosting.miro.domain.Server;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import com.google.common.collect.ImmutableSortedSet;
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Adrian Cole
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit", testName = "rimuhosting.RimuHostingCreateServerResponse")
|
||||||
|
public class RimuHostingCreateServerResponseTest {
|
||||||
|
|
||||||
|
public void testParseInetAddress() throws UnknownHostException {
|
||||||
|
|
||||||
|
Server rhServer = createMock(Server.class);
|
||||||
|
IpAddresses addresses = createMock(IpAddresses.class);
|
||||||
|
expect(rhServer.getIpAddresses()).andReturn(addresses).atLeastOnce();
|
||||||
|
expect(addresses.getPrimaryIp()).andReturn("127.0.0.1");
|
||||||
|
expect(addresses.getSecondaryIps()).andReturn(ImmutableSortedSet.of("www.yahoo.com"));
|
||||||
|
replay(rhServer);
|
||||||
|
replay(addresses);
|
||||||
|
|
||||||
|
assertEquals(Sets.newLinkedHashSet(RimuHostingCreateServerResponse
|
||||||
|
.getPublicAddresses(rhServer)), ImmutableSet.of(InetAddress.getByName("127.0.0.1"),
|
||||||
|
InetAddress.getByName("www.yahoo.com")));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void test() throws UnknownHostException {
|
||||||
|
|
||||||
|
NewServerResponse nsResponse = createMock(NewServerResponse.class);
|
||||||
|
Server rhServer = createMock(Server.class);
|
||||||
|
|
||||||
|
expect(nsResponse.getServer()).andReturn(rhServer).atLeastOnce();
|
||||||
|
|
||||||
|
expect(rhServer.getId()).andReturn(new Long(1));
|
||||||
|
expect(rhServer.getName()).andReturn("name");
|
||||||
|
|
||||||
|
IpAddresses addresses = createMock(IpAddresses.class);
|
||||||
|
expect(rhServer.getIpAddresses()).andReturn(addresses).atLeastOnce();
|
||||||
|
|
||||||
|
expect(addresses.getPrimaryIp()).andReturn("127.0.0.1");
|
||||||
|
expect(addresses.getSecondaryIps()).andReturn(ImmutableSortedSet.<String> of());
|
||||||
|
|
||||||
|
NewServerData data = createMock(NewServerData.class);
|
||||||
|
|
||||||
|
expect(nsResponse.getNewInstanceRequest()).andReturn(data).atLeastOnce();
|
||||||
|
CreateOptions options = createMock(CreateOptions.class);
|
||||||
|
expect(data.getCreateOptions()).andReturn(options);
|
||||||
|
expect(options.getPassword()).andReturn("password");
|
||||||
|
|
||||||
|
replay(nsResponse);
|
||||||
|
replay(rhServer);
|
||||||
|
replay(addresses);
|
||||||
|
replay(data);
|
||||||
|
replay(options);
|
||||||
|
|
||||||
|
RimuHostingCreateServerResponse response = new RimuHostingCreateServerResponse(nsResponse);
|
||||||
|
assertEquals(response.getId(), "1");
|
||||||
|
assertEquals(response.getName(), "name");
|
||||||
|
assertEquals(response.getPublicAddresses(), ImmutableSet.<InetAddress> of(InetAddress
|
||||||
|
.getByName("127.0.0.1")));
|
||||||
|
assertEquals(response.getPrivateAddresses(), ImmutableSet.<InetAddress> of());
|
||||||
|
assertEquals(response.getLoginPort(), 22);
|
||||||
|
assertEquals(response.getLoginType(), LoginType.SSH);
|
||||||
|
assertEquals(response.getCredentials(), new Credentials("root", "password"));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue