mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-9128: Testcase to verify if snapshot_store_ref table stores actual size of back snapshot in secondary storage
This commit is contained in:
parent
3d9919ecfb
commit
f8c2c955e6
@ -31,10 +31,13 @@ from marvin.lib.base import (Account,
|
|||||||
)
|
)
|
||||||
from marvin.lib.common import (get_domain,
|
from marvin.lib.common import (get_domain,
|
||||||
get_zone,
|
get_zone,
|
||||||
get_template
|
get_template,
|
||||||
|
createChecksum,
|
||||||
|
list_volumes
|
||||||
)
|
)
|
||||||
|
|
||||||
from marvin.codes import (BACKED_UP, PASS, FAIL)
|
from marvin.codes import (BACKED_UP, PASS, FAIL, ROOT)
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
class TestStorageSnapshotsLimits(cloudstackTestCase):
|
class TestStorageSnapshotsLimits(cloudstackTestCase):
|
||||||
@ -99,6 +102,7 @@ class TestStorageSnapshotsLimits(cloudstackTestCase):
|
|||||||
domainid=cls.account.domainid,
|
domainid=cls.account.domainid,
|
||||||
serviceofferingid=cls.service_offering.id,
|
serviceofferingid=cls.service_offering.id,
|
||||||
zoneid=cls.zone.id,
|
zoneid=cls.zone.id,
|
||||||
|
mode=cls.zone.networktype
|
||||||
)
|
)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -137,7 +141,6 @@ class TestStorageSnapshotsLimits(cloudstackTestCase):
|
|||||||
PASS,
|
PASS,
|
||||||
"DATA Volume List Validation Failed")
|
"DATA Volume List Validation Failed")
|
||||||
|
|
||||||
if data_volumes_list:
|
|
||||||
self.vm.detach_volume(
|
self.vm.detach_volume(
|
||||||
self.userapiclient,
|
self.userapiclient,
|
||||||
data_volumes_list[0]
|
data_volumes_list[0]
|
||||||
@ -359,3 +362,129 @@ class TestStorageSnapshotsLimits(cloudstackTestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@attr(tags=["advanced", "basic"], required_hardware="true")
|
||||||
|
def test_02_snapshot_size_check(self):
|
||||||
|
""" Check Snapshots size in database
|
||||||
|
1. Create file on ROOT disk of deployed VM.
|
||||||
|
2. Create Snapshot of ROOT disk.
|
||||||
|
3. Check if physiacal_size parameter of snapshot_store_ref table
|
||||||
|
has physical size of snapshot
|
||||||
|
"""
|
||||||
|
if self.hypervisor.lower() not in ["xenserver", "vmware"]:
|
||||||
|
self.skipTest("Test not to be run on %s" % self.hypervisor)
|
||||||
|
|
||||||
|
root_volumes_list = list_volumes(
|
||||||
|
self.apiclient,
|
||||||
|
virtualmachineid=self.vm.id,
|
||||||
|
type=ROOT,
|
||||||
|
listall=True
|
||||||
|
)
|
||||||
|
|
||||||
|
status = validateList(root_volumes_list)
|
||||||
|
self.assertEqual(
|
||||||
|
status[0],
|
||||||
|
PASS,
|
||||||
|
"Check listVolumes response for ROOT Disk")
|
||||||
|
|
||||||
|
root_volume = root_volumes_list[0]
|
||||||
|
|
||||||
|
# Get Secondary Storage Value from Database
|
||||||
|
qryresult_before_snapshot = self.dbclient.execute(
|
||||||
|
" select id, account_name, secondaryStorageTotal\
|
||||||
|
from account_view where account_name = '%s';" %
|
||||||
|
self.account.name)
|
||||||
|
|
||||||
|
self.assertNotEqual(
|
||||||
|
len(qryresult_before_snapshot),
|
||||||
|
0,
|
||||||
|
"Check sql query to return SecondaryStorageTotal of account")
|
||||||
|
|
||||||
|
storage_qry_result_old = qryresult_before_snapshot[0]
|
||||||
|
secondary_storage_old = storage_qry_result_old[2]
|
||||||
|
|
||||||
|
createChecksum(
|
||||||
|
self.testdata,
|
||||||
|
self.vm,
|
||||||
|
root_volume,
|
||||||
|
"rootdiskdevice")
|
||||||
|
|
||||||
|
time.sleep(30)
|
||||||
|
|
||||||
|
root_vol_snapshot = Snapshot.create(
|
||||||
|
self.apiclient,
|
||||||
|
root_volume.id)
|
||||||
|
|
||||||
|
snapshots_list = Snapshot.list(self.apiclient,
|
||||||
|
id=root_vol_snapshot.id)
|
||||||
|
|
||||||
|
status = validateList(snapshots_list)
|
||||||
|
self.assertEqual(status[0], PASS, "Check listSnapshots response")
|
||||||
|
# Verify Snapshot state
|
||||||
|
self.assertEqual(
|
||||||
|
snapshots_list[0].state.lower() in [
|
||||||
|
BACKED_UP,
|
||||||
|
],
|
||||||
|
True,
|
||||||
|
"Snapshot state is not as expected. It is %s" %
|
||||||
|
snapshots_list[0].state
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
snapshots_list[0].volumeid,
|
||||||
|
root_volume.id,
|
||||||
|
"Snapshot volume id is not matching with the vm's volume id")
|
||||||
|
|
||||||
|
qryresult_snp_id = self.dbclient.execute(
|
||||||
|
"select id\
|
||||||
|
from snapshots where uuid = '%s';" %
|
||||||
|
snapshots_list[0].id)
|
||||||
|
|
||||||
|
self.assertNotEqual(
|
||||||
|
len(qryresult_snp_id),
|
||||||
|
0,
|
||||||
|
"Check sql query to return physical size of the snapshot")
|
||||||
|
|
||||||
|
snp_id_result = qryresult_snp_id[0]
|
||||||
|
snp_id = snp_id_result[0]
|
||||||
|
|
||||||
|
qryresult_physical_size = self.dbclient.execute(
|
||||||
|
" select id, store_id, physical_size\
|
||||||
|
from snapshot_store_ref where snapshot_id = '%s' \
|
||||||
|
and store_role='Image';" %
|
||||||
|
snp_id)
|
||||||
|
|
||||||
|
self.assertNotEqual(
|
||||||
|
len(qryresult_physical_size),
|
||||||
|
0,
|
||||||
|
"Check sql query to return SecondaryStorageTotal of account")
|
||||||
|
|
||||||
|
snapshot_physical_size_result = qryresult_physical_size[0]
|
||||||
|
snapshot_physical_size = snapshot_physical_size_result[
|
||||||
|
2]
|
||||||
|
|
||||||
|
# Step 3
|
||||||
|
qryresult_after_snapshot = self.dbclient.execute(
|
||||||
|
" select id, account_name, secondaryStorageTotal\
|
||||||
|
from account_view where account_name = '%s';" %
|
||||||
|
self.account.name)
|
||||||
|
self.assertNotEqual(
|
||||||
|
len(qryresult_after_snapshot),
|
||||||
|
0,
|
||||||
|
"Check sql query to return SecondaryStorageTotal of account")
|
||||||
|
|
||||||
|
storage_qry_result_from_database = qryresult_after_snapshot[0]
|
||||||
|
secondary_storage_new = storage_qry_result_from_database[
|
||||||
|
2]
|
||||||
|
|
||||||
|
secondary_storage_after_snapshot = secondary_storage_new - \
|
||||||
|
secondary_storage_old
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
snapshot_physical_size,
|
||||||
|
secondary_storage_after_snapshot,
|
||||||
|
"Check if physical_size attribute of snapshot_store_ref table \
|
||||||
|
stores correct value"
|
||||||
|
)
|
||||||
|
|
||||||
|
return
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user