[FIX] tests race condition in phanthomjs tests
authorAntony Lesuisse <al@openerp.com>
Thu, 1 May 2014 15:06:41 +0000 (17:06 +0200)
committerAntony Lesuisse <al@openerp.com>
Thu, 1 May 2014 15:06:41 +0000 (17:06 +0200)
A deadlock occurs when
- phantomjs_test1 is executedd, enter_test_mode is activated
- console.log('ok') is issued, sigterm is sent to phantomjs_test1 process
- phantomjs_test1 is finished and leave_test_mode restores the registrymanager lock
- phantomjs_test1 process, just before dying, makes a last http request phantomjs_test1_last_request
- phantomjs_test1_last_request thread will wait for the registrymanager lock, when all tests will be completed
- phantomjs_test2 is run, enter_test_mode is activated
- phantomjs_test2 is reach its end and _wait_remaining_requests is called
- phantomjs_test2 _wait_remaining_requests hangs forever waiting for phantomjs_test1_last_request

bzr revid: al@openerp.com-20140501150641-ua0b7pntesgm3n5p

openerp/tests/common.py

index e881959..1d98416 100644 (file)
@@ -229,6 +229,7 @@ class HttpCase(TransactionCase):
             # kill phantomjs if phantom.exit() wasn't called in the test
             if phantom.poll() is None:
                 phantom.terminate()
+                phantom.wait()
             self._wait_remaining_requests()
             _logger.info("phantom_run execution finished")