diff options
| author | Michael Still <mikal@stillhq.com> | 2012-10-25 10:13:53 +1100 |
|---|---|---|
| committer | Michael Still <mikal@stillhq.com> | 2013-02-06 12:43:33 +1100 |
| commit | 51efba78bdcee821937c28c1973ec80e8c2d59ae (patch) | |
| tree | faa4b454fe361b71187e07b4ed71ecaa29b24bdc /tests | |
| parent | a9b69ff076080e31271d32751580c35107f0a451 (diff) | |
| download | oslo-51efba78bdcee821937c28c1973ec80e8c2d59ae.tar.gz oslo-51efba78bdcee821937c28c1973ec80e8c2d59ae.tar.xz oslo-51efba78bdcee821937c28c1973ec80e8c2d59ae.zip | |
Emit a warning if RPC calls made with lock.
This patch will log a warning every time a RPC call is made while
a lock is held if the caller has requested it. This should help us
track down performance problems such as the security group refresh
problem recently found in nova.
RPC calls can emit a warning if called with check_for_lock=True
and debugging is turned on.
Sneaks up on bug 1063222.
Change-Id: Ice94093efb3cb95dd58b31d6ba817c7d505c15af
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/unit/rpc/test_proxy.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/unit/rpc/test_proxy.py b/tests/unit/rpc/test_proxy.py index 64eb008..436bcab 100644 --- a/tests/unit/rpc/test_proxy.py +++ b/tests/unit/rpc/test_proxy.py @@ -21,6 +21,7 @@ Unit Tests for rpc.proxy import copy from openstack.common import context +from openstack.common import lockutils from openstack.common.fixture import moxstubout from openstack.common import rpc from openstack.common.rpc import proxy @@ -45,6 +46,7 @@ class RpcProxyTestCase(utils.BaseTestCase): self.fake_kwargs = None def _fake_rpc_method(*args, **kwargs): + rpc._check_for_lock() self.fake_args = args self.fake_kwargs = kwargs if has_retval: @@ -101,6 +103,17 @@ class RpcProxyTestCase(utils.BaseTestCase): def test_multicall(self): self._test_rpc_method('multicall', has_timeout=True, has_retval=True) + def test_multicall_with_lock_held(self): + self.config(debug=True) + self.assertFalse(rpc._check_for_lock()) + + @lockutils.synchronized('detecting', 'test-') + def f(): + self.assertTrue(rpc._check_for_lock()) + f() + + self.assertFalse(rpc._check_for_lock()) + def test_cast(self): self._test_rpc_method('cast') |
