LGTM Thanks, Guido
On Fri, Feb 8, 2013 at 5:36 PM, Stratos Psomadakis <[email protected]> wrote: > Add unit tests for the RADOSBlockDevice JSON output parsing function, > and modify the unit tests for the plain output parsing function to > work with the new code. > > Signed-off-by: Stratos Psomadakis <[email protected]> > --- > Makefile.am | 14 ++++ > test/data/bdev-rbd/json_output_empty.txt | 1 + > test/data/bdev-rbd/json_output_extra_matches.txt | 1 + > test/data/bdev-rbd/json_output_no_matches.txt | 1 + > test/data/bdev-rbd/json_output_ok.txt | 1 + > .../bdev-rbd/plain_output_new_extra_matches.txt | 5 ++ > test/data/bdev-rbd/plain_output_new_no_matches.txt | 3 + > test/data/bdev-rbd/plain_output_new_ok.txt | 3 + > test/data/bdev-rbd/plain_output_old_empty.txt | 1 + > .../bdev-rbd/plain_output_old_extra_matches.txt | 5 ++ > test/data/bdev-rbd/plain_output_old_no_matches.txt | 3 + > test/data/bdev-rbd/plain_output_old_ok.txt | 4 + > test/py/ganeti.bdev_unittest.py | 88 > ++++++++++++++------ > 13 files changed, 103 insertions(+), 27 deletions(-) > create mode 100644 test/data/bdev-rbd/json_output_empty.txt > create mode 100644 test/data/bdev-rbd/json_output_extra_matches.txt > create mode 100644 test/data/bdev-rbd/json_output_no_matches.txt > create mode 100644 test/data/bdev-rbd/json_output_ok.txt > create mode 100644 test/data/bdev-rbd/plain_output_new_empty.txt > create mode 100644 test/data/bdev-rbd/plain_output_new_extra_matches.txt > create mode 100644 test/data/bdev-rbd/plain_output_new_no_matches.txt > create mode 100644 test/data/bdev-rbd/plain_output_new_ok.txt > create mode 100644 test/data/bdev-rbd/plain_output_old_empty.txt > create mode 100644 test/data/bdev-rbd/plain_output_old_extra_matches.txt > create mode 100644 test/data/bdev-rbd/plain_output_old_no_matches.txt > create mode 100644 test/data/bdev-rbd/plain_output_old_ok.txt > > diff --git a/Makefile.am b/Makefile.am > index 2b20bf0..f05a58c 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -106,6 +106,7 @@ DIRS = \ > qa \ > test \ > test/data \ > + test/data/bdev-rbd \ > test/data/ovfdata \ > test/data/ovfdata/other \ > test/py \ > @@ -986,6 +987,19 @@ TEST_FILES = \ > test/data/bdev-drbd-disk.txt \ > test/data/bdev-drbd-net-ip4.txt \ > test/data/bdev-drbd-net-ip6.txt \ > + test/data/bdev-rbd/json_output_empty.txt \ > + test/data/bdev-rbd/json_output_extra_matches.txt \ > + test/data/bdev-rbd/json_output_no_matches.txt \ > + test/data/bdev-rbd/json_output_ok.txt \ > + test/data/bdev-rbd/plain_output_new_empty.txt \ > + test/data/bdev-rbd/plain_output_new_extra_matches.txt \ > + test/data/bdev-rbd/plain_output_new_no_matches.txt \ > + test/data/bdev-rbd/plain_output_new_ok.txt \ > + test/data/bdev-rbd/plain_output_old_empty.txt \ > + test/data/bdev-rbd/plain_output_old_extra_matches.txt \ > + test/data/bdev-rbd/plain_output_old_no_matches.txt \ > + test/data/bdev-rbd/plain_output_old_ok.txt \ > + test/data/bdev-rbd/output_invalid.txt \ > test/data/cert1.pem \ > test/data/cert2.pem \ > test/data/instance-minor-pairing.txt \ > diff --git a/test/data/bdev-rbd/json_output_empty.txt > b/test/data/bdev-rbd/json_output_empty.txt > new file mode 100644 > index 0000000..0967ef4 > --- /dev/null > +++ b/test/data/bdev-rbd/json_output_empty.txt > @@ -0,0 +1 @@ > +{} > diff --git a/test/data/bdev-rbd/json_output_extra_matches.txt > b/test/data/bdev-rbd/json_output_extra_matches.txt > new file mode 100644 > index 0000000..321c438 > --- /dev/null > +++ b/test/data/bdev-rbd/json_output_extra_matches.txt > @@ -0,0 +1 @@ > +{"4":{"pool":"rbd","name":"d7ab910a-4933-4ffe-88d0-faf2ce31390a.rbd.disk0","snap":"-","device":"\/dev\/rbd4"},"1":{"pool":"rbd","name":"b9e31bb3-4d4f-4a2c-bc63-207a0bc4b287.rbd.disk0","snap":"-","device":"\/dev\/rbd1"},"2":{"pool":"rbd","name":"abe7957a-ec96-490f-9c08-53b1c51cecf0.rbd.disk0","snap":"-","device":"\/dev\/rbd2"},"3":{"pool":"rbd","name":"d7ab910a-4933-4ffe-88d0-faf2ce31390a.rbd.disk0","snap":"-","device":"\/dev\/rbd3"}} > diff --git a/test/data/bdev-rbd/json_output_no_matches.txt > b/test/data/bdev-rbd/json_output_no_matches.txt > new file mode 100644 > index 0000000..a298788 > --- /dev/null > +++ b/test/data/bdev-rbd/json_output_no_matches.txt > @@ -0,0 +1 @@ > +{"1":{"pool":"rbd","name":"b9e31bb3-4d4f-4a2c-bc63-207a0bc4b287.rbd.disk0","snap":"-","device":"\/dev\/rbd1"},"2":{"pool":"rbd","name":"abe7957a-ec96-490f-9c08-53b1c51cecf0.rbd.disk0","snap":"-","device":"\/dev\/rbd2"}} > diff --git a/test/data/bdev-rbd/json_output_ok.txt > b/test/data/bdev-rbd/json_output_ok.txt > new file mode 100644 > index 0000000..0d5173f > --- /dev/null > +++ b/test/data/bdev-rbd/json_output_ok.txt > @@ -0,0 +1 @@ > +{"1":{"pool":"rbd","name":"b9e31bb3-4d4f-4a2c-bc63-207a0bc4b287.rbd.disk0","snap":"-","device":"\/dev\/rbd1"},"2":{"pool":"rbd","name":"abe7957a-ec96-490f-9c08-53b1c51cecf0.rbd.disk0","snap":"-","device":"\/dev\/rbd2"},"3":{"pool":"rbd","name":"d7ab910a-4933-4ffe-88d0-faf2ce31390a.rbd.disk0","snap":"-","device":"\/dev\/rbd3"}} > diff --git a/test/data/bdev-rbd/plain_output_new_empty.txt > b/test/data/bdev-rbd/plain_output_new_empty.txt > new file mode 100644 > index 0000000..e69de29 > diff --git a/test/data/bdev-rbd/plain_output_new_extra_matches.txt > b/test/data/bdev-rbd/plain_output_new_extra_matches.txt > new file mode 100644 > index 0000000..f7bc907 > --- /dev/null > +++ b/test/data/bdev-rbd/plain_output_new_extra_matches.txt > @@ -0,0 +1,5 @@ > +id pool image snap device > +4 rbd d7ab910a-4933-4ffe-88d0-faf2ce31390a.rbd.disk0 - /dev/rbd4 > +1 rbd b9e31bb3-4d4f-4a2c-bc63-207a0bc4b287.rbd.disk0 - /dev/rbd1 > +2 rbd abe7957a-ec96-490f-9c08-53b1c51cecf0.rbd.disk0 - /dev/rbd2 > +3 rbd d7ab910a-4933-4ffe-88d0-faf2ce31390a.rbd.disk0 - /dev/rbd3 > diff --git a/test/data/bdev-rbd/plain_output_new_no_matches.txt > b/test/data/bdev-rbd/plain_output_new_no_matches.txt > new file mode 100644 > index 0000000..bc126b3 > --- /dev/null > +++ b/test/data/bdev-rbd/plain_output_new_no_matches.txt > @@ -0,0 +1,3 @@ > +id pool image snap device > +1 rbd b9e31bb3-4d4f-4a2c-bc63-207a0bc4b287.rbd.disk0 - /dev/rbd1 > +2 rbd abe7957a-ec96-490f-9c08-53b1c51cecf0.rbd.disk0 - /dev/rbd2 > diff --git a/test/data/bdev-rbd/plain_output_new_ok.txt > b/test/data/bdev-rbd/plain_output_new_ok.txt > new file mode 100644 > index 0000000..bc25094 > --- /dev/null > +++ b/test/data/bdev-rbd/plain_output_new_ok.txt > @@ -0,0 +1,3 @@ > +1 rbd b9e31bb3-4d4f-4a2c-bc63-207a0bc4b287.rbd.disk0 - /dev/rbd1 > +2 rbd abe7957a-ec96-490f-9c08-53b1c51cecf0.rbd.disk0 - /dev/rbd2 > +3 rbd d7ab910a-4933-4ffe-88d0-faf2ce31390a.rbd.disk0 - /dev/rbd3 > diff --git a/test/data/bdev-rbd/plain_output_old_empty.txt > b/test/data/bdev-rbd/plain_output_old_empty.txt > new file mode 100644 > index 0000000..0bb19ea > --- /dev/null > +++ b/test/data/bdev-rbd/plain_output_old_empty.txt > @@ -0,0 +1 @@ > +id pool image snap device > diff --git a/test/data/bdev-rbd/plain_output_old_extra_matches.txt > b/test/data/bdev-rbd/plain_output_old_extra_matches.txt > new file mode 100644 > index 0000000..52848e4 > --- /dev/null > +++ b/test/data/bdev-rbd/plain_output_old_extra_matches.txt > @@ -0,0 +1,5 @@ > +id pool image snap device > +4 rbd d7ab910a-4933-4ffe-88d0-faf2ce31390a.rbd.disk0 - > /dev/rbd4 > +1 rbd b9e31bb3-4d4f-4a2c-bc63-207a0bc4b287.rbd.disk0 - > /dev/rbd1 > +2 rbd abe7957a-ec96-490f-9c08-53b1c51cecf0.rbd.disk0 - > /dev/rbd2 > +3 rbd d7ab910a-4933-4ffe-88d0-faf2ce31390a.rbd.disk0 - > /dev/rbd3 > diff --git a/test/data/bdev-rbd/plain_output_old_no_matches.txt > b/test/data/bdev-rbd/plain_output_old_no_matches.txt > new file mode 100644 > index 0000000..3632b48 > --- /dev/null > +++ b/test/data/bdev-rbd/plain_output_old_no_matches.txt > @@ -0,0 +1,3 @@ > +id pool image snap device > +1 rbd b9e31bb3-4d4f-4a2c-bc63-207a0bc4b287.rbd.disk0 - > /dev/rbd1 > +2 rbd abe7957a-ec96-490f-9c08-53b1c51cecf0.rbd.disk0 - > /dev/rbd2 > diff --git a/test/data/bdev-rbd/plain_output_old_ok.txt > b/test/data/bdev-rbd/plain_output_old_ok.txt > new file mode 100644 > index 0000000..c2e1e5c > --- /dev/null > +++ b/test/data/bdev-rbd/plain_output_old_ok.txt > @@ -0,0 +1,4 @@ > +id pool image snap device > +1 rbd b9e31bb3-4d4f-4a2c-bc63-207a0bc4b287.rbd.disk0 - > /dev/rbd1 > +2 rbd abe7957a-ec96-490f-9c08-53b1c51cecf0.rbd.disk0 - > /dev/rbd2 > +3 rbd d7ab910a-4933-4ffe-88d0-faf2ce31390a.rbd.disk0 - > /dev/rbd3 > diff --git a/test/py/ganeti.bdev_unittest.py b/test/py/ganeti.bdev_unittest.py > index 4aa3106..3419182 100755 > --- a/test/py/ganeti.bdev_unittest.py > +++ b/test/py/ganeti.bdev_unittest.py > @@ -346,35 +346,69 @@ class TestDRBD8Status(testutils.GanetiTestCase): > > > class TestRADOSBlockDevice(testutils.GanetiTestCase): > - def test_ParseRbdShowmappedOutput(self): > - volume_name = "abc9778-8e8ace5b.rbd.disk0" > - output_ok = \ > - ("0\trbd\te69f28e5-9817.rbd.disk0\t-\t/dev/rbd0\n" > - "1\t/dev/rbd0\tabc9778-8e8ace5b.rbd.disk0\t-\t/dev/rbd16\n" > - "line\twith\tfewer\tfields\n" > - "") > - output_empty = "" > - output_no_matches = \ > - ("0\trbd\te69f28e5-9817.rbd.disk0\t-\t/dev/rbd0\n" > - "1\trbd\tabcdef01-9817.rbd.disk0\t-\t/dev/rbd10\n" > - "2\trbd\tcdef0123-9817.rbd.disk0\t-\t/dev/rbd12\n" > - "something\twith\tfewer\tfields" > - "") > - output_extra_matches = \ > - ("0\t/dev/rbd0\tabc9778-8e8ace5b.rbd.disk0\t-\t/dev/rbd11\n" > - "1\trbd\te69f28e5-9817.rbd.disk0\t-\t/dev/rbd0\n" > - "2\t/dev/rbd0\tabc9778-8e8ace5b.rbd.disk0\t-\t/dev/rbd16\n" > - "something\twith\tfewer\tfields" > - "") > - > - parse_function = bdev.RADOSBlockDevice._ParseRbdShowmappedOutput > - self.assertEqual(parse_function(output_ok, volume_name), "/dev/rbd16") > + def setUp(self): > + """Set up input data""" > + testutils.GanetiTestCase.setUp(self) > + > + self.plain_output_old_ok = > testutils.ReadTestData("bdev-rbd/plain_output_old_ok.txt") > + self.plain_output_old_no_matches = \ > + testutils.ReadTestData("bdev-rbd/plain_output_old_no_matches.txt") > + self.plain_output_old_extra_matches = \ > + testutils.ReadTestData("bdev-rbd/plain_output_old_extra_matches.txt") > + self.plain_output_old_empty = \ > + testutils.ReadTestData("bdev-rbd/plain_output_old_empty.txt") > + self.plain_output_new_ok = > testutils.ReadTestData("bdev-rbd/plain_output_new_ok.txt") > + self.plain_output_new_no_matches = \ > + testutils.ReadTestData("bdev-rbd/plain_output_new_no_matches.txt") > + self.plain_output_new_extra_matches = \ > + testutils.ReadTestData("bdev-rbd/plain_output_new_extra_matches.txt") > + self.plain_output_new_empty = \ > + testutils.ReadTestData("bdev-rbd/plain_output_new_empty.txt") > + self.json_output_ok = > testutils.ReadTestData("bdev-rbd/json_output_ok.txt") > + self.json_output_no_matches = \ > + testutils.ReadTestData("bdev-rbd/json_output_no_matches.txt") > + self.json_output_extra_matches = \ > + testutils.ReadTestData("bdev-rbd/json_output_extra_matches.txt") > + self.json_output_empty = > testutils.ReadTestData("bdev-rbd/json_output_empty.txt") > + self.output_invalid = > testutils.ReadTestData("bdev-rbd/output_invalid.txt") > + > + self.volume_name = "d7ab910a-4933-4ffe-88d0-faf2ce31390a.rbd.disk0" > + > + def test_ParseRbdShowmappedJson(self): > + parse_function = bdev.RADOSBlockDevice._ParseRbdShowmappedJson > + > + self.assertEqual(parse_function(self.json_output_ok, self.volume_name), > + "/dev/rbd3") > + self.assertEqual(parse_function(self.json_output_empty, > self.volume_name), > + None) > + self.assertEqual(parse_function(self.json_output_no_matches, > + self.volume_name), None) > self.assertRaises(errors.BlockDeviceError, parse_function, > - output_empty, volume_name) > - self.assertEqual(parse_function(output_no_matches, volume_name), None) > + self.json_output_extra_matches, self.volume_name) > self.assertRaises(errors.BlockDeviceError, parse_function, > - output_extra_matches, volume_name) > - > + self.output_invalid, self.volume_name) > + > + def test_ParseRbdShowmappedPlain(self): > + parse_function = bdev.RADOSBlockDevice._ParseRbdShowmappedPlain > + > + self.assertEqual(parse_function(self.plain_output_new_ok, > + self.volume_name), "/dev/rbd3") > + self.assertEqual(parse_function(self.plain_output_old_ok, > + self.volume_name), "/dev/rbd3") > + self.assertEqual(parse_function(self.plain_output_new_empty, > + self.volume_name), None) > + self.assertEqual(parse_function(self.plain_output_old_empty, > + self.volume_name), None) > + self.assertEqual(parse_function(self.plain_output_new_no_matches, > + self.volume_name), None) > + self.assertEqual(parse_function(self.plain_output_old_no_matches, > + self.volume_name), None) > + self.assertRaises(errors.BlockDeviceError, parse_function, > + self.plain_output_new_extra_matches, self.volume_name) > + self.assertRaises(errors.BlockDeviceError, parse_function, > + self.plain_output_old_extra_matches, self.volume_name) > + self.assertRaises(errors.BlockDeviceError, parse_function, > + self.output_invalid, self.volume_name) > > class TestComputeWrongFileStoragePathsInternal(unittest.TestCase): > def testPaths(self): > -- > 1.7.10.4 > -- Guido Trotter Ganeti engineering Google Germany
