From d41efc420aeebc18b3f87fb56470cab21b612546 Mon Sep 17 00:00:00 2001 From: Thomas Thrainer <thomasth@google.com> Date: Mon, 29 Apr 2013 13:51:21 +0200 Subject: [PATCH] Add test for empty version in /proc/drbd The previous patch removed a (rather implicit) test for /proc/drbd not containing a version line. This adds an explicit test for this case. Signed-off-by: Thomas Thrainer <thomasth@google.com> Signed-off-by: Michele Tartara <mtartara@google.com> Reviewed-by: Michele Tartara <mtartara@google.com> --- Makefile.am | 1 + test/data/proc_drbd80-emptyversion.txt | 9 +++++++++ test/hs/Test/Ganeti/Block/Drbd/Parser.hs | 23 +++++++++++++++++++++++ test/py/ganeti.block.bdev_unittest.py | 8 ++++++++ 4 files changed, 41 insertions(+) create mode 100644 test/data/proc_drbd80-emptyversion.txt diff --git a/Makefile.am b/Makefile.am index 0d308c0df..aa61abb7d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1093,6 +1093,7 @@ TEST_FILES = \ test/data/ovfdata/wrong_xml.ovf \ test/data/proc_drbd8.txt \ test/data/proc_drbd80-emptyline.txt \ + test/data/proc_drbd80-emptyversion.txt \ test/data/proc_drbd83.txt \ test/data/proc_drbd83_sync.txt \ test/data/proc_drbd83_sync_want.txt \ diff --git a/test/data/proc_drbd80-emptyversion.txt b/test/data/proc_drbd80-emptyversion.txt new file mode 100644 index 000000000..cefd15ff0 --- /dev/null +++ b/test/data/proc_drbd80-emptyversion.txt @@ -0,0 +1,9 @@ +GIT-hash: 5c9f89594553e32adb87d9638dce591782f947e3 build by root@node1.example.com, 2009-05-22 12:47:52 + 0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r--- + ns:78728316 nr:0 dw:77675644 dr:1277039 al:254 bm:270 lo:0 pe:0 ua:0 ap:0 + resync: used:0/61 hits:65657 misses:135 starving:0 dirty:0 changed:135 + act_log: used:0/257 hits:11378843 misses:254 starving:0 dirty:0 changed:254 + 1: cs:Unconfigured + 2: cs:Unconfigured + 5: cs:Unconfigured + 6: cs:Unconfigured diff --git a/test/hs/Test/Ganeti/Block/Drbd/Parser.hs b/test/hs/Test/Ganeti/Block/Drbd/Parser.hs index f9e57cfb8..3b3b74fcf 100644 --- a/test/hs/Test/Ganeti/Block/Drbd/Parser.hs +++ b/test/hs/Test/Ganeti/Block/Drbd/Parser.hs @@ -70,6 +70,28 @@ case_drbd80_emptyline = testFile "proc_drbd80-emptyline.txt" $ UnconfiguredDevice 6 ] +-- | Test a DRBD 8.0 file with an empty version. +case_drbd80_emptyversion :: Assertion +case_drbd80_emptyversion = testFile "proc_drbd80-emptyversion.txt" $ + DRBDStatus + ( VersionInfo Nothing Nothing Nothing Nothing + (Just "5c9f89594553e32adb87d9638dce591782f947e3") + (Just "root@node1.example.com, 2009-05-22 12:47:52") + ) + [ DeviceInfo 0 Connected (LocalRemote Primary Secondary) + (LocalRemote UpToDate UpToDate) 'C' "r---" + (PerfIndicators 78728316 0 77675644 1277039 254 270 0 0 0 0 + Nothing Nothing Nothing) + Nothing + (Just $ AdditionalInfo 0 61 65657 135 0 0 135) + (Just $ AdditionalInfo 0 257 11378843 254 0 0 254) + Nothing, + UnconfiguredDevice 1, + UnconfiguredDevice 2, + UnconfiguredDevice 5, + UnconfiguredDevice 6 + ] + -- | Test a DRBD 8.3 file with a NULL caracter inside. case_drbd83_sync_krnl2_6_39 :: Assertion case_drbd83_sync_krnl2_6_39 = testFile "proc_drbd83_sync_krnl2.6.39.txt" $ @@ -381,6 +403,7 @@ case_commaInt_non_triplet = testCommaInt "61,736,12" 61736 testSuite "Block/Drbd/Parser" [ 'case_drbd80_emptyline, + 'case_drbd80_emptyversion, 'case_drbd83_sync_krnl2_6_39, 'case_drbd83_sync, 'case_drbd83_sync_want, diff --git a/test/py/ganeti.block.bdev_unittest.py b/test/py/ganeti.block.bdev_unittest.py index 486768356..279ffff25 100755 --- a/test/py/ganeti.block.bdev_unittest.py +++ b/test/py/ganeti.block.bdev_unittest.py @@ -246,6 +246,9 @@ class TestDRBD8Status(testutils.GanetiTestCase): proc83_sync_krnl_data = \ testutils.TestDataFilename("proc_drbd83_sync_krnl2.6.39.txt") + self.proc80ev_data = \ + testutils.TestDataFilename("proc_drbd80-emptyversion.txt") + self.drbd_info = drbd.DRBD8Info.CreateFromFile(filename=proc_data) self.drbd_info80e = drbd.DRBD8Info.CreateFromFile(filename=proc80e_data) self.drbd_info83 = drbd.DRBD8Info.CreateFromFile(filename=proc83_data) @@ -342,6 +345,11 @@ class TestDRBD8Status(testutils.GanetiTestCase): self.failUnless(stats.is_in_resync) self.failUnless(stats.sync_percent is not None) + def testDRBDEmptyVersion(self): + self.assertRaises(errors.BlockDeviceError, + drbd.DRBD8Info.CreateFromFile, + filename=self.proc80ev_data) + class TestRADOSBlockDevice(testutils.GanetiTestCase): def setUp(self): -- GitLab