[blivet:master 02/11] Add a few small tests for mdexamine

mulhern amulhern at redhat.com
Thu Jul 3 15:19:41 UTC 2014


Signed-off-by: mulhern <amulhern at redhat.com>
---
 tests/devicelibs_test/mdraid_test.py | 92 +++++++++++++++++++++++++++++++++++-
 1 file changed, 90 insertions(+), 2 deletions(-)

diff --git a/tests/devicelibs_test/mdraid_test.py b/tests/devicelibs_test/mdraid_test.py
index cba8487..760643f 100755
--- a/tests/devicelibs_test/mdraid_test.py
+++ b/tests/devicelibs_test/mdraid_test.py
@@ -51,6 +51,35 @@ class MDRaidTestCase(unittest.TestCase):
 
 class MDRaidAsRootTestCase(loopbackedtestcase.LoopBackedTestCase):
 
+    names_0 = [
+      'DEVICE',
+      'MD_DEVICES',
+      'MD_EVENTS',
+      'MD_LEVEL',
+      'MD_UPDATE_TIME',
+      'MD_UUID'
+    ]
+
+    names_1 = [
+       'DEVICE',
+       'MD_ARRAY_SIZE',
+       'MD_DEV_UUID',
+       'MD_DEVICES',
+       'MD_EVENTS',
+       'MD_LEVEL',
+       'MD_METADATA',
+       'MD_NAME',
+       'MD_UPDATE_TIME',
+       'MD_UUID'
+    ]
+
+    names_container = [
+       'MD_DEVICES',
+       'MD_LEVEL',
+       'MD_METADATA',
+       'MD_UUID'
+    ]
+
     def __init__(self, methodName='runTest'):
         """Set up the structure of the mdraid array."""
         super(MDRaidAsRootTestCase, self).__init__(methodName=methodName)
@@ -66,14 +95,73 @@ class MDRaidAsRootTestCase(loopbackedtestcase.LoopBackedTestCase):
 
         super(MDRaidAsRootTestCase, self).tearDown()
 
+    def testMDExamineMDRaidArray(self):
+        mdraid.mdcreate(self._dev_name, raid.RAID1, self.loopDevices)
+        # wait for raid to settle
+        time.sleep(2)
+
+        # examining the array itself yield no data
+        info = mdraid.mdexamine(self._dev_name)
+        self.assertEqual(info, {})
+
+    def testMDExamineNonMDRaid(self):
+        # invoking mdexamine on a device that is not an array member yields {}
+        info = mdraid.mdexamine(self.loopDevices[0])
+        self.assertEqual(info, {})
+
+    def _testMDExamine(self, names, metadataVersion=None, level=None):
+        """ Test mdexamine for a specified metadataVersion.
+
+            :param list names: mdexamine's expected list of names to return
+            :param str metadataVersion: the metadata version for the array
+            :param object level: any valid RAID level descriptor
+
+            Verifies that:
+              - exactly the predicted names are returned by mdexamine
+              - RAID level and number of devices are correct
+        """
+        level = mdraid.RAID_levels.raidLevel(level or raid.RAID1)
+        mdraid.mdcreate(self._dev_name, level, self.loopDevices, metadataVer=metadataVersion)
+        # wait for raid to settle
+        time.sleep(2)
+
+        info = mdraid.mdexamine(self.loopDevices[0])
+
+        # info contains values for exactly names
+        for n in names:
+            self.assertIn(n, info, msg="name '%s' not in info" % n)
+
+        for n in info.keys():
+            self.assertIn(n, names, msg="unexpected name '%s' in info" % n)
+
+        # check names with predictable values
+        self.assertEqual(info['MD_DEVICES'], '2')
+        self.assertEqual(info['MD_LEVEL'], str(level))
+
+    def testMDExamineContainerDefault(self):
+        self._testMDExamine(self.names_container, level="container")
+
+    def testMDExamineDefault(self):
+        self._testMDExamine(self.names_1)
+
+    def testMDExamine0(self):
+        self._testMDExamine(self.names_0, metadataVersion='0')
+
+    def testMDExamine0_90(self):
+        self._testMDExamine(self.names_0, metadataVersion='0.90')
+
+    def testMDExamine1(self):
+        self._testMDExamine(self.names_1, metadataVersion='1')
+
+    def testMDExamine1_2(self):
+        self._testMDExamine(self.names_1, metadataVersion='1.2')
+
     def testMDRaidAsRoot(self):
         ##
         ## mdcreate
         ##
         # pass
         self.assertEqual(mdraid.mdcreate(self._dev_name, raid.RAID1, self.loopDevices), None)
-        # wait for raid to settle
-        time.sleep(2)
 
         # fail
         self.assertRaises(MDRaidError, mdraid.mdcreate, "/dev/md1", "raid1", ["/not/existing/dev0", "/not/existing/dev1"])
-- 
1.9.3



More information about the anaconda-patches mailing list