summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/rpc/test_common.py47
-rw-r--r--tests/unit/test_lockutils.py2
-rw-r--r--tests/unit/test_service.py54
-rw-r--r--tests/unit/test_timeutils.py55
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()