Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 42 additions & 9 deletions test/integration/smoke/test_metrics_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,23 @@ def setUpClass(cls):
domainid=cls.domain.id
)
cls._cleanup.append(cls.account)
cls.network = None
if cls.zone.networktype.lower() == 'advanced':
cls.network_offering = NetworkOffering.create(
cls.apiclient,
cls.services["l2-network_offering"]
)
cls._cleanup.append(cls.network_offering)
cls.network_offering.update(cls.apiclient, state="enabled")
cls.network = Network.create(
cls.apiclient,
cls.services["l2-network"],
accountid=cls.account.name,
domainid=cls.account.domainid,
networkofferingid=cls.network_offering.id,
zoneid=cls.zone.id
)
cls._cleanup.append(cls.network)
cls.hypervisorNotSupported = True
if cls.hypervisor.lower() != 'simulator':
cls.hypervisorNotSupported = False
Expand Down Expand Up @@ -207,6 +224,9 @@ def run_list_vm_metrics_test(self, is_user):
self.small_virtual_machine = VirtualMachine.create(
apiclient,
self.services["virtual_machine"],
accountid=self.account.name,
domainid=self.account.domainid,
networkids=[self.network.id] if self.network else None,
serviceofferingid=self.service_offering.id,
templateid=self.template.id,
zoneid=self.zone.id
Expand Down Expand Up @@ -466,19 +486,19 @@ def test_list_vms_metrics_history(self):
self.small_virtual_machine = VirtualMachine.create(
self.apiclient,
self.services["virtual_machine"],
accountid=self.account.name,
domainid=self.account.domainid,
networkids=[self.network.id] if self.network else None,
serviceofferingid=self.service_offering.id,
templateid=self.template.id,
zoneid=self.zone.id
)
self.cleanup.append(self.small_virtual_machine)

# Wait for 2 minutes
time.sleep(120)

cmd = listVirtualMachinesUsageHistory.listVirtualMachinesUsageHistoryCmd()
cmd.id = self.small_virtual_machine.id

result = self.apiclient.listVirtualMachinesUsageHistory(cmd)[0]
result = self.wait_for_stats(lambda: self.apiclient.listVirtualMachinesUsageHistory(cmd))

self.assertEqual(result.id, self.small_virtual_machine.id)
self.assertTrue(hasattr(result, 'stats'))
Expand Down Expand Up @@ -510,6 +530,9 @@ def test_list_volumes_metrics_history(self):
self.small_virtual_machine = VirtualMachine.create(
self.apiclient,
self.services["virtual_machine"],
accountid=self.account.name,
domainid=self.account.domainid,
networkids=[self.network.id] if self.network else None,
serviceofferingid=self.service_offering.id,
templateid=self.template.id,
zoneid=self.zone.id
Expand All @@ -522,17 +545,15 @@ def test_list_volumes_metrics_history(self):
self.skipTest("Skipping test because volume metrics doesn't work on hypervisor\
%s, %s" % (currentHost.hypervisor, currentHost.hypervisorversion))

# Wait for 2 minutes
time.sleep(120)

volume = Volume.list(
self.apiclient,
virtualmachineid=self.small_virtual_machine.id)[0]
virtualmachineid=self.small_virtual_machine.id,
listall=True)[0]

cmd = listVolumesUsageHistory.listVolumesUsageHistoryCmd()
cmd.id = volume.id

result = self.apiclient.listVolumesUsageHistory(cmd)[0]
result = self.wait_for_stats(lambda: self.apiclient.listVolumesUsageHistory(cmd))
self.assertEqual(result.id, volume.id)
self.assertTrue(hasattr(result, 'stats'))
self.assertTrue(type(result.stats) == list and len(result.stats) > 0)
Expand All @@ -547,6 +568,18 @@ def test_list_volumes_metrics_history(self):

return

def wait_for_stats(self, list_usage_history):
def stats_collected():
response = list_usage_history()
if isinstance(response, list) and len(response) > 0 and \
isinstance(getattr(response[0], 'stats', None), list) and len(response[0].stats) > 0:
return True, response[0]
return False, None

collected, result = wait_until(15, 20, stats_collected)
self.assertTrue(collected, "No usage history stats were collected within 5 minutes")
return result

def validate_vm_stats(self, stats):
self.assertTrue(hasattr(stats, 'cpuused'))
self.assertTrue(hasattr(stats, 'diskiopstotal'))
Expand Down
30 changes: 30 additions & 0 deletions test/integration/smoke/test_vm_deployment_planner.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
from marvin.cloudstackTestCase import cloudstackTestCase
from marvin.lib.base import (Account,
ServiceOffering,
NetworkOffering,
Network,
Host, Pod, Cluster)
from marvin.lib.common import (get_domain,
get_zone,
Expand Down Expand Up @@ -61,10 +63,33 @@ def setUpClass(cls):
cls.service_offering
]

cls.network_offering = NetworkOffering.create(
cls.apiclient,
cls.services["l2-network_offering"]
)
cls._cleanup.append(cls.network_offering)
cls.network_offering.update(cls.apiclient, state="enabled")

cls.network = Network.create(
cls.apiclient,
cls.services["l2-network"],
accountid=cls.account.name,
domainid=cls.account.domainid,
networkofferingid=cls.network_offering.id,
zoneid=cls.zone.id
)
cls._cleanup.append(cls.network)

@classmethod
def tearDownClass(cls):
super(TestVMDeploymentPlanner, cls).tearDownClass()

def set_owner(self, cmd):
cmd.account = self.account.name
cmd.domainid = self.account.domainid
cmd.networkids = [self.network.id]
return cmd

def deploy_vm(self, destination_id):
cmd = deployVirtualMachine.deployVirtualMachineCmd()
template = get_template(
Expand All @@ -75,6 +100,7 @@ def deploy_vm(self, destination_id):
cmd.templateid = template.id
cmd.serviceofferingid = self.service_offering.id
cmd.hostid = destination_id
self.set_owner(cmd)
return self.apiclient.deployVirtualMachine(cmd)

def destroy_vm(self, vm_id):
Expand Down Expand Up @@ -123,6 +149,7 @@ def test_02_deploy_vm_on_specific_cluster(self):
cmd.serviceofferingid = self.service_offering.id
cmd.templateid = template.id
cmd.clusterid = target_id
self.set_owner(cmd)
vm = self.apiclient.deployVirtualMachine(cmd)

vm_host = Host.list(self.apiclient,
Expand Down Expand Up @@ -160,6 +187,7 @@ def test_03_deploy_vm_on_specific_pod(self):

cmd.templateid = template.id
cmd.podid = target_pod.id
self.set_owner(cmd)
vm = self.apiclient.deployVirtualMachine(cmd)

vm_host = Host.list(self.apiclient,
Expand Down Expand Up @@ -200,6 +228,7 @@ def test_04_deploy_vm_on_host_override_pod_and_cluster(self):
cmd.podid = pod.id
cmd.clusterid = clusters[1].id if len(clusters) > 1 else clusters[0].id
cmd.hostid = host.id
self.set_owner(cmd)

vm = self.apiclient.deployVirtualMachine(cmd)

Expand Down Expand Up @@ -235,6 +264,7 @@ def test_05_deploy_vm_on_cluster_override_pod(self):
# Add optional deployment params
cmd.podid = pod.id
cmd.clusterid = clusters[0].id
self.set_owner(cmd)

vm = self.apiclient.deployVirtualMachine(cmd)

Expand Down