]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
monkey patch stdlib before importing other modules
authorTerry Wilson <twilson@redhat.com>
Thu, 22 Jan 2015 19:52:43 +0000 (13:52 -0600)
committerTerry Wilson <twilson@redhat.com>
Tue, 10 Feb 2015 01:49:27 +0000 (19:49 -0600)
Some oslo libraries assume that stdlib is already patched when
they are imported (e.g. oslo_concurrency.processutils tests the
'time' module for monkey_patching to detect which 'subprocess'
module to import.

This can cause issues when things like test frameworks import
modules that monkey_patch, as the order imports are made can break
this kind of check. It is always good to monkey patch as soon as
possible, hence trying to do the patching in neutron/__init__.py.

This is an alternative to https://review.openstack.org/#/c/153225/
which just patches neutron/tests/__init__.py. Unfortunately, just
monkey_patching in tests/__init__.py didn't fix all of the issues
I ran into. For example, tempest tests were failing with timeouts.

Closes-bug: #1418541
Change-Id: I7f2115a99acae5b6d61aab2f7334f498b8d99858

neutron/__init__.py
run_tests.sh
tox.ini

index 710b18c464114e5a14425819bed11b26cce6962a..20549b760a8eb3df5a90f139aab2dea98cd61c50 100644 (file)
 #    under the License.
 
 import gettext
+import os
+
+if not os.environ.get('NO_EVENTLET'):
+    import eventlet
+    eventlet.monkey_patch()
 
 
 gettext.install('neutron', unicode=1)
index 6fe001f5381d5652c64ff20cf292d4fcfab667d3..b6224f07ce7aeba93f2d7489ef7685fdd19fc4d6 100755 (executable)
@@ -179,7 +179,7 @@ function warn_on_flake8_without_venv {
 function run_pep8 {
   echo "Running flake8 ..."
   warn_on_flake8_without_venv
-  ${wrapper} flake8
+  NO_EVENTLET=1 ${wrapper} flake8
 }
 
 function run_pep8_changed {
@@ -192,7 +192,7 @@ function run_pep8_changed {
     local files=$(git diff --name-only $target | tr '\n' ' ')
     echo "Running flake8 on ${files}"
     warn_on_flake8_without_venv
-    diff -u --from-file /dev/null ${files} | ${wrapper} flake8 --diff
+    diff -u --from-file /dev/null ${files} | NO_EVENTLET=1 ${wrapper} flake8 --diff
 }
 
 
diff --git a/tox.ini b/tox.ini
index 3d1f62f44fd0618b7eb588d8d9f33f976b245745..9d88fd4942a46fd096970580d6a8ecaac38a3fd4 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -49,6 +49,7 @@ sitepackages = True
 downloadcache = ~/cache/pip
 
 [testenv:pep8]
+setenv = NO_EVENTLET=1
 commands =
   # If it is easier to add a check via a shell script, consider adding it in this file
   sh ./tools/misc-sanity-checks.sh