diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-08-17 18:24:21 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-08-17 18:24:21 +0000 |
| commit | 9315004a3cb96c50d5a915ba67e9f9be2f02aa3e (patch) | |
| tree | 9cbbcb67cb70c65662da16b56d582e1a1ced84af /nova/tests | |
| parent | 460ba0416eaa66e751358cd0c4cdccc1c908f591 (diff) | |
| parent | 10e25db4befe1173af516a053ac01f0f7b6dac56 (diff) | |
Merge "Makes sure tests don't leave lockfiles around"
Diffstat (limited to 'nova/tests')
| -rw-r--r-- | nova/tests/fake_flags.py | 1 | ||||
| -rw-r--r-- | nova/tests/test_misc.py | 80 |
2 files changed, 43 insertions, 38 deletions
diff --git a/nova/tests/fake_flags.py b/nova/tests/fake_flags.py index aada0d7e3..f6d9496b1 100644 --- a/nova/tests/fake_flags.py +++ b/nova/tests/fake_flags.py @@ -48,3 +48,4 @@ def set_defaults(conf): conf.set_default('api_paste_config', '$state_path/etc/nova/api-paste.ini') conf.set_default('rpc_response_timeout', 5) conf.set_default('rpc_cast_timeout', 5) + conf.set_default('lock_path', None) diff --git a/nova/tests/test_misc.py b/nova/tests/test_misc.py index 58d52290b..10443ecde 100644 --- a/nova/tests/test_misc.py +++ b/nova/tests/test_misc.py @@ -108,47 +108,51 @@ class LockTestCase(test.TestCase): def test_nested_external_works(self): """We can nest external syncs""" - sentinel = object() + with utils.tempdir() as tempdir: + self.flags(lock_path=tempdir) + sentinel = object() - @utils.synchronized('testlock1', external=True) - def outer_lock(): + @utils.synchronized('testlock1', external=True) + def outer_lock(): - @utils.synchronized('testlock2', external=True) - def inner_lock(): - return sentinel - return inner_lock() + @utils.synchronized('testlock2', external=True) + def inner_lock(): + return sentinel + return inner_lock() - self.assertEqual(sentinel, outer_lock()) + self.assertEqual(sentinel, outer_lock()) def test_synchronized_externally(self): """We can lock across multiple processes""" - rpipe1, wpipe1 = os.pipe() - rpipe2, wpipe2 = os.pipe() - - @utils.synchronized('testlock1', external=True) - def f(rpipe, wpipe): - try: - os.write(wpipe, "foo") - except OSError, e: - self.assertEquals(e.errno, errno.EPIPE) - return - - rfds, _wfds, _efds = select.select([rpipe], [], [], 1) - self.assertEquals(len(rfds), 0, "The other process, which was" - " supposed to be locked, " - "wrote on its end of the " - "pipe") - os.close(rpipe) - - pid = os.fork() - if pid > 0: - os.close(wpipe1) - os.close(rpipe2) - - f(rpipe1, wpipe2) - else: - os.close(rpipe1) - os.close(wpipe2) - - f(rpipe2, wpipe1) - os._exit(0) + with utils.tempdir() as tempdir: + self.flags(lock_path=tempdir) + rpipe1, wpipe1 = os.pipe() + rpipe2, wpipe2 = os.pipe() + + @utils.synchronized('testlock1', external=True) + def f(rpipe, wpipe): + try: + os.write(wpipe, "foo") + except OSError, e: + self.assertEquals(e.errno, errno.EPIPE) + return + + rfds, _wfds, _efds = select.select([rpipe], [], [], 1) + self.assertEquals(len(rfds), 0, "The other process, which was" + " supposed to be locked, " + "wrote on its end of the " + "pipe") + os.close(rpipe) + + pid = os.fork() + if pid > 0: + os.close(wpipe1) + os.close(rpipe2) + + f(rpipe1, wpipe2) + else: + os.close(rpipe1) + os.close(wpipe2) + + f(rpipe2, wpipe1) + os._exit(0) |
