tests: monkey patch stdlib before importing other modules

Some oslo libraries assume that stdlib is already patched when they are
imported (f.e. oslo.concurrency.processutils currently checks whether
time module is monkey patched on import to detect which subprocess
module should be used).

For services, we achieve this by moving monkey_patch() calls as high in
import list as possible. But for tests, we don't control the order in
which testr loads test cases. So to be on safe side, we should make sure
any attempt to load a test case from the tree results in eventlet patch.

We can't put the monkey_patch() call into e.g. neutron/__init__.py to
reuse it both for tests and for services, because in that case we may
break flake8 that loads hacking checks from neutron.* namespace and
relies on proper (unpatched) subprocess module.

Closes-Bug: #1418541
Change-Id: Id58409000d0e086f3fb664a15935af4f1708c396
This commit is contained in:
Ihar Hrachyshka 2015-02-05 14:21:38 +01:00
parent 81ea614570
commit ea76d10e74
2 changed files with 17 additions and 3 deletions

View File

@ -0,0 +1,14 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import eventlet
eventlet.monkey_patch()

View File

@ -12,7 +12,8 @@
# License for the specific language governing permissions and limitations
# under the License.
import eventlet
import time
from oslo_config import cfg
from neutron.agent.linux import daemon
@ -29,9 +30,8 @@ def main():
def run(self):
while True:
eventlet.sleep(10)
time.sleep(10)
eventlet.monkey_patch()
opts = [
cfg.StrOpt('uuid',
help=_('uuid provided from the command line '