[master 4/5] edd: be more strict about checking what gets logged in test cases
vathpela
installerbot-noreply at redhat.com
Tue Oct 13 22:06:53 UTC 2015
From: Peter Jones <pjones at redhat.com>
This also results in /tmp/blivet.log getting written out.
Signed-off-by: Peter Jones <pjones at redhat.com>
---
tests/devicelibs_test/edd_test.py | 56 ++++++++++++++++++++++++++++++++-------
1 file changed, 46 insertions(+), 10 deletions(-)
diff --git a/tests/devicelibs_test/edd_test.py b/tests/devicelibs_test/edd_test.py
index edf17d3..dfb40f5 100644
--- a/tests/devicelibs_test/edd_test.py
+++ b/tests/devicelibs_test/edd_test.py
@@ -2,7 +2,9 @@
import mock
import os
import inspect
+import copy
+import blivet
from blivet.devicelibs import edd
class FakeDevice(object):
@@ -33,7 +35,14 @@ def __eq__(self, other):
class EddTestCase(unittest.TestCase):
_edd_logger = None
+ maxDiff = None
+
def setUp(self):
+ try:
+ ws = os.environ['WORKSPACE']
+ except KeyError:
+ ws = "/tmp"
+ blivet.util.set_up_logging(log_file=os.path.join(ws, "blivet.log"))
super(EddTestCase, self).setUp()
self._edd_logger = edd.log
edd.log = mock.MagicMock(name='log')
@@ -53,6 +62,27 @@ def _set_fs_root(self, edd_module, fsroot):
dirname = os.path.dirname(inspect.getfile(edd_module))
edd_module.fsroot = os.path.join(dirname, "../../tests/devicelibs_test/edd_data/", fsroot)
+ def _respool_logs(self):
+ log = edd.log
+ edd.log = mock.MagicMock(name='log')
+ for logname in ["debug", "info", "warning", "error"]:
+ logger = getattr(log, logname)
+ newlogger = getattr(self._edd_logger, logname)
+ for call in logger.call_args_list:
+ newlogger(*call[0])
+ setattr(edd.log, logname, mock.MagicMock(name=logname))
+
+ def _check_logs(self, debugs=None, infos=None, warnings=None, errors=None):
+ for (left, right) in ((debugs, edd.log.debug),
+ (infos, edd.log.info),
+ (warnings, edd.log.warning),
+ (errors, edd.log.error)):
+ left = [mock.call(*x) for x in left or []]
+ left.sort()
+ right = copy.copy(right.call_args_list) or []
+ right.sort()
+ self.assertEqual(left, right)
+
def test_biosdev_to_edd_dir(self):
self._set_fs_root(edd, None)
path = edd.biosdev_to_edd_dir(138)
@@ -61,6 +91,7 @@ def test_biosdev_to_edd_dir(self):
self.assertEqual(edd.log.info.called, False)
self.assertEqual(edd.log.warning.called, False)
self.assertEqual(edd.log.error.called, False)
+ self._respool_logs()
def test_collect_edd_data_sata_usb(self):
# test with sata sda, usb sdb
@@ -83,10 +114,12 @@ def test_collect_edd_data_sata_usb(self):
self.assertEqual(len(edd_dict), 2)
self.assertEqual(fakeedd[0x80], edd_dict[0x80])
self.assertEqual(fakeedd[0x81], edd_dict[0x81])
+ self._check_logs()
self.assertEqual(edd.log.debug.called, False)
self.assertEqual(edd.log.info.called, False)
self.assertEqual(edd.log.warning.called, False)
self.assertEqual(edd.log.error.called, False)
+ self._respool_logs()
def test_get_edd_dict_sata_usb(self):
# test with sata sda, usb sdb
@@ -129,13 +162,9 @@ def test_get_edd_dict_sata_usb(self):
"/sys/firmware/edd/int13_dev81"),
("edd: interface details: %s", "USB \tserial_number: 30302e31"),
]
- for debug in debugs:
- self.assertIn(mock.call(*debug), edd.log.debug.call_args_list)
- for info in infos:
- self.assertIn(mock.call(*info), edd.log.info.call_args_list)
- for warning in warnings:
- self.assertIn(mock.call(*warning), edd.log.warning.call_args_list)
+ self._check_logs(debugs, infos, warnings)
self.assertEqual(edd.log.error.called, False)
+ self._respool_logs()
def test_collect_edd_data_absurd_virt(self):
self._set_fs_root(edd, "absurd_virt")
@@ -176,10 +205,12 @@ def test_collect_edd_data_absurd_virt(self):
self.assertEqual(fakeedd[0x83], edd_dict[0x83])
self.assertEqual(fakeedd[0x84], edd_dict[0x84])
self.assertEqual(fakeedd[0x85], edd_dict[0x85])
+ self._check_logs()
self.assertEqual(edd.log.debug.called, False)
self.assertEqual(edd.log.info.called, False)
self.assertEqual(edd.log.warning.called, False)
self.assertEqual(edd.log.error.called, False)
+ self._respool_logs()
def test_get_edd_dict_absurd_virt(self):
self._set_fs_root(edd, "absurd_virt")
@@ -247,6 +278,13 @@ def test_get_edd_dict_absurd_virt(self):
("edd: data extracted from 0x%x:\n%s", 0x85, fakeedd[0x85]),
]
infos = [
+ ("edd: collected mbr signatures: %s", { 'vda': '0x86531966',
+ 'sda': '0xe3bf124b',
+ 'sdb': '0x7dfff0db',
+ 'sdc': '0x63f1d7d8',
+ 'sdd': '0xee331b19',
+ 'sde': '0xfa0a111d',
+ }),
("edd: matched 0x%x to %s using PCI dev", 0x80, "vda"),
("edd: matched 0x%x to %s using PCI dev", 0x81, "sdb"),
("edd: matched 0x%x to %s using MBR sig", 0x82, "sda"),
@@ -254,9 +292,7 @@ def test_get_edd_dict_absurd_virt(self):
("edd: matched 0x%x to %s using PCI dev", 0x84, "sdc"),
("edd: matched 0x%x to %s using MBR sig", 0x85, "sdd"),
]
- for debug in debugs:
- self.assertIn(mock.call(*debug), edd.log.debug.call_args_list)
- for info in infos:
- self.assertIn(mock.call(*info), edd.log.info.call_args_list)
+ self._check_logs(debugs, infos)
self.assertEqual(edd.log.warning.called, False)
self.assertEqual(edd.log.error.called, False)
+ self._respool_logs()
--
To view this commit on github, visit https://github.com/rhinstaller/blivet/commit/1d2a4d0b35caf7d39b78978d78c2872de00e16d2
More information about the anaconda-patches
mailing list