package org.openstack.atlas.adapter.itest;
import org.apache.axis.AxisFault;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.openstack.atlas.adapter.LoadBalancerEndpointConfiguration;
import org.openstack.atlas.adapter.service.ReverseProxyLoadBalancerAdapter;
import org.openstack.atlas.adapter.zxtm.ZxtmAdapterImpl;
import org.openstack.atlas.adapter.zxtm.ZxtmServiceStubs;
import org.openstack.atlas.service.domain.entities.Host;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Ignore
public class ZxtmAdapterStagingIntegrationTest {
private static final String ZXTM_USERNAME = "user_name";
private static final String ZXTM_PASSWORD = "user_password";
private static final String ZXTM_ENDPOINT_URI = "https://zeus-endpoint:9090/soap";
private static final String ZXTM_REST_ENDPOINT_URI = "https://zeus-endpoint:9090/tm/2.0/config/active/";
private static final String TARGET_HOST = "ztm-n03.staging1.test.com";
private static final String FAILOVER_HOST_1 = "ztm-n02.staging1.test.com";
private ReverseProxyLoadBalancerAdapter zxtmAdapter;
private LoadBalancerEndpointConfiguration config;
public ZxtmAdapterStagingIntegrationTest() throws MalformedURLException {
zxtmAdapter = new ZxtmAdapterImpl();
setupEndpointConfiguration();
}
private void setupEndpointConfiguration() throws MalformedURLException {
List<String> targetFailoverHosts = new ArrayList<String>();
targetFailoverHosts.add(FAILOVER_HOST_1);
Host soapEndpointHost = new Host();
soapEndpointHost.setEndpoint(ZXTM_ENDPOINT_URI);
soapEndpointHost.setRestEndpoint(ZXTM_REST_ENDPOINT_URI);
Host trafficManagerHost = new Host();
List<Host> failoverHosts = new ArrayList<Host>();
failoverHosts.add(soapEndpointHost);
trafficManagerHost.setTrafficManagerName(TARGET_HOST);
this.config = new LoadBalancerEndpointConfiguration(soapEndpointHost, ZXTM_USERNAME, ZXTM_PASSWORD, trafficManagerHost, targetFailoverHosts, failoverHosts);
// This is the default directory where the logs will go.
this.config.setLogFileLocation("/opt/zeus/zxtm/log/access_log");
}
private ZxtmServiceStubs getServiceStubs() throws AxisFault {
return ZxtmServiceStubs.getServiceStubs(config.getEndpointUrl(), config.getUsername(), config.getPassword());
}
@Test
public void shouldBeValidApiVersion() {
String ZEUS_API_VERSION = "9.5";
try {
Assert.assertEquals(ZEUS_API_VERSION, getServiceStubs().getSystemMachineInfoBinding().getProductVersion());
} catch (RemoteException e) {
e.printStackTrace();
Assert.fail(e.getMessage());
}
}
@Test
public void getStatsSystemLoadBalancerNames() throws Exception {
List<String> loadBalancerNames = zxtmAdapter.getStatsSystemLoadBalancerNames(config);
System.out.println(loadBalancerNames.size() + " loadbalancers on host machine.");
for (String loadBalancerName : loadBalancerNames) {
System.out.println(loadBalancerName);
}
}
@Test
public void getLoadBalancerCurrentConnections() throws Exception {
List<String> loadBalancerNames = zxtmAdapter.getStatsSystemLoadBalancerNames(config);
Map<String, Integer> concurrentConnections = zxtmAdapter.getLoadBalancerCurrentConnections(config, loadBalancerNames);
System.out.println("Listing concurrent connections...");
for (String loadBalancerName : concurrentConnections.keySet()) {
System.out.println(String.format("LB Name: %s, Concurrent Connections: %d", loadBalancerName, concurrentConnections.get(loadBalancerName)));
}
}
@Test
public void getTotalCurrentConnectionsForHost() throws Exception {
int concurrentConnections = zxtmAdapter.getTotalCurrentConnectionsForHost(config);
System.out.println("Listing total current connections..." + concurrentConnections);
}
@Test
public void getLoadBalancerBytesIn() throws Exception {
List<String> loadBalancerNames = zxtmAdapter.getStatsSystemLoadBalancerNames(config);
Map<String, Long> bandwidthBytesIn = zxtmAdapter.getLoadBalancerBytesIn(config, loadBalancerNames);
System.out.println("Listing bandwidth bytes in...");
for (String loadBalancerName : bandwidthBytesIn.keySet()) {
System.out.println(String.format("LB Name: %s, Bandwidth Bytes In: %d", loadBalancerName, bandwidthBytesIn.get(loadBalancerName)));
}
}
@Test
public void getLoadBalancerBytesOut() throws Exception {
List<String> loadBalancerNames = zxtmAdapter.getStatsSystemLoadBalancerNames(config);
Map<String, Long> bandwidthBytesOut = zxtmAdapter.getLoadBalancerBytesIn(config, loadBalancerNames);
System.out.println("Listing bandwidth bytes out...");
for (String loadBalancerName : bandwidthBytesOut.keySet()) {
System.out.println(String.format("LB Name: %s, Bandwidth Bytes Out: %d", loadBalancerName, bandwidthBytesOut.get(loadBalancerName)));
}
}
@Test
public void getHostBytesIn() throws RemoteException {
long bytesIn = zxtmAdapter.getHostBytesIn(config);
System.out.println(String.format("Host Name: %s, Bandwidth Bytes In: %d", config.getTrafficManagerName(), bytesIn));
}
@Test
public void getHostBytesOut() throws RemoteException {
long bytesOut = zxtmAdapter.getHostBytesOut(config);
System.out.println(String.format("Host Name: %s, Bandwidth Bytes Out: %d", config.getTrafficManagerName(), bytesOut));
}
@Ignore
@Test
public void badAppleTest() throws Exception {
List<String> loadBalancerNames = zxtmAdapter.getStatsSystemLoadBalancerNames(config);
for (String loadBalancerName : loadBalancerNames) {
List<String> singleItemList = new ArrayList<String>();
singleItemList.add(loadBalancerName);
try {
zxtmAdapter.getLoadBalancerCurrentConnections(config, singleItemList);
} catch (AxisFault af) {
System.out.println(String.format("The bad apple is...'%s'!", loadBalancerName));
}
}
}
}