Added unit test cases for container/auditor.py

Added unit test cases to cover all code path in _one_audit_pass
function in container/auditor.py

Change-Id: I8b89e94f1492e4366af3ac4260587e988ba29408
This commit is contained in:
Sivasathurappan Radhakrishnan 2015-10-29 23:04:42 +00:00
parent 246e134275
commit c4eeea7820

View File

@ -20,6 +20,7 @@ import os
import random import random
from tempfile import mkdtemp from tempfile import mkdtemp
from shutil import rmtree from shutil import rmtree
from eventlet import Timeout
from swift.common.utils import normalize_timestamp from swift.common.utils import normalize_timestamp
from swift.container import auditor from swift.container import auditor
@ -93,6 +94,12 @@ class TestAuditor(unittest.TestCase):
self.assertEqual(test_auditor.container_failures, 2 * call_times) self.assertEqual(test_auditor.container_failures, 2 * call_times)
self.assertEqual(test_auditor.container_passes, 3 * call_times) self.assertEqual(test_auditor.container_passes, 3 * call_times)
# now force timeout path code coverage
with mock.patch('swift.container.auditor.ContainerAuditor.'
'_one_audit_pass', side_effect=Timeout()):
with mock.patch('swift.container.auditor.time', FakeTime()):
self.assertRaises(ValueError, test_auditor.run_forever)
@mock.patch('swift.container.auditor.ContainerBroker', FakeContainerBroker) @mock.patch('swift.container.auditor.ContainerBroker', FakeContainerBroker)
def test_run_once(self): def test_run_once(self):
conf = {} conf = {}
@ -108,6 +115,23 @@ class TestAuditor(unittest.TestCase):
self.assertEqual(test_auditor.container_failures, 2) self.assertEqual(test_auditor.container_failures, 2)
self.assertEqual(test_auditor.container_passes, 3) self.assertEqual(test_auditor.container_passes, 3)
@mock.patch('swift.container.auditor.ContainerBroker', FakeContainerBroker)
def test_one_audit_pass(self):
conf = {}
test_auditor = auditor.ContainerAuditor(conf, logger=self.logger)
def fake_audit_location_generator(*args, **kwargs):
files = sorted(os.listdir(self.testdir))
return [(os.path.join(self.testdir, f), '', '') for f in files]
# force code coverage for logging path
test_auditor.logging_interval = 0
with mock.patch('swift.container.auditor.audit_location_generator',
fake_audit_location_generator):
test_auditor._one_audit_pass(test_auditor.logging_interval)
self.assertEqual(test_auditor.container_failures, 1)
self.assertEqual(test_auditor.container_passes, 3)
@mock.patch('swift.container.auditor.ContainerBroker', FakeContainerBroker) @mock.patch('swift.container.auditor.ContainerBroker', FakeContainerBroker)
def test_container_auditor(self): def test_container_auditor(self):
conf = {} conf = {}