| // 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); |
| } |
| } |