blob: 52215c3cffa03c4283675af6867c92db2f9e7cf7 [file] [log] [blame]
// 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 com.cloud.hypervisor.ovm3.objects;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.common.XmlRpcHttpRequestConfigImpl;
import org.apache.xmlrpc.common.XmlRpcStreamConfig;
import org.apache.xmlrpc.common.XmlRpcStreamRequestConfig;
import org.apache.xmlrpc.parser.XmlRpcResponseParser;
import org.apache.xmlrpc.util.SAXParsers;
import org.junit.Test;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
/*
* This is a stub for XML parsing into result sets, it also contains test for
* Connection
*/
public class ConnectionTest extends Connection {
XmlTestResultTest results = new XmlTestResultTest();
String result;
List<String> multiRes = new ArrayList<String>();
String hostIp;
private Map<String, String> methodResponse = new HashMap<String, String>();
public ConnectionTest() {
}
@Override
public Object callTimeoutInSec(String method, List<?> params, int timeout,
boolean debug) throws XmlRpcException {
XmlRpcStreamConfig config = new XmlRpcHttpRequestConfigImpl();
XmlRpcClient client = new XmlRpcClient();
client.setTypeFactory(new RpcTypeFactory(client));
XmlRpcResponseParser parser = new XmlRpcResponseParser(
(XmlRpcStreamRequestConfig) config, client.getTypeFactory());
XMLReader xr = SAXParsers.newXMLReader();
xr.setContentHandler(parser);
try {
String result = null;
if (getMethodResponse(method) != null) {
result = getMethodResponse(method);
logger.debug("methodresponse call: " + method + " - " + params);
logger.trace("methodresponse reply: " + result);
}
if (result == null && multiRes.size() >= 0) {
result = getResult();
logger.debug("getresult call: " + method + " - " + params);
logger.trace("getresult reply: " + result);
}
xr.parse(new InputSource(new StringReader(result)));
} catch (Exception e) {
throw new XmlRpcException("Exception: " + e.getMessage(), e);
}
if (parser.getErrorCode() != 0) {
throw new XmlRpcException("Fault received[" + parser.getErrorCode()
+ "]: " + parser.getErrorMessage());
}
return parser.getResult();
}
public void setMethodResponse(String method, String response) {
methodResponse.put(method, response);
}
public String getMethodResponse(String method) {
if (methodResponse.containsKey(method)) {
return methodResponse.get(method);
}
return null;
}
public void removeMethodResponse(String method) {
if (methodResponse.containsKey(method)) {
methodResponse.remove(method);
}
}
public void setResult(String res) {
multiRes = new ArrayList<String>();
multiRes.add(0, res);
}
public void setResult(List<String> l) {
multiRes = new ArrayList<String>();
multiRes.addAll(l);
}
public void setNull() {
multiRes = new ArrayList<String>();
multiRes.add(0, null);
}
/* result chainsing */
public void addResult(String e) {
multiRes.add(e);
}
public void addNull() {
multiRes.add(null);
}
public String getResult() {
return popResult();
}
public String popResult() {
String res = multiRes.get(0);
if (multiRes.size() > 1)
multiRes.remove(0);
return res;
}
public List<String> resultList() {
return multiRes;
}
@Test
public void testConnection() {
String host = "ovm-1";
String user = "admin";
String pass = "password";
Integer port = 8899;
List<?> emptyParams = new ArrayList<Object>();
Connection con = new Connection(host, port, user, pass);
results.basicStringTest(con.getIp(), host);
results.basicStringTest(con.getUserName(), user);
results.basicStringTest(con.getPassword(), pass);
results.basicIntTest(con.getPort(), port);
try {
con.callTimeoutInSec("ping", emptyParams, 1);
// con.call("ping", emptyParams, 1, false);
} catch (XmlRpcException e) {
// TODO Auto-generated catch block
System.out.println("Exception: " + e);
}
new Connection(host, user, pass);
}
}