// 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.util.ArrayList;
import java.util.List;
import org.junit.Test;
public class PoolTest {
ConnectionTest con = new ConnectionTest();
Pool pool = new Pool(con);
XmlTestResultTest results = new XmlTestResultTest();
private String UUID = "0004fb0000020000ba9aaf00ae5e2d73";
private String BOGUSUUID = "deadbeefdeadbeefdeadbeefdeadbeef";
private String VIP = "192.168.1.230";
private String ALIAS = "Pool 0";
private String HOST = "ovm-1";
private String HOST2 = "ovm-2";
private String IP = "192.168.1.64";
private String IP2 = "192.168.1.65";
private String EMPTY = results.escapeOrNot("<?xml version=\"1.0\" ?>"
+ "<Discover_Server_Pool_Result/>");
private String DISCOVERPOOL = results
.escapeOrNot("<?xml version=\"1.0\" ?>"
+ "<Discover_Server_Pool_Result>" + " <Server_Pool>"
+ " <Unique_Id>"
+ UUID
+ "</Unique_Id>"
+ " <Pool_Alias>"
+ ALIAS
+ "</Pool_Alias>"
+ " <Master_Virtual_Ip>"
+ VIP
+ "</Master_Virtual_Ip>"
+ " <Member_List>"
+ " <Member>"
+ " <Registered_IP>"
+ IP
+ "</Registered_IP>"
+ " </Member>"
+ " <Member>"
+ " <Registered_IP>"
+ IP2
+ "</Registered_IP>"
+ " </Member>"
+ " </Member_List>"
+ " </Server_Pool>" + "</Discover_Server_Pool_Result>");
@Test
public void testDiscoverServerPool() throws Ovm3ResourceException {
con.setResult(results.simpleResponseWrapWrapper(EMPTY));
results.basicBooleanTest(pool.isInAPool(), false);
results.basicBooleanTest(pool.isInPool(UUID), false);
results.basicBooleanTest(pool.discoverServerPool(), false);
results.basicBooleanTest(pool.isInPool(UUID), false);
con.setResult(results.simpleResponseWrapWrapper(DISCOVERPOOL));
results.basicBooleanTest(pool.discoverServerPool());
results.basicBooleanTest(pool.isInAPool(), true);
results.basicBooleanTest(pool.isInPool(UUID), true);
results.basicStringTest(pool.getPoolId(), UUID);
results.basicStringTest(pool.getPoolId(), UUID);
results.basicStringTest(pool.getPoolAlias(), ALIAS);
results.basicStringTest(pool.getPoolMasterVip(), VIP);
results.basicBooleanTest(pool.getPoolMemberList().contains(IP));
results.basicBooleanTest(pool.getPoolMemberList().contains(IP2));
}
@Test
public void poolMembers() throws Ovm3ResourceException {
List<String> poolHosts = new ArrayList<String>();
poolHosts.add(IP);
poolHosts.add(IP2);
con.setResult(results.simpleResponseWrapWrapper(EMPTY));
results.basicBooleanTest(pool.getPoolMemberList().contains(IP), false);
con.setResult(results.simpleResponseWrapWrapper(DISCOVERPOOL));
results.basicBooleanTest(pool.discoverServerPool());
con.setResult(results.getNil());
results.basicBooleanTest(pool.removePoolMember(IP), true);
results.basicBooleanTest(pool.addPoolMember(IP), true);
results.basicBooleanTest(pool.setPoolMemberList(poolHosts), true);
}
@Test
public void testCreateServerPool() throws Ovm3ResourceException {
con.setResult(results.getNil());
results.basicBooleanTest(
pool.createServerPool(ALIAS, UUID, VIP, 1, HOST, IP), true);
con.setResult(results.simpleResponseWrapWrapper(DISCOVERPOOL));
results.basicBooleanTest(pool.discoverServerPool());
results.basicBooleanTest(
pool.createServerPool(ALIAS, UUID, VIP, 1, HOST, IP), true);
}
@Test(expected = Ovm3ResourceException.class)
public void testCreateServerPoolFail1() throws Ovm3ResourceException {
con.setResult(results.simpleResponseWrapWrapper(DISCOVERPOOL));
results.basicBooleanTest(
pool.createServerPool(ALIAS, BOGUSUUID, VIP, 1, HOST, IP),
false);
}
@Test(expected = Ovm3ResourceException.class)
public void testCreateServerPoolFail2() throws Ovm3ResourceException {
con.setResult(results.errorResponseWrap(1,
"exceptions.Exception:Repository already exists"));
results.basicBooleanTest(
pool.createServerPool(ALIAS, UUID, VIP, 1, HOST, IP), false);
}
@Test
public void testJoinServerPool() throws Ovm3ResourceException {
con.setResult(results.getNil());
Integer poolsize = 2;
results.basicBooleanTest(
pool.joinServerPool(ALIAS, UUID, VIP, poolsize, HOST2, IP2),
true);
con.setResult(results.simpleResponseWrapWrapper(DISCOVERPOOL));
results.basicBooleanTest(pool.discoverServerPool());
results.basicBooleanTest(
pool.joinServerPool(ALIAS, UUID, VIP, poolsize, HOST2, IP2),
true);
}
@Test(expected = Ovm3ResourceException.class)
public void testJoinServerPoolFail1() throws Ovm3ResourceException {
Integer poolsize = 2;
con.setResult(results.simpleResponseWrapWrapper(DISCOVERPOOL));
results.basicBooleanTest(pool.joinServerPool(ALIAS, BOGUSUUID, VIP,
poolsize, HOST2, IP2), false);
}
@Test(expected = Ovm3ResourceException.class)
public void testJoinServerPoolFail() throws Ovm3ResourceException {
con.setResult(results
.errorResponseWrap(1,
"exceptions.Exception:Server already a member of pool: "
+ UUID));
Integer poolsize = 2;
results.basicBooleanTest(pool.joinServerPool(ALIAS, UUID, VIP, poolsize,
HOST2, IP2), false);
}
@Test
public void testValidPoolRoles() throws Ovm3ResourceException {
con.setResult(results.getNil());
results.basicBooleanTest(pool.setServerRoles(pool.getValidRoles()),
true);
}
@Test(expected = Ovm3ResourceException.class)
public void testValidPoolRolesInvalid() throws Ovm3ResourceException {
String broken = "broken_token";
con.setResult(results
.errorResponseWrap(1,
"exceptions.Exception:Invalid roles: set(['xen', '" + broken
+ "', 'utility'])"));
results.basicBooleanTest(pool.setServerRoles(pool.getValidRoles()),
false);
}
}