<div>I don&#39;t see any way around issues like this for multiprocess tests.  I&#39;ve added tons of shenanigans to try to prevent it, but it simply cannot be perfect.  There are sleeps everywhere, and some smarter waits, but if you want the parallel test suite to finish in under 20 minutes, then never having non-deterministic failures is not achievable.</div>

<div><br></div><div>My answer: don&#39;t run the test suite while under heavy load.</div><div><br></div><div>-MinRK</div><div><br></div><div><div class="gmail_quote">On Sun, Jun 10, 2012 at 7:39 PM, Fernando Perez <span dir="ltr">&lt;<a href="mailto:fperez.net@gmail.com" target="_blank">fperez.net@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>On Sun, Jun 10, 2012 at 7:36 PM, Fernando Perez &lt;<a href="mailto:fperez.net@gmail.com" target="_blank">fperez.net@gmail.com</a>&gt; wrote:<br>
&gt; Note: it&#39;s not deterministic, but my system was under heavy load at<br>
&gt; the time when it did occur.  That might give Min some ideas...<br>
<br>
</div>These other two also occured only under heavy load, I can&#39;t reproduce<br>
them now that the system isn&#39;t being hit so hard:<br>
<br>
======================================================================<br>
FAIL: %%px --group-outputs=engine<br>
<div>----------------------------------------------------------------------<br>
Traceback (most recent call last):<br>
</div>  File &quot;/home/fperez/usr/lib/python2.7/site-packages/IPython/parallel/tests/test_magics.py&quot;,<br>
line 131, in test_cellpx_groupby_engine<br>
    self.assertEquals(len(lines), len(expected), io.stdout)<br>
AssertionError: Parallel execution on engine(s): [1, 2, 3, 4, 5, 6, 7, 8]<br>
[stdout:1]<br>
stdout<br>
stdout2<br>
[output:1]<br>
&lt;IPython.core.display.HTML at 0x3c65e50&gt;<br>
&lt;IPython.core.display.Math at 0x3c65e50&gt;<br>
Out[1:1]: &lt;IPython.core.display.Math at 0x3c65e50&gt;<br>
[stdout:2]<br>
stdout<br>
stdout2<br>
[output:2]<br>
&lt;IPython.core.display.HTML at 0x3afead0&gt;<br>
&lt;IPython.core.display.Math at 0x3afead0&gt;<br>
Out[2:1]: &lt;IPython.core.display.Math at 0x3afead0&gt;<br>
[stdout:3]<br>
stdout<br>
stdout2<br>
[output:3]<br>
&lt;IPython.core.display.HTML at 0x2dddad0&gt;<br>
&lt;IPython.core.display.Math at 0x2dddad0&gt;<br>
Out[3:1]: &lt;IPython.core.display.Math at 0x2dddad0&gt;<br>
[stdout:4]<br>
stdout<br>
stdout2<br>
[output:4]<br>
&lt;IPython.core.display.HTML at 0x29c2210&gt;<br>
&lt;IPython.core.display.Math at 0x29c2210&gt;<br>
Out[4:1]: &lt;IPython.core.display.Math at 0x29c2210&gt;<br>
[stdout:5]<br>
stdout<br>
stdout2<br>
[output:5]<br>
&lt;IPython.core.display.HTML at 0x2749250&gt;<br>
&lt;IPython.core.display.Math at 0x2749250&gt;<br>
[stdout:6] stdout<br>
[output:6]<br>
&lt;IPython.core.display.HTML at 0x2bf6210&gt;<br>
[stdout:7]<br>
stdout<br>
stdout2<br>
[output:7]<br>
&lt;IPython.core.display.HTML at 0x30dded0&gt;<br>
&lt;IPython.core.display.Math at 0x30dded0&gt;<br>
Out[7:1]: &lt;IPython.core.display.Math at 0x30dded0&gt;<br>
[stdout:8]<br>
stdout<br>
stdout2<br>
[output:8]<br>
&lt;IPython.core.display.HTML at 0x3b1dcd0&gt;<br>
&lt;IPython.core.display.Math at 0x3b1dcd0&gt;<br>
Out[8:16]: &lt;IPython.core.display.Math at 0x3b1dcd0&gt;<br>
<br>
    &#39;51 != 56&#39; = &#39;%s != %s&#39; % (safe_repr(51), safe_repr(56))<br>
    u&#39;Parallel execution on engine(s): [1, 2, 3, 4, 5, 6, 7,<br>
8]\n[stdout:1] \nstdout\nstdout2\n[output:1]\n&lt;IPython.core.display.HTML<br>
at 0x3c65e50&gt;\n&lt;IPython.core.display.Math at 0x3c65e50&gt;\nOut[1:1]:<br>
&lt;IPython.core.display.Math at 0x3c65e50&gt;\n[stdout:2]<br>
\nstdout\nstdout2\n[output:2]\n&lt;IPython.core.display.HTML at<br>
0x3afead0&gt;\n&lt;IPython.core.display.Math at 0x3afead0&gt;\nOut[2:1]:<br>
&lt;IPython.core.display.Math at 0x3afead0&gt;\n[stdout:3]<br>
\nstdout\nstdout2\n[output:3]\n&lt;IPython.core.display.HTML at<br>
0x2dddad0&gt;\n&lt;IPython.core.display.Math at 0x2dddad0&gt;\nOut[3:1]:<br>
&lt;IPython.core.display.Math at 0x2dddad0&gt;\n[stdout:4]<br>
\nstdout\nstdout2\n[output:4]\n&lt;IPython.core.display.HTML at<br>
0x29c2210&gt;\n&lt;IPython.core.display.Math at 0x29c2210&gt;\nOut[4:1]:<br>
&lt;IPython.core.display.Math at 0x29c2210&gt;\n[stdout:5]<br>
\nstdout\nstdout2\n[output:5]\n&lt;IPython.core.display.HTML at<br>
0x2749250&gt;\n&lt;IPython.core.display.Math at 0x2749250&gt;\n[stdout:6]<br>
stdout\n[output:6]\n&lt;IPython.core.display.HTML at<br>
0x2bf6210&gt;\n[stdout:7]<br>
\nstdout\nstdout2\n[output:7]\n&lt;IPython.core.display.HTML at<br>
0x30dded0&gt;\n&lt;IPython.core.display.Math at 0x30dded0&gt;\nOut[7:1]:<br>
&lt;IPython.core.display.Math at 0x30dded0&gt;\n[stdout:8]<br>
\nstdout\nstdout2\n[output:8]\n&lt;IPython.core.display.HTML at<br>
0x3b1dcd0&gt;\n&lt;IPython.core.display.Math at 0x3b1dcd0&gt;\nOut[8:16]:<br>
&lt;IPython.core.display.Math at 0x3b1dcd0&gt;\n&#39; =<br>
self._formatMessage(u&#39;Parallel execution on engine(s): [1, 2, 3, 4, 5,<br>
6, 7, 8]\n[stdout:1]<br>
\nstdout\nstdout2\n[output:1]\n&lt;IPython.core.display.HTML at<br>
0x3c65e50&gt;\n&lt;IPython.core.display.Math at 0x3c65e50&gt;\nOut[1:1]:<br>
&lt;IPython.core.display.Math at 0x3c65e50&gt;\n[stdout:2]<br>
\nstdout\nstdout2\n[output:2]\n&lt;IPython.core.display.HTML at<br>
0x3afead0&gt;\n&lt;IPython.core.display.Math at 0x3afead0&gt;\nOut[2:1]:<br>
&lt;IPython.core.display.Math at 0x3afead0&gt;\n[stdout:3]<br>
\nstdout\nstdout2\n[output:3]\n&lt;IPython.core.display.HTML at<br>
0x2dddad0&gt;\n&lt;IPython.core.display.Math at 0x2dddad0&gt;\nOut[3:1]:<br>
&lt;IPython.core.display.Math at 0x2dddad0&gt;\n[stdout:4]<br>
\nstdout\nstdout2\n[output:4]\n&lt;IPython.core.display.HTML at<br>
0x29c2210&gt;\n&lt;IPython.core.display.Math at 0x29c2210&gt;\nOut[4:1]:<br>
&lt;IPython.core.display.Math at 0x29c2210&gt;\n[stdout:5]<br>
\nstdout\nstdout2\n[output:5]\n&lt;IPython.core.display.HTML at<br>
0x2749250&gt;\n&lt;IPython.core.display.Math at 0x2749250&gt;\n[stdout:6]<br>
stdout\n[output:6]\n&lt;IPython.core.display.HTML at<br>
0x2bf6210&gt;\n[stdout:7]<br>
\nstdout\nstdout2\n[output:7]\n&lt;IPython.core.display.HTML at<br>
0x30dded0&gt;\n&lt;IPython.core.display.Math at 0x30dded0&gt;\nOut[7:1]:<br>
&lt;IPython.core.display.Math at 0x30dded0&gt;\n[stdout:8]<br>
\nstdout\nstdout2\n[output:8]\n&lt;IPython.core.display.HTML at<br>
0x3b1dcd0&gt;\n&lt;IPython.core.display.Math at 0x3b1dcd0&gt;\nOut[8:16]:<br>
&lt;IPython.core.display.Math at 0x3b1dcd0&gt;\n&#39;, &#39;51 != 56&#39;)<br>
&gt;&gt;  raise self.failureException(u&#39;Parallel execution on engine(s): [1, 2, 3, 4, 5, 6, 7, 8]\n[stdout:1] \nstdout\nstdout2\n[output:1]\n&lt;IPython.core.display.HTML at 0x3c65e50&gt;\n&lt;IPython.core.display.Math at 0x3c65e50&gt;\nOut[1:1]: &lt;IPython.core.display.Math at 0x3c65e50&gt;\n[stdout:2] \nstdout\nstdout2\n[output:2]\n&lt;IPython.core.display.HTML at 0x3afead0&gt;\n&lt;IPython.core.display.Math at 0x3afead0&gt;\nOut[2:1]: &lt;IPython.core.display.Math at 0x3afead0&gt;\n[stdout:3] \nstdout\nstdout2\n[output:3]\n&lt;IPython.core.display.HTML at 0x2dddad0&gt;\n&lt;IPython.core.display.Math at 0x2dddad0&gt;\nOut[3:1]: &lt;IPython.core.display.Math at 0x2dddad0&gt;\n[stdout:4] \nstdout\nstdout2\n[output:4]\n&lt;IPython.core.display.HTML at 0x29c2210&gt;\n&lt;IPython.core.display.Math at 0x29c2210&gt;\nOut[4:1]: &lt;IPython.core.display.Math at 0x29c2210&gt;\n[stdout:5] \nstdout\nstdout2\n[output:5]\n&lt;IPython.core.display.HTML at 0x2749250&gt;\n&lt;IPython.core.display.Math at 0x2749250&gt;\n[stdout:6] stdout\n[output:6]\n&lt;IPython.core.display.HTML at 0x2bf6210&gt;\n[stdout:7] \nstdout\nstdout2\n[output:7]\n&lt;IPython.core.display.HTML at 0x30dded0&gt;\n&lt;IPython.core.display.Math at 0x30dded0&gt;\nOut[7:1]: &lt;IPython.core.display.Math at 0x30dded0&gt;\n[stdout:8] \nstdout\nstdout2\n[output:8]\n&lt;IPython.core.display.HTML at 0x3b1dcd0&gt;\n&lt;IPython.core.display.Math at 0x3b1dcd0&gt;\nOut[8:16]: &lt;IPython.core.display.Math at 0x3b1dcd0&gt;\n&#39;)<br>



<br>
<br>
======================================================================<br>
FAIL: %%px --group-outputs=order<br>
<div>----------------------------------------------------------------------<br>
Traceback (most recent call last):<br>
</div>  File &quot;/home/fperez/usr/lib/python2.7/site-packages/IPython/parallel/tests/test_magics.py&quot;,<br>
line 173, in test_cellpx_groupby_order<br>
    self.assertEquals(len(lines), len(expected), io.stdout)<br>
AssertionError: Parallel execution on engine(s): [1, 2, 3, 4, 5, 6, 7, 8]<br>
<br>
    &#39;0 != 64&#39; = &#39;%s != %s&#39; % (safe_repr(0), safe_repr(64))<br>
    &#39;Parallel execution on engine(s): [1, 2, 3, 4, 5, 6, 7, 8]\n&#39; =<br>
self._formatMessage(&#39;Parallel execution on engine(s): [1, 2, 3, 4, 5,<br>
6, 7, 8]\n&#39;, &#39;0 != 64&#39;)<br>
&gt;&gt;  raise self.failureException(&#39;Parallel execution on engine(s): [1, 2, 3, 4, 5, 6, 7, 8]\n&#39;)<br>
<div><div>_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org" target="_blank">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
</div></div></blockquote></div><br></div>