4139: Speed up Node Manager tests.
authorBrett Smith <brett@curoverse.com>
Mon, 13 Oct 2014 19:19:15 +0000 (15:19 -0400)
committerBrett Smith <brett@curoverse.com>
Tue, 14 Oct 2014 14:19:36 +0000 (10:19 -0400)
commit704cf4edf9c1f9ff3403a72b383750aaa04a0dfb
treef1aa05ebd4b4823720b816e20f9e6643bf4d4102
parentff9d78bbeb09ca917f0814c6055c47db5a4e7e4a
4139: Speed up Node Manager tests.

Previously, the tests would poll interesting mocks, waiting for them
to be called.  This introduces significant overhead to the tests, and
they would frequently time out on Jenkins.  This modifies the tests to
get more information by blocking on the tested actors, which means
more predictability and less fighting for CPU (typical runtimes for
all the tests improved from 5 seconds to 0.5 seconds on my
workstation).

The downside to this approach is that it ties the tests more tightly
to the underlying actors' implementation.  In particular, they
sometimes send a message and block for a response to ensure that any
internal messages generated by the *last* message have been handled.
This is less than ideal, but I don't have a better idea right now.
services/nodemanager/tests/__init__.py
services/nodemanager/tests/test_clientactor.py
services/nodemanager/tests/test_computenode.py
services/nodemanager/tests/test_daemon.py
services/nodemanager/tests/test_jobqueue.py
services/nodemanager/tests/test_nodelist.py
services/nodemanager/tests/test_timedcallback.py
services/nodemanager/tests/testutil.py