Change in vdsm[master]: tests: extend coverage for vmstats.disks()

fromani at redhat.com fromani at redhat.com
Thu Jan 14 14:35:44 UTC 2016


Francesco Romani has uploaded a new change for review.

Change subject: tests: extend coverage for vmstats.disks()
......................................................................

tests: extend coverage for vmstats.disks()

This patch adds tests to cover the existing
behaviour of vmstats.disks().

Change-Id: I8a257399988ae30955f0270f924a9a3a8e8a50b8
Backport-To: 3.6
Bug-Url: https://bugzilla.redhat.com/1281337
Signed-off-by: Francesco Romani <fromani at redhat.com>
---
M tests/vmStatsTests.py
1 file changed, 52 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/54/51854/1

diff --git a/tests/vmStatsTests.py b/tests/vmStatsTests.py
index 78e9998..7eb5e44 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,13 @@
     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):
+        for key in keys:
             self.assertIn(key, stats)
 
-    def assertRepeatedStatsHaveKeys(self, items, stats):
+    def assertRepeatedStatsHaveKeys(self, items, stats, keys):
         for item in items:
-            self.assertStatsHaveKeys(stats[item.name])
+            self.assertStatsHaveKeys(stats[item.name], keys)
 
 
 @expandPermutations
@@ -319,7 +320,7 @@
             self.bulk_stats, 0,
             self.interval)
 
-        self.assertStatsHaveKeys(stats)
+        self.assertStatsHaveKeys(stats, self._EXPECTED_KEYS)
 
     def test_networks_have_all_keys(self):
         nics = (
@@ -332,7 +333,8 @@
         vmstats.networks(vm, stats,
                          self.bulk_stats, self.bulk_stats,
                          self.interval)
-        self.assertRepeatedStatsHaveKeys(nics, stats['network'])
+        self.assertRepeatedStatsHaveKeys(nics, stats['network'],
+                                         self._EXPECTED_KEYS)
 
     def test_networks_good_interval(self):
         nics = (
@@ -367,6 +369,8 @@
 class DiskStatsTests(VmStatsTestCase):
 
     # TODO: grab them from the schema
+    # Note: these are the minimal set Vdsm exported,
+    # no clear rationale for this subset.
     _EXPECTED_KEYS = (
         'truesize',
         'apparentsize',
@@ -389,14 +393,54 @@
         testvm = FakeVM(drives=drives)
 
         stats = {}
+        stats_before = copy.deepcopy(self.bulk_stats)
+        stats_after = copy.deepcopy(self.bulk_stats)
+        _ensure_delta(stats_before, stats_after,
+                      'block.0.rd.reqs', 1024)
+        _ensure_delta(stats_before, 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'])
+        self.assertRepeatedStatsHaveKeys(drives, stats['disks'],
+                                         self._EXPECTED_KEYS)
+
+
+    def test_interval_zero(self):
+        interval = 0  # seconds
+        # with zero interval, we won't have {read,write}Rate
+        expected_keys = tuple(k for k in self._EXPECTED_KEYS
+                              if k not in ('readRate', 'writeRate'))
+        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'],
+                                         expected_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
 
+def _ensure_delta(stats_before, stats_after, key, delta):
+    """
+    Set stats_before[key] and stats_after[key] so that
+    stats_after[key] - stats_before[key] == abs(delta).
+    """
+    stats_before[key] = 0
+    stats_after[key] = abs(delta)
+
+
 class FakeNic(object):
 
     def __init__(self, name, model, mac_addr):


-- 
To view, visit https://gerrit.ovirt.org/51854
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8a257399988ae30955f0270f924a9a3a8e8a50b8
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