diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unit/rpc/test_common.py | 47 | ||||
-rw-r--r-- | tests/unit/test_lockutils.py | 2 | ||||
-rw-r--r-- | tests/unit/test_service.py | 54 | ||||
-rw-r--r-- | tests/unit/test_timeutils.py | 55 |
4 files changed, 112 insertions, 46 deletions
diff --git a/tests/unit/rpc/test_common.py b/tests/unit/rpc/test_common.py index 78f4b93..fd59929 100644 --- a/tests/unit/rpc/test_common.py +++ b/tests/unit/rpc/test_common.py @@ -265,3 +265,50 @@ class RpcCommonTestCase(test_utils.BaseTestCase): self.assertRaises(rpc_common.UnsupportedRpcEnvelopeVersion, rpc_common.deserialize_msg, s_msg) + + def test_safe_log_sanitizes_globals(self): + def logger_method(msg, data): + self.assertEquals('<SANITIZED>', data['_context_auth_token']) + self.assertEquals('<SANITIZED>', data['auth_token']) + + data = {'_context_auth_token': 'banana', + 'auth_token': 'cheese'} + rpc_common._safe_log(logger_method, 'foo', data) + + def test_safe_log_sanitizes_set_admin_password(self): + def logger_method(msg, data): + self.assertEquals('<SANITIZED>', data['args']['new_pass']) + + data = {'_context_auth_token': 'banana', + 'auth_token': 'cheese', + 'method': 'set_admin_password', + 'args': {'new_pass': 'gerkin'}} + rpc_common._safe_log(logger_method, 'foo', data) + + def test_safe_log_sanitizes_run_instance(self): + def logger_method(msg, data): + self.assertEquals('<SANITIZED>', data['args']['admin_password']) + + data = {'_context_auth_token': 'banana', + 'auth_token': 'cheese', + 'method': 'run_instance', + 'args': {'admin_password': 'gerkin'}} + rpc_common._safe_log(logger_method, 'foo', data) + + def test_safe_log_sanitizes_cells_route_message(self): + def logger_method(msg, data): + vals = data['args']['message']['args']['method_info'] + self.assertEquals('<SANITIZED>', vals['method_kwargs']['password']) + + meth_info = {'method_args': ['aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'], + 'method': 'set_admin_password', + 'method_kwargs': {'password': 'this_password_is_visible'}} + data = {'method': 'route_message', + 'args': {'routing_path': 'a.fake.path', + 'direction': 'down', + 'message': {'args': {'is_broadcast': False, + 'service_name': 'compute', + 'method_info': meth_info}, + 'method': 'run_service_api_method'}, + 'dest_cell_name': 'cell!0001'}} + rpc_common._safe_log(logger_method, 'foo', data) diff --git a/tests/unit/test_lockutils.py b/tests/unit/test_lockutils.py index 5f50217..d6fbd8b 100644 --- a/tests/unit/test_lockutils.py +++ b/tests/unit/test_lockutils.py @@ -27,6 +27,7 @@ from eventlet import greenthread from eventlet import greenpool from openstack.common import lockutils +from openstack.common import testutils from tests import utils as test_utils @@ -128,6 +129,7 @@ class LockTestCase(test_utils.BaseTestCase): if os.path.exists(tempdir): shutil.rmtree(tempdir) + @testutils.skip_test("Regularly fails, see bug #1095957") def test_synchronized_externally(self): """We can lock across multiple processes""" tempdir = tempfile.mkdtemp() diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py index 59f3145..c7455e0 100644 --- a/tests/unit/test_service.py +++ b/tests/unit/test_service.py @@ -97,18 +97,24 @@ class ServiceLauncherTest(utils.BaseTestCase): self.pid = pid - # Wait for up to a second for workers to get started - start = time.time() - while time.time() - start < 1: - workers = self._get_workers() - if len(workers) == self.workers: - break - - time.sleep(.1) + # Wait at most 10 seconds to spawn workers + cond = lambda: self.workers == len(self._get_workers()) + timeout = 10 + self._wait(cond, timeout) + workers = self._get_workers() self.assertEqual(len(workers), self.workers) return workers + def _wait(self, cond, timeout): + start = time.time() + while True: + if cond(): + break + if time.time() - start > timeout: + break + time.sleep(.1) + def setUp(self): super(ServiceLauncherTest, self).setUp() # FIXME(markmc): Ugly hack to workaround bug #1073732 @@ -149,18 +155,14 @@ class ServiceLauncherTest(utils.BaseTestCase): LOG.info('pid of first child is %s' % start_workers[0]) os.kill(start_workers[0], signal.SIGTERM) - # loop and check if new worker is spawned (for 1 second max) - start = time.time() - while time.time() - start < 1: - end_workers = self._get_workers() - LOG.info('workers: %r' % end_workers) - - if start_workers != end_workers: - break - - time.sleep(.1) + # Wait at most 5 seconds to respawn a worker + cond = lambda: start_workers != self._get_workers() + timeout = 5 + self._wait(cond, timeout) # Make sure worker pids don't match + end_workers = self._get_workers() + LOG.info('workers: %r' % end_workers) self.assertNotEqual(start_workers, end_workers) def _terminate_with_signal(self, sig): @@ -168,17 +170,13 @@ class ServiceLauncherTest(utils.BaseTestCase): os.kill(self.pid, sig) - # loop and check if all processes are killed (for 1 second max) - start = time.time() - while time.time() - start < 1: - workers = self._get_workers() - LOG.info('workers: %r' % workers) - - if not workers: - break - - time.sleep(.1) + # Wait at most 5 seconds to kill all workers + cond = lambda: not self._get_workers() + timeout = 5 + self._wait(cond, timeout) + workers = self._get_workers() + LOG.info('workers: %r' % workers) self.assertFalse(workers, 'No OS processes left.') def test_terminate_sigkill(self): diff --git a/tests/unit/test_timeutils.py b/tests/unit/test_timeutils.py index 8236032..1407f29 100644 --- a/tests/unit/test_timeutils.py +++ b/tests/unit/test_timeutils.py @@ -27,14 +27,10 @@ from openstack.common import timeutils class TimeUtilsTest(unittest.TestCase): def setUp(self): - utc_timezone = iso8601.iso8601.UTC self.skynet_self_aware_time_str = '1997-08-29T06:14:00Z' - self.skynet_self_aware_time = datetime.datetime(1997, 8, 29, 6, 14, 0, - tzinfo=utc_timezone) - self.one_minute_before = datetime.datetime(1997, 8, 29, 6, 13, 0, - tzinfo=iso8601.iso8601.UTC) - self.one_minute_after = datetime.datetime(1997, 8, 29, 6, 15, 0, - tzinfo=iso8601.iso8601.UTC) + self.skynet_self_aware_time = datetime.datetime(1997, 8, 29, 6, 14, 0) + self.one_minute_before = datetime.datetime(1997, 8, 29, 6, 13, 0) + self.one_minute_after = datetime.datetime(1997, 8, 29, 6, 15, 0) self.skynet_self_aware_time_perfect_str = '1997-08-29T06:14:00.000000' self.skynet_self_aware_time_perfect = datetime.datetime(1997, 8, 29, 6, 14, 0) @@ -50,7 +46,9 @@ class TimeUtilsTest(unittest.TestCase): def test_parse_isotime(self): expect = timeutils.parse_isotime(self.skynet_self_aware_time_str) - self.assertEqual(self.skynet_self_aware_time, expect) + skynet_self_aware_time_utc = self.skynet_self_aware_time.replace( + tzinfo=iso8601.iso8601.UTC) + self.assertEqual(skynet_self_aware_time_utc, expect) def test_strtime(self): expect = timeutils.strtime(self.skynet_self_aware_time_perfect) @@ -67,31 +65,52 @@ class TimeUtilsTest(unittest.TestCase): t = timeutils.parse_strtime(s) self.assertEqual(orig_t, t) - def test_is_older_than(self): + def _test_is_older_than(self, fn): + strptime = datetime.datetime.strptime with mock.patch('datetime.datetime') as datetime_mock: datetime_mock.utcnow.return_value = self.skynet_self_aware_time - expect_true = timeutils.is_older_than(self.one_minute_before, 59) + datetime_mock.strptime = strptime + expect_true = timeutils.is_older_than(fn(self.one_minute_before), + 59) self.assertTrue(expect_true) - expect_false = timeutils.is_older_than(self.one_minute_before, 60) + expect_false = timeutils.is_older_than(fn(self.one_minute_before), + 60) self.assertFalse(expect_false) - expect_false = timeutils.is_older_than(self.one_minute_before, 61) + expect_false = timeutils.is_older_than(fn(self.one_minute_before), + 61) self.assertFalse(expect_false) - def test_is_newer_than(self): + def test_is_older_than_datetime(self): + self._test_is_older_than(lambda x: x) + + def test_is_older_than_str(self): + self._test_is_older_than(timeutils.strtime) + + def _test_is_newer_than(self, fn): + strptime = datetime.datetime.strptime with mock.patch('datetime.datetime') as datetime_mock: datetime_mock.utcnow.return_value = self.skynet_self_aware_time - expect_true = timeutils.is_newer_than(self.one_minute_after, 59) + datetime_mock.strptime = strptime + expect_true = timeutils.is_newer_than(fn(self.one_minute_after), + 59) self.assertTrue(expect_true) - expect_false = timeutils.is_newer_than(self.one_minute_after, 60) + expect_false = timeutils.is_newer_than(fn(self.one_minute_after), + 60) self.assertFalse(expect_false) - expect_false = timeutils.is_newer_than(self.one_minute_after, 61) + expect_false = timeutils.is_newer_than(fn(self.one_minute_after), + 61) self.assertFalse(expect_false) + def test_is_newer_than_datetime(self): + self._test_is_newer_than(lambda x: x) + + def test_is_newer_than_str(self): + self._test_is_newer_than(timeutils.strtime) + def test_utcnow_ts(self): skynet_self_aware_timestamp = 872835240 dt = datetime.datetime.utcfromtimestamp(skynet_self_aware_timestamp) - expect = dt.replace(tzinfo=iso8601.iso8601.UTC) - self.assertEqual(self.skynet_self_aware_time, expect) + self.assertEqual(self.skynet_self_aware_time, dt) with mock.patch('datetime.datetime') as datetime_mock: datetime_mock.utcnow.return_value = self.skynet_self_aware_time ts = timeutils.utcnow_ts() |