EliAndrewC / sideboard

BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

the slowest tests... IN THE WORLD #44

Closed robdennis closed 10 years ago

robdennis commented 10 years ago

this wasn't always like this. 7+ minutes to "install" and run the tests on just one interpreter.

this isn't counting actually downloading/compiling dependencies since this run had everything in it already.

jane-air:sideboard rad3$ time tox
GLOB sdist-make: /Users/rad3/development/sideboard/setup.py
py27 inst-nodeps: /Users/rad3/development/sideboard/.tox/dist/sideboard-0.1.0.zip
py27 runtests: PYTHONHASHSEED='1063141945'
py27 runtests: commands[0] | python setup.py develop
running develop
running egg_info
writing sideboard.egg-info/PKG-INFO
writing dependency_links to sideboard.egg-info/dependency_links.txt
writing entry points to sideboard.egg-info/entry_points.txt
writing top-level names to sideboard.egg-info/top_level.txt
writing requirements to sideboard.egg-info/requires.txt
reading manifest file 'sideboard.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'sideboard.egg-info/SOURCES.txt'
running build_ext
Creating /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages/sideboard.egg-link (link to .)
Adding sideboard 0.1.0 to easy-install.pth file
Installing sep script to /Users/rad3/development/sideboard/.tox/py27/bin

Installed /Users/rad3/development/sideboard
Processing dependencies for sideboard==0.1.0
Searching for configobj==5.0.2
Best match: configobj 5.0.2
Processing configobj-5.0.2-py2.7.egg
configobj 5.0.2 is already the active version in easy-install.pth

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages/configobj-5.0.2-py2.7.egg
Searching for CherryPy==3.2.5
Best match: CherryPy 3.2.5
Processing CherryPy-3.2.5-py2.7.egg
CherryPy 3.2.5 is already the active version in easy-install.pth
Installing cherryd script to /Users/rad3/development/sideboard/.tox/py27/bin

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages/CherryPy-3.2.5-py2.7.egg
Searching for python-ldap==2.3.13
Best match: python-ldap 2.3.13
Processing python_ldap-2.3.13-py2.7-macosx-10.9-intel.egg
python-ldap 2.3.13 is already the active version in easy-install.pth

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages/python_ldap-2.3.13-py2.7-macosx-10.9-intel.egg
Searching for ws4py==0.3.2
Best match: ws4py 0.3.2
Adding ws4py 0.3.2 to easy-install.pth file

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for SQLAlchemy==0.8.5
Best match: SQLAlchemy 0.8.5
Adding SQLAlchemy 0.8.5 to easy-install.pth file

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for six==1.5.2
Best match: six 1.5.2
Adding six 1.5.2 to easy-install.pth file

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for Jinja2==2.6
Best match: Jinja2 2.6
Adding Jinja2 2.6 to easy-install.pth file

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for rpctools==0.1
Best match: rpctools 0.1
Adding rpctools 0.1 to easy-install.pth file

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for logging-unterpolation==0.2.0
Best match: logging-unterpolation 0.2.0
Adding logging-unterpolation 0.2.0 to easy-install.pth file

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for requests==1.2.0
Best match: requests 1.2.0
Adding requests 1.2.0 to easy-install.pth file

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for pytest==2.4.2
Best match: pytest 2.4.2
Adding pytest 2.4.2 to easy-install.pth file
Installing py.test script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing py.test-2.7 script to /Users/rad3/development/sideboard/.tox/py27/bin

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for mock==1.0.1
Best match: mock 1.0.1
Adding mock 1.0.1 to easy-install.pth file

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for Sphinx==1.2.1
Best match: Sphinx 1.2.1
Adding Sphinx 1.2.1 to easy-install.pth file
Installing sphinx-quickstart script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing sphinx-apidoc script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing sphinx-build script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing sphinx-autogen script to /Users/rad3/development/sideboard/.tox/py27/bin

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for coverage==3.6
Best match: coverage 3.6
Adding coverage 3.6 to easy-install.pth file
Installing coverage-2.7 script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing coverage2 script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing coverage script to /Users/rad3/development/sideboard/.tox/py27/bin

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for Paver==1.2.2
Best match: Paver 1.2.2
Adding Paver 1.2.2 to easy-install.pth file
Installing paver script to /Users/rad3/development/sideboard/.tox/py27/bin

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for setuptools==2.2
Best match: setuptools 2.2
Adding setuptools 2.2 to easy-install.pth file
Installing easy_install script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing easy_install-3.4 script to /Users/rad3/development/sideboard/.tox/py27/bin

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages
Searching for py==1.4.20
Best match: py 1.4.20
Processing py-1.4.20-py2.7.egg
py 1.4.20 is already the active version in easy-install.pth

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages/py-1.4.20-py2.7.egg
Searching for Pygments==1.6
Best match: Pygments 1.6
Processing Pygments-1.6-py2.7.egg
Pygments 1.6 is already the active version in easy-install.pth
Installing pygmentize script to /Users/rad3/development/sideboard/.tox/py27/bin

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages/Pygments-1.6-py2.7.egg
Searching for docutils==0.11
Best match: docutils 0.11
Processing docutils-0.11-py2.7.egg
docutils 0.11 is already the active version in easy-install.pth
Installing rst2html.py script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing rst2latex.py script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing rst2man.py script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing rst2odt.py script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing rst2odt_prepstyles.py script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing rst2pseudoxml.py script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing rst2s5.py script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing rst2xetex.py script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing rst2xml.py script to /Users/rad3/development/sideboard/.tox/py27/bin
Installing rstpep2html.py script to /Users/rad3/development/sideboard/.tox/py27/bin

Using /Users/rad3/development/sideboard/.tox/py27/lib/python2.7/site-packages/docutils-0.11-py2.7.egg
Finished processing dependencies for sideboard==0.1.0
py27 runtests: commands[1] | coverage run -m py.test
==================================================================== test session starts ====================================================================
platform darwin -- Python 2.7.5 -- pytest-2.4.2
collected 209 items

sideboard/tests/test_configuration.py ..
sideboard/tests/test_jsonrpc.py ...........
sideboard/tests/test_lib.py .......................................
sideboard/tests/test_logging.py .
sideboard/tests/test_sa.py .s...........s............................s.........................................................
sideboard/tests/test_websockets.py ...............F..
sideboard/tests/internal/imports/test_handle_exception.py ............
tests/test_sideboard_public_api.py ....
tests/imports/test_ensure_plugin_module_loaded.py ....
tests/imports/test_get_modules.py ......
tests/imports/test_get_plugin_path_extension.py .
tests/imports/test_overridden_import.py ...........

========================================================================= FAILURES ==========================================================================
________________________________________________________ TestWebsocketSubscriptions.test_unsubscribe ________________________________________________________

self = <sideboard.tests.test_websockets.TestWebsocketSubscriptions testMethod=test_unsubscribe>

    def test_unsubscribe(self):
>       self.test_triggered()

sideboard/tests/test_websockets.py:113:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sideboard.tests.test_websockets.TestWebsocketSubscriptions testMethod=test_unsubscribe>

    def test_triggered(self):
>       self.subscribe(method='self.get_names')

sideboard/tests/test_websockets.py:101:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sideboard.tests.test_websockets.TestWebsocketSubscriptions testMethod=test_unsubscribe>
params = {'client': 'test_unsubscribe', 'method': 'self.get_names'}

    def subscribe(self, **params):
        params.setdefault('client', self.client)
>       return self.call(**params)

sideboard/tests/__init__.py:276:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <sideboard.tests.test_websockets.TestWebsocketSubscriptions testMethod=test_unsubscribe>
params = {'client': 'test_unsubscribe', 'method': 'self.get_names'}, callback = 'callback637022'
result = {'callback': 'callback593131', 'client': 'test_triggered_error', 'data': ['Hello', '19928546672843a7a2f4a37e01131001'], 'trigger': 'change_name'}

    def call(self, **params):
        callback = 'callback{}'.format(randrange(1000000))
        self.ws._send(callback=callback, **params)
        result = self.next()
>       self.assertEqual(callback, result['callback'])
E       AssertionError: u'callback637022' != u'callback593131'
E       - callback637022
E       + callback593131

sideboard/tests/__init__.py:271: AssertionError
---------------------------------------------------------------------- Captured stderr ----------------------------------------------------------------------
2014-03-31 16:30:36,331 [DEBUG] sideboard.lib._websockets.WebSocket: sending {u'client': 'test_unsubscribe', 'method': u'self.get_names', 'callback': u'callback637022'}
2014-03-31 16:30:36,332 [DEBUG] sideboard.lib._websockets._WebSocketClientDispatcher: sending {u'client': 'test_unsubscribe', 'method': u'self.get_names', 'callback': u'callback637022'}
2014-03-31 16:30:36,395 [DEBUG] sideboard.websockets: received {"client": "test_unsubscribe", "method": "self.get_names", "callback": "callback637022"}
2014-03-31 16:30:36,400 [ERROR] sideboard.websockets: unexpected websocket dispatch error
Traceback (most recent call last):
  File "sideboard/websockets.py", line 342, in handle_message
    service, function = self.get_method(method)
  File "sideboard/websockets.py", line 287, in get_method
    return service, getattr(self.services[service], method)
AttributeError: 'TestWebSocket' object has no attribute 'get_names'
2014-03-31 16:30:36,405 [DEBUG] sideboard.websockets: sending {'client': u'test_unsubscribe', 'error': u'\'TestWebSocket\' object has no attribute \'get_names\'\nTraceback (most recent call last):\n  File "sideboard/websockets.py", line 342, in handle_message\n    service, function = self.get_method(method)\n  File "sideboard/websockets.py", line 287, in get_method\n    return service, getattr(self.services[service], method)\nAttributeError: \'TestWebSocket\' object has no attribute \'get_names\'\n', 'callback': u'callback637022'}
2014-03-31 16:30:36,417 [DEBUG] sideboard.lib._websockets._WebSocketClientDispatcher: received '{"callback":"callback637022","client":"test_unsubscribe","error":"\'TestWebSocket\' object has no attribute \'get_names\'\\nTraceback (most recent call last):\\n  File \\"sideboard/websockets.py\\", line 342, in handle_message\\n    service, function = self.get_method(method)\\n  File \\"sideboard/websockets.py\\", line 287, in get_method\\n    return service, getattr(self.services[service], method)\\nAttributeError: \'TestWebSocket\' object has no attribute \'get_names\'\\n"}'
2014-03-31 16:30:36,429 [DEBUG] sideboard.lib._websockets.WebSocket: dispatching {u'client': u'test_unsubscribe', u'error': u'\'TestWebSocket\' object has no attribute \'get_names\'\nTraceback (most recent call last):\n  File "sideboard/websockets.py", line 342, in handle_message\n    service, function = self.get_method(method)\n  File "sideboard/websockets.py", line 287, in get_method\n    return service, getattr(self.services[service], method)\nAttributeError: \'TestWebSocket\' object has no attribute \'get_names\'\n', u'callback': u'callback637022'}
===================================================== 1 failed, 205 passed, 3 skipped in 461.75 seconds =====================================================
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
Coverage.py warning: Trace function changed, measurement is likely wrong: None
ERROR: InvocationError: '/Users/rad3/development/sideboard/.tox/py27/bin/coverage run -m py.test'
py27 runtests: commands[2] | coverage report
Name                                    Stmts   Miss  Cover
-----------------------------------------------------------
sideboard/__init__                         28      7    75%
sideboard/_version                          2      0   100%
sideboard/config                           78      9    88%
sideboard/internal/__init__                 2      0   100%
sideboard/internal/autolog                 84     49    42%
sideboard/internal/connection_checker      47     39    17%
sideboard/internal/imports                200    121    40%
sideboard/internal/logging                 11      1    91%
sideboard/jsonrpc                          65      3    95%
sideboard/lib/__init__                     47     10    79%
sideboard/lib/_cp                          74     18    76%
sideboard/lib/_services                    67     20    70%
sideboard/lib/_threads                    113     20    82%
sideboard/lib/_websockets                 270     74    73%
sideboard/lib/sa/__init__                 148     66    55%
sideboard/lib/sa/_crud                    937    718    23%
sideboard/server                          119     63    47%
sideboard/websockets                      210     12    94%
-----------------------------------------------------------
TOTAL                                    2502   1230    51%
__________________________________________________________________________ summary __________________________________________________________________________
ERROR:   py27: commands failed

real    7m59.568s
user    6m15.976s
sys 0m45.322s
EliAndrewC commented 10 years ago

That is pretty bad; FWIW running with py.test -m 'not functional' only takes about 20 seconds. Which is still a long time for unit tests to run, but I guess that does mean that our server tests are clearly the culprit.

So for what it's worth, I don't think that plugins will ever have to write server tests. So plugin tests will all be super fast, which is the most important thing.

robdennis commented 10 years ago

Do you show the same time for running all tests?

So much time is in the collecting phase, it's baffling

On Mon, Mar 31, 2014 at 8:15 PM, Eli Courtwright notifications@github.com wrote:

That is pretty bad; FWIW running with py.test -m 'not functional' only takes about 20 seconds. Which is still a long time for unit tests to run, but I guess that does mean that our server tests are clearly the culprit.

So for what it's worth, I don't think that plugins will ever have to write server tests. So plugin tests will all be super fast, which is the most important thing.

Reply to this email directly or view it on GitHub: https://github.com/appliedsec/sideboard/issues/44#issuecomment-39157966

EliAndrewC commented 10 years ago

Yeah, it takes about 7 minutes for me as well.

robdennis commented 10 years ago

this ticket itse;fisn't really actionable, so I'd like to propose a couple things:

thoughts @appliedsec/sideboard-assignable ?

EliAndrewC commented 10 years ago

Options 1 and 2 seem sensible, though I'm ambivalent about how much of a priority faster unit tests are. At a glance, there are 28 other open tickets at the moment, and an off-the-cuff count on my part says that I'd consider faster tests to be a higher priority than 12 of them.

Logistically there are definitely some server tests that we could refactor to just be regular unit tests, including

The only tests that really NEED to be server tests IMO are the websocket tests, since I don't think we're meaningfully testing our websocket code otherwise.

Doing the refactoring necessary to run those other tests as basic unit tests is a huge amount of work, and my own preferences/biases put this as being less important than about half of our backlog, so I'm neither very bothered or excited by this.

robdennis commented 10 years ago

As usual, a reasoned and researched response. I'd like to restate my position and we'll see where that leaves us: "Before we expect other people to start using this, we need to prioritize having a reasonable unit testing workflow. Otherwise, we need to be comfortable with the current group of people being the only contributors"

A realistic scenario:

There are a couple of approaches we could take, some overlapping:

all but the first are what I'd rate "low-to-moderate" difficulty, with 2 and 3 really being about trading ease of unit tests vs the work of making it configurable and typing more characters to functional test.

I'd say that these are the kinds of things that I'd expect to have tagged with "unit-test efficiency."

ALRIGHT. Restated. Here are the ways forward as I see them:

I think we're both comfortable with the first one, and unsure if @ftobia has an opinion.

Thoughts?

EliAndrewC commented 10 years ago

To the extent that we want Sideboard to become a successful open source project used by more than one team, the progression that I see as being most likely is this:

My own opinion is that having sane tests which run quickly is only really a prerequisite to the last item on that list. I personally wouldn't feel comfortable promoting Sideboard to the internet at large when the unit tests take 7 minutes to run only 200 tests, for basically the same reasons that you enumerated. I personally DO feel comfortable promoting Sideboard to other teams and people I know personally even when the core unit tests take that long (so long as the unit tests they write for their own plugins will run in a sane amount of time).

Personally I wouldn't really want to tackle the final step of promoting Sideboard to the larger internet until early in 2015, since that will give us time to hammer at it on persona projects and try to get some other teams to use it. Brian has indicated he'd like to try it out with Djangular after we resolve #43. I'd be happy if a couple of random internet denizens started using it before then, but I wouldn't want to open the floodgates too early.

That's the kind of progression as an open source project I've had in mind while thinking about my own priorities for which tickets are most important. Someone who wanted to release Sideboard to the open internet a lot earlier would necessarily prioritize faster tests a lot higher, for all of the reasons you mentioned. In the meantime, the specific suggestions about e.g. making tox not run functional tests by default sound sensible as a temporary measure.

robdennis commented 10 years ago

ok, I think we've established the place where we diverge:

thankfully, I'm well positioned to do the moderate amount of work necessary to make the default tox invocation a lot quicker, simply by having it do less (in the way that I described) and we can come back around to this as we near 2015.

I'm comfortable closing this, and I'll be making a follow-on ticket for the tox work (re-open or comment if I missed something)

ftobia commented 10 years ago

Sounds good to me. My preferences are more in line with Rob's, but since I'm less willing to do the necessary work, they probably shouldn't be given much weight. It's good that we're on the same page w.r.t. suggesting Sideboard to the internet at large.