Summary:

 * If you are writing code in a test to wait for something to happen in
wall-clock time...

   * make sure that you are only doing this in setup or teardown, to
prevent a permanent hang in the test suite; and

   * make sure that you provide a really generous amount of time--say,
10 or 20 times what you seem to require locally--before you make the
test give up and fail.

Negative corollaries:

 * Don't write tests that use wall-clock time to actually verify the
performance of anything.

 * Don't be stingy with the wall-clock time before your test gives up on
some setup or teardown happening.  Give it *plenty* of time.

Rationale:

 * Parallel tests stress system resources a *lot* more than we are used
to.  Specifically, production buildbot slaves scheduled to be purchased
will run *24* test systems in parallel on the same machine (with
parallel postgres instances, memcaches, rabbitmqs, and so on).  This
introduces a whole lot of variability in terms of resource contention.
We're going from barely being able to tax a two core machine to really
pushing a 12 core hyperthreaded machine.

 * Using wall-clock time to verify something is fragile anyway.  Test
something else related instead (e.g., the number of queries performed).

Thanks for your attention.  Let me know of your concerns.

Gary


_______________________________________________
Mailing list: https://launchpad.net/~launchpad-dev
Post to     : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to