// 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.resources.helpers;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import javax.naming.ConfigurationException;
import org.junit.Test;
import com.cloud.agent.api.Answer;
import com.cloud.agent.api.GetVmStatsCommand;
import com.cloud.agent.api.MigrateCommand;
import com.cloud.agent.api.PlugNicCommand;
import com.cloud.agent.api.PrepareForMigrationCommand;
import com.cloud.agent.api.UnPlugNicCommand;
import com.cloud.agent.api.to.NicTO;
import com.cloud.hypervisor.ovm3.objects.CloudStackPluginTest;
import com.cloud.hypervisor.ovm3.objects.ConnectionTest;
import com.cloud.hypervisor.ovm3.objects.Ovm3ResourceException;
import com.cloud.hypervisor.ovm3.objects.XenTest;
import com.cloud.hypervisor.ovm3.objects.XmlTestResultTest;
import com.cloud.hypervisor.ovm3.resources.Ovm3HypervisorResource;
import com.cloud.hypervisor.ovm3.resources.Ovm3HypervisorResourceTest;
import com.cloud.hypervisor.ovm3.support.Ovm3SupportTest;
import com.cloud.network.Networks.TrafficType;
import com.cloud.vm.VirtualMachine;
public class Ovm3VmSupportTest {
ConnectionTest con = new ConnectionTest();
Ovm3ConfigurationTest configTest = new Ovm3ConfigurationTest();
Ovm3SupportTest support = new Ovm3SupportTest();
Ovm3HypervisorResource hypervisor = new Ovm3HypervisorResource();
Ovm3HypervisorResourceTest hyperTest = new Ovm3HypervisorResourceTest();
CloudStackPluginTest csp = new CloudStackPluginTest();
XenTest xen = new XenTest();
XmlTestResultTest results = new XmlTestResultTest();
private NicTO prepNic(String mac, Integer vlan, TrafficType type) throws URISyntaxException {
return prepNic(mac, vlan, type, 0);
}
private NicTO prepNic(String mac, Integer vlan, TrafficType type, Integer id) throws URISyntaxException {
URI iso = new URI("vlan://" + vlan.toString());
NicTO nic = new NicTO();
nic.setType(type);
/* Isolation is not what it seems.... */
/* nic.setIsolationuri(iso); */
nic.setBroadcastUri(iso);
nic.setMac(mac);
nic.setDeviceId(id);
return nic;
}
@Test
public void PlugNicTest() throws ConfigurationException, URISyntaxException {
hypervisor = support.prepare(configTest.getParams());
NicTO nic = prepNic(xen.getVmNicMac(), 200, TrafficType.Guest);
PlugNicCommand plug = new PlugNicCommand(nic,xen.getVmName(), VirtualMachine.Type.User);
Answer ra = hypervisor.executeRequest(plug);
results.basicBooleanTest(ra.getResult());
}
@Test
public void PlugNicBreakTest() throws ConfigurationException, URISyntaxException {
hypervisor = support.prepare(configTest.getParams());
NicTO nic = prepNic(xen.getVmNicMac(), 240, TrafficType.Guest);
PlugNicCommand plug = new PlugNicCommand(nic,xen.getVmName(), VirtualMachine.Type.User);
Answer ra = hypervisor.executeRequest(plug);
results.basicBooleanTest(ra.getResult(), false);
}
@Test
public void unPlugNicTest() throws ConfigurationException, URISyntaxException {
hypervisor = support.prepare(configTest.getParams());
NicTO nic = prepNic(xen.getVmNicMac(), 200, TrafficType.Guest);
UnPlugNicCommand plug = new UnPlugNicCommand(nic, xen.getVmName());
Answer ra = hypervisor.executeRequest(plug);
results.basicBooleanTest(ra.getResult());
}
@Test
public void unPlugNicBreakTest() throws ConfigurationException, URISyntaxException {
hypervisor = support.prepare(configTest.getParams());
NicTO nic = prepNic(xen.getVmNicMac(), 240, TrafficType.Guest);
UnPlugNicCommand plug = new UnPlugNicCommand(nic, xen.getVmName());
Answer ra = hypervisor.executeRequest(plug);
results.basicBooleanTest(ra.getResult(), false);
}
@Test
public void GetVmStatsCommandTest() throws ConfigurationException {
hypervisor = support.prepare(configTest.getParams());
Ovm3Configuration configuration = new Ovm3Configuration(configTest.getParams());
List<String> vms = new ArrayList<String>();
vms.add(xen.getVmName());
GetVmStatsCommand cmd = new GetVmStatsCommand(vms, configuration.getCsHostGuid(), hypervisor.getName());
Answer ra = hypervisor.executeRequest(cmd);
results.basicBooleanTest(ra.getResult());
cmd = new GetVmStatsCommand(vms, configuration.getCsHostGuid(), hypervisor.getName());
ra = hypervisor.executeRequest(cmd);
results.basicBooleanTest(ra.getResult());
}
@Test
public void PrepareForMigrationCommandTest() throws ConfigurationException, Ovm3ResourceException {
hypervisor = support.prepare(configTest.getParams());
PrepareForMigrationCommand cmd = new PrepareForMigrationCommand(hyperTest.createVm(xen.getVmName()));
Answer ra = hypervisor.executeRequest(cmd);
results.basicBooleanTest(ra.getResult());
}
@Test
public void MigrateCommandTest() throws ConfigurationException, Ovm3ResourceException {
Ovm3Configuration configuration = new Ovm3Configuration(configTest.getParams());
hypervisor = support.prepare(configTest.getParams());
MigrateCommand cmd = new MigrateCommand(xen.getVmName(), configuration.getAgentIp(), false, hyperTest.createVm(xen.getVmName()), false);
Answer ra = hypervisor.executeRequest(cmd);
results.basicBooleanTest(ra.getResult());
}
}