Change in vdsm[master]: tests: improve vmstats.disks coverage
fromani at redhat.com
fromani at redhat.com
Wed Dec 16 14:22:23 UTC 2015
Francesco Romani has uploaded a new change for review.
Change subject: tests: improve vmstats.disks coverage
......................................................................
tests: improve vmstats.disks coverage
Adds tests to make sure that vmstats.disks() path is well covered.
Change-Id: I931d080d66b8a6087b05f01fbdce8fee0cd99039
Signed-off-by: Francesco Romani <fromani at redhat.com>
---
M tests/vmStatsTests.py
1 file changed, 78 insertions(+), 5 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/98/50598/1
diff --git a/tests/vmStatsTests.py b/tests/vmStatsTests.py
index 78e9998..aadcf67 100644
--- a/tests/vmStatsTests.py
+++ b/tests/vmStatsTests.py
@@ -18,6 +18,7 @@
# Refer to the README and COPYING files for full details of the license
#
+import copy
import uuid
from virt import vmstats
@@ -234,13 +235,15 @@
def assertNameIsAt(self, stats, group, idx, name):
self.assertEqual(stats['%s.%d.name' % (group, idx)], name)
- def assertStatsHaveKeys(self, stats):
- for key in self._EXPECTED_KEYS:
+ def assertStatsHaveKeys(self, stats, keys=None):
+ if keys is None:
+ keys = self._EXPECTED_KEYS
+ for key in keys:
self.assertIn(key, stats)
- def assertRepeatedStatsHaveKeys(self, items, stats):
+ def assertRepeatedStatsHaveKeys(self, items, stats, keys=None):
for item in items:
- self.assertStatsHaveKeys(stats[item.name])
+ self.assertStatsHaveKeys(stats[item.name], keys)
@expandPermutations
@@ -383,17 +386,87 @@
'writtenBytes',
)
+ # this is what old VDSM did. No clear rationale.
+ _MINIMAL_KEYS = (
+ 'apparentsize',
+ 'flushLatency',
+ 'imageID',
+ 'readBytes',
+ 'readLatency',
+ 'readOps',
+ 'truesize',
+ 'writeLatency',
+ 'writeOps',
+ 'writtenBytes',
+ )
+
def test_disk_all_keys_present(self):
interval = 10 # seconds
drives = (FakeDrive(name='hdc', size=700 * 1024 * 1024),)
testvm = FakeVM(drives=drives)
stats = {}
+ stats_before = copy.deepcopy(self.bulk_stats)
+ stats_after = copy.deepcopy(self.bulk_stats)
+ stats_before['block.0.rd.reqs'] = 0
+ stats_after['block.0.rd.reqs'] = 1024
+ stats_before['block.0.rd.bytes'] = 0
+ stats_after['block.0.rd.bytes'] = 128 * 1024
vmstats.disks(testvm, stats,
- self.bulk_stats, self.bulk_stats,
+ stats_before, stats_after,
interval)
self.assertRepeatedStatsHaveKeys(drives, stats['disks'])
+ def test_disk_missing_rate(self):
+ partial_stats = self._drop_stats(
+ ('block.0.rd.bytes', 'block.1.rd.bytes',
+ 'block.0.wr.bytes', 'block.1.wr.bytes'))
+
+ interval = 10 # seconds
+ drives = (FakeDrive(name='hdc', size=700 * 1024 * 1024),)
+ testvm = FakeVM(drives=drives)
+
+ stats = {}
+ self.assertNotRaises(vmstats.disks,
+ testvm, stats,
+ partial_stats, partial_stats,
+ interval)
+
+ def test_disk_missing_latency(self):
+ partial_stats = self._drop_stats(
+ ('block.0.rd.times', 'block.1.rd.times',
+ 'block.0.wr.reqs', 'block.1.wr.reqs'))
+
+ interval = 10 # seconds
+ drives = (FakeDrive(name='hdc', size=700 * 1024 * 1024),)
+ testvm = FakeVM(drives=drives)
+
+ stats = {}
+ self.assertNotRaises(vmstats.disks,
+ testvm, stats,
+ partial_stats, partial_stats,
+ interval)
+
+ def test_interval_zero(self):
+ interval = 0 # seconds
+ drives = (FakeDrive(name='hdc', size=700 * 1024 * 1024),)
+ testvm = FakeVM(drives=drives)
+
+ stats = {}
+ self.assertNotRaises(vmstats.disks,
+ testvm, stats,
+ self.bulk_stats, self.bulk_stats,
+ interval)
+ self.assertRepeatedStatsHaveKeys(drives,
+ stats['disks'],
+ self._MINIMAL_KEYS)
+
+ def _drop_stats(self, keys):
+ partial_stats = copy.deepcopy(self.bulk_stats)
+ for key in keys:
+ del partial_stats[key]
+ return partial_stats
+
# helpers
--
To view, visit https://gerrit.ovirt.org/50598
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I931d080d66b8a6087b05f01fbdce8fee0cd99039
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Francesco Romani <fromani at redhat.com>
More information about the vdsm-patches
mailing list