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