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