Le 16/05/2016 13:52, Amrith Kumar a écrit :
IMHO the strange mock detector code must be removed. It is very
slow and I don't understand its purpose.
[amrith] It serves and has served a very useful purpose and that is
to detect bad tests where code has (and we've had lots of trouble
with this) established a Mock() but failed to delete it.
There are many options to disable (unregister, stop, call it as you
want) mocks automatically. As I wrote, fixtures & oslotest give you
tools to do that automatically. It's also a base feature of the mock
module: "with mock.patch(...): ...". Sorry, I don't know enough the
Trove code base (code of the unit tests) to say which option is the best.
I'd rather figure out why it is slower in Python3 because it may be
indicative of something that may impact other parts of the code as
well. We're having this whole discussion about Python performance and
the Go language, I think it is not a good idea to delete code which
is performing poorly because it is performing slowly.
Sorry but Go doesn't solve badly designed functions :-) It's an
algorithmic complexity issue: the function has to iterate on *all* alive
Python objects: complexity of O(n). I propose to remove to code to
simplify the complexity to O(1) :-)
Ok, let's take an example with Python 2.7: the command "python -bb -m
testtools.run trove/tests/unittests/common/test_exception.py" takes 972
ms. Remove the mock workaround, the command now taks 1 ms: it's now 972x
faster.
=> removing the slow workaround makes test ~1000x faster!
IMHO it's worth to start here, instead of starting to investigate why
running tests on Python 3 seems slower.
I'm not aware of such huge performance difference between Python 2 and
Python 3 when running unit tests on other OpenStack services. The issue
is specific to Trove, and IMHO it comes from the mock workaround.
Victor
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev