This commit is contained in:
manojsdoshi
2021-01-21 18:53:50 +00:00
parent a8d23df44a
commit 46ee4c24ed
3297 changed files with 99837 additions and 72060 deletions

View File

@@ -103,7 +103,7 @@ $(function() {
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">namespace </span>test {</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<a class="code" href="namespaceripple_1_1test.html#a356a2138c78c6a1b4a84f3a36d2991e6">incPorts</a>();</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<a class="code" href="namespaceripple_1_1test.html#a474d18c596a8328b44506add96372d86">incPorts</a>(<span class="keywordtype">int</span> times);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; </div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">namespace </span>detail {</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
@@ -586,144 +586,143 @@ $(function() {
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; , print_log_{!quiet || print_log}</div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;{</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="comment">// incPort twice (2*jobIndex_) because some tests need two envs</span></div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">for</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> i = 0; i &lt; 2 * job_index_; ++i)</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="namespaceripple_1_1test.html#a356a2138c78c6a1b4a84f3a36d2991e6">test::incPorts</a>();</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; </div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">if</span> (num_jobs_ &gt; 1)</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; {</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; keep_alive_thread_ = <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/thread.html">std::thread</a>([<span class="keyword">this</span>] {</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> last_count = get_keep_alive_count();</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">while</span> (this-&gt;continue_keep_alive_)</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// Use a small sleep time so in the normal case the child</span></div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// process may shutdown quickly. However, to protect against</span></div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="comment">// false alarms, use a longer sleep time later on.</span></div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/sleep_for.html">std::this_thread::sleep_for</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::milliseconds</a>(500));</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">auto</span> cur_count = this-&gt;get_keep_alive_count();</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (cur_count == last_count)</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// longer sleep time to protect against false alarms</span></div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/sleep_for.html">std::this_thread::sleep_for</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::seconds</a>(2));</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; cur_count = this-&gt;get_keep_alive_count();</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span> (cur_count == last_count)</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; {</div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="comment">// assume parent process is no longer alive</span></div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/cerr.html">std::cerr</a> &lt;&lt; <span class="stringliteral">&quot;multi_runner_child &quot;</span> &lt;&lt; job_index_</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; &lt;&lt; <span class="stringliteral">&quot;: Assuming parent died, exiting.\n&quot;</span>;</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/program/exit.html">std::exit</a>(EXIT_FAILURE);</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; last_count = cur_count;</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; });</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; }</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;}</div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; </div>
<div class="line"><a name="l00551"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a982ea553cf802a50f5db000df6e2a272"> 551</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a982ea553cf802a50f5db000df6e2a272">multi_runner_child::~multi_runner_child</a>()</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;{</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a6c266b81d7204ca8b92111eb21f3dce6">num_jobs_</a> &gt; 1)</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; {</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#aa01678b2b168d1bf11a3f3ea81ea419f">continue_keep_alive_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a14fd7ef5b5e7f3a47c0a2f26dc8e33bc">keep_alive_thread_</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/thread/join.html">join</a>();</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; </div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#a226a4819903f1c10396895c7c6f0f3ee">add</a>(<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a20d5abc2b64e1b654301daac7c0a949e">results_</a>);</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;}</div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; </div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
<div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#aef362e03138daa4cad7e3c735670a6d2"> 563</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#aef362e03138daa4cad7e3c735670a6d2">multi_runner_child::tests</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a20d5abc2b64e1b654301daac7c0a949e">results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1results.html#a7942d2aed4d390ecd26834be960c895e">total</a>;</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;}</div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; </div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
<div class="line"><a name="l00569"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#aed74ca01b2aa07bd2f4ecded00a52f51"> 569</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#aed74ca01b2aa07bd2f4ecded00a52f51">multi_runner_child::suites</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a20d5abc2b64e1b654301daac7c0a949e">results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1results.html#aa7d32185206c3c05870b55e95022448c">suites</a>;</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;}</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; </div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a88e3792ce02aac13f30f53d9f0f80203"> 575</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a88e3792ce02aac13f30f53d9f0f80203">multi_runner_child::add_failures</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> failures)</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;{</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a20d5abc2b64e1b654301daac7c0a949e">results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1results.html#aec5257448baa2a4dc3e55576c6cbcdda">failed</a> += failures;</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ada8db2608781c8b940a4880715b32e9b">any_failed</a>(failures != 0);</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;}</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; </div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00582"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#aac62e5455c9b12398c39bf74b0f774de"> 582</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#aac62e5455c9b12398c39bf74b0f774de">multi_runner_child::on_suite_begin</a>(beast::unit_test::suite_info <span class="keyword">const</span>&amp; info)</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;{</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a> = <a class="code" href="structripple_1_1test_1_1detail_1_1suite__results.html">detail::suite_results</a>{info.full_name()};</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">message_queue_send</a>(MessageType::test_start, <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1suite__results.html#ac58e77e23d8a14b47d0ddaf4fa2e0060">name</a>);</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;}</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; </div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a9f2a73456540e386e4bbeeb145062b71"> 589</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a9f2a73456540e386e4bbeeb145062b71">multi_runner_child::on_suite_end</a>()</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;{</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a20d5abc2b64e1b654301daac7c0a949e">results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1results.html#a6a39caedf6133fc04fa42bffff52d2d7">add</a>(<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a>);</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">message_queue_send</a>(MessageType::test_end, <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1suite__results.html#ac58e77e23d8a14b47d0ddaf4fa2e0060">name</a>);</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;}</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; </div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00596"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a51ab645fb7ef38a940ade75ad2299412"> 596</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a51ab645fb7ef38a940ade75ad2299412">multi_runner_child::on_case_begin</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; name)</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;{</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a> = <a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html">detail::case_results</a>(name);</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; </div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a7f4f75d95550f8910566e61d9d80f22c">quiet_</a>)</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; </div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream.html">std::stringstream</a> s;</div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a6c266b81d7204ca8b92111eb21f3dce6">num_jobs_</a> &gt; 1)</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; s &lt;&lt; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#af780bfef631c84d178ddf8f5ba36ee09">job_index_</a> &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; s &lt;&lt; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1suite__results.html#ac58e77e23d8a14b47d0ddaf4fa2e0060">name</a></div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; &lt;&lt; (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a74fcc2f7d9a7eefb00694e7a459e6bbb">name</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">empty</a>() ? <span class="stringliteral">&quot;&quot;</span> : (<span class="stringliteral">&quot; &quot;</span> + <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a74fcc2f7d9a7eefb00694e7a459e6bbb">name</a>)) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">message_queue_send</a>(MessageType::log, s.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html">str</a>());</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;}</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; </div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a14311c8b17066b96487dbc988dcb18d2"> 612</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a14311c8b17066b96487dbc988dcb18d2">multi_runner_child::on_case_end</a>()</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;{</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1suite__results.html#a9ebff78dae2bcd93e3638c46f320ceb0">add</a>(<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>);</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;}</div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; </div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#acac5db0c19a6e1da379f9e4b91accc21"> 618</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#acac5db0c19a6e1da379f9e4b91accc21">multi_runner_child::on_pass</a>()</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;{</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; ++<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a8067777b30222c96a921b858ebaaae17">total</a>;</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;}</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; </div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#ad6582d8735b76b0673b62b10e89c36dd"> 624</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#ad6582d8735b76b0673b62b10e89c36dd">multi_runner_child::on_fail</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; reason)</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;{</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; ++<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a0908564b9ed1b0ac1a409649a21a63ea">failed</a>;</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; ++<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a8067777b30222c96a921b858ebaaae17">total</a>;</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream.html">std::stringstream</a> s;</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a6c266b81d7204ca8b92111eb21f3dce6">num_jobs_</a> &gt; 1)</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; s &lt;&lt; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#af780bfef631c84d178ddf8f5ba36ee09">job_index_</a> &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; s &lt;&lt; <span class="stringliteral">&quot;#&quot;</span> &lt;&lt; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a8067777b30222c96a921b858ebaaae17">total</a> &lt;&lt; <span class="stringliteral">&quot; failed&quot;</span> &lt;&lt; (reason.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">empty</a>() ? <span class="stringliteral">&quot;&quot;</span> : <span class="stringliteral">&quot;: &quot;</span>)</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; &lt;&lt; reason &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">message_queue_send</a>(MessageType::log, s.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html">str</a>());</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;}</div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; </div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a0651d47d9a021801a30e9a0b60844d0a"> 637</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a0651d47d9a021801a30e9a0b60844d0a">multi_runner_child::on_log</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; msg)</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;{</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a606b8616d185b74788e9b0fece55260c">print_log_</a>)</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; </div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream.html">std::stringstream</a> s;</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a6c266b81d7204ca8b92111eb21f3dce6">num_jobs_</a> &gt; 1)</div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; s &lt;&lt; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#af780bfef631c84d178ddf8f5ba36ee09">job_index_</a> &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; s &lt;&lt; msg;</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">message_queue_send</a>(MessageType::log, s.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html">str</a>());</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;}</div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; </div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;<span class="keyword">namespace </span>detail {</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="keyword">template</span> <span class="keyword">class </span>multi_runner_base&lt;true&gt;;</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;<span class="keyword">template</span> <span class="keyword">class </span>multi_runner_base&lt;false&gt;;</div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; </div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;} <span class="comment">// namespace test</span></div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <a class="code" href="namespaceripple_1_1test.html#a474d18c596a8328b44506add96372d86">test::incPorts</a>(2 * job_index_);</div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; </div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (num_jobs_ &gt; 1)</div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; keep_alive_thread_ = <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/thread.html">std::thread</a>([<span class="keyword">this</span>] {</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> last_count = get_keep_alive_count();</div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">while</span> (this-&gt;continue_keep_alive_)</div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; {</div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">// Use a small sleep time so in the normal case the child</span></div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// process may shutdown quickly. However, to protect against</span></div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// false alarms, use a longer sleep time later on.</span></div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/sleep_for.html">std::this_thread::sleep_for</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::milliseconds</a>(500));</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keyword">auto</span> cur_count = this-&gt;get_keep_alive_count();</div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">if</span> (cur_count == last_count)</div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// longer sleep time to protect against false alarms</span></div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/sleep_for.html">std::this_thread::sleep_for</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::seconds</a>(2));</div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; cur_count = this-&gt;get_keep_alive_count();</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span> (cur_count == last_count)</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// assume parent process is no longer alive</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/cerr.html">std::cerr</a> &lt;&lt; <span class="stringliteral">&quot;multi_runner_child &quot;</span> &lt;&lt; job_index_</div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; &lt;&lt; <span class="stringliteral">&quot;: Assuming parent died, exiting.\n&quot;</span>;</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/program/exit.html">std::exit</a>(EXIT_FAILURE);</div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; }</div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; last_count = cur_count;</div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; });</div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;}</div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; </div>
<div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a982ea553cf802a50f5db000df6e2a272"> 550</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a982ea553cf802a50f5db000df6e2a272">multi_runner_child::~multi_runner_child</a>()</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;{</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a6c266b81d7204ca8b92111eb21f3dce6">num_jobs_</a> &gt; 1)</div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; {</div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#aa01678b2b168d1bf11a3f3ea81ea419f">continue_keep_alive_</a> = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a14fd7ef5b5e7f3a47c0a2f26dc8e33bc">keep_alive_thread_</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/thread/thread/join.html">join</a>();</div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; </div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#a226a4819903f1c10396895c7c6f0f3ee">add</a>(<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a20d5abc2b64e1b654301daac7c0a949e">results_</a>);</div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;}</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; </div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
<div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#aef362e03138daa4cad7e3c735670a6d2"> 562</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#aef362e03138daa4cad7e3c735670a6d2">multi_runner_child::tests</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a20d5abc2b64e1b654301daac7c0a949e">results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1results.html#a7942d2aed4d390ecd26834be960c895e">total</a>;</div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;}</div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; </div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a></div>
<div class="line"><a name="l00568"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#aed74ca01b2aa07bd2f4ecded00a52f51"> 568</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#aed74ca01b2aa07bd2f4ecded00a52f51">multi_runner_child::suites</a>()<span class="keyword"> const</span></div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="keyword"></span>{</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a20d5abc2b64e1b654301daac7c0a949e">results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1results.html#aa7d32185206c3c05870b55e95022448c">suites</a>;</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;}</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; </div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a88e3792ce02aac13f30f53d9f0f80203"> 574</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a88e3792ce02aac13f30f53d9f0f80203">multi_runner_child::add_failures</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> failures)</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;{</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a20d5abc2b64e1b654301daac7c0a949e">results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1results.html#aec5257448baa2a4dc3e55576c6cbcdda">failed</a> += failures;</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ada8db2608781c8b940a4880715b32e9b">any_failed</a>(failures != 0);</div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;}</div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; </div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00581"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#aac62e5455c9b12398c39bf74b0f774de"> 581</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#aac62e5455c9b12398c39bf74b0f774de">multi_runner_child::on_suite_begin</a>(beast::unit_test::suite_info <span class="keyword">const</span>&amp; info)</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;{</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a> = <a class="code" href="structripple_1_1test_1_1detail_1_1suite__results.html">detail::suite_results</a>{info.full_name()};</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">message_queue_send</a>(MessageType::test_start, <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1suite__results.html#ac58e77e23d8a14b47d0ddaf4fa2e0060">name</a>);</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;}</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; </div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a9f2a73456540e386e4bbeeb145062b71"> 588</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a9f2a73456540e386e4bbeeb145062b71">multi_runner_child::on_suite_end</a>()</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;{</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a20d5abc2b64e1b654301daac7c0a949e">results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1results.html#a6a39caedf6133fc04fa42bffff52d2d7">add</a>(<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a>);</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">message_queue_send</a>(MessageType::test_end, <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1suite__results.html#ac58e77e23d8a14b47d0ddaf4fa2e0060">name</a>);</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;}</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; </div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00595"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a51ab645fb7ef38a940ade75ad2299412"> 595</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a51ab645fb7ef38a940ade75ad2299412">multi_runner_child::on_case_begin</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; name)</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;{</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a> = <a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html">detail::case_results</a>(name);</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; </div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a7f4f75d95550f8910566e61d9d80f22c">quiet_</a>)</div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; </div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream.html">std::stringstream</a> s;</div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a6c266b81d7204ca8b92111eb21f3dce6">num_jobs_</a> &gt; 1)</div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; s &lt;&lt; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#af780bfef631c84d178ddf8f5ba36ee09">job_index_</a> &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; s &lt;&lt; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1suite__results.html#ac58e77e23d8a14b47d0ddaf4fa2e0060">name</a></div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; &lt;&lt; (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a74fcc2f7d9a7eefb00694e7a459e6bbb">name</a>.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">empty</a>() ? <span class="stringliteral">&quot;&quot;</span> : (<span class="stringliteral">&quot; &quot;</span> + <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a74fcc2f7d9a7eefb00694e7a459e6bbb">name</a>)) &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">message_queue_send</a>(MessageType::log, s.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html">str</a>());</div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;}</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; </div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a14311c8b17066b96487dbc988dcb18d2"> 611</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a14311c8b17066b96487dbc988dcb18d2">multi_runner_child::on_case_end</a>()</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;{</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a31b2bcb6eb397542f0be954ee7b9b6b9">suite_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1suite__results.html#a9ebff78dae2bcd93e3638c46f320ceb0">add</a>(<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>);</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;}</div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; </div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#acac5db0c19a6e1da379f9e4b91accc21"> 617</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#acac5db0c19a6e1da379f9e4b91accc21">multi_runner_child::on_pass</a>()</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;{</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; ++<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a8067777b30222c96a921b858ebaaae17">total</a>;</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;}</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; </div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#ad6582d8735b76b0673b62b10e89c36dd"> 623</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#ad6582d8735b76b0673b62b10e89c36dd">multi_runner_child::on_fail</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; reason)</div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;{</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; ++<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a0908564b9ed1b0ac1a409649a21a63ea">failed</a>;</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; ++<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a8067777b30222c96a921b858ebaaae17">total</a>;</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream.html">std::stringstream</a> s;</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a6c266b81d7204ca8b92111eb21f3dce6">num_jobs_</a> &gt; 1)</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; s &lt;&lt; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#af780bfef631c84d178ddf8f5ba36ee09">job_index_</a> &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; s &lt;&lt; <span class="stringliteral">&quot;#&quot;</span> &lt;&lt; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">case_results_</a>.<a class="code" href="structripple_1_1test_1_1detail_1_1case__results.html#a8067777b30222c96a921b858ebaaae17">total</a> &lt;&lt; <span class="stringliteral">&quot; failed&quot;</span> &lt;&lt; (reason.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">empty</a>() ? <span class="stringliteral">&quot;&quot;</span> : <span class="stringliteral">&quot;: &quot;</span>)</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; &lt;&lt; reason &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">message_queue_send</a>(MessageType::log, s.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html">str</a>());</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;}</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; </div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;<span class="keywordtype">void</span></div>
<div class="line"><a name="l00636"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1multi__runner__child.html#a0651d47d9a021801a30e9a0b60844d0a"> 636</a></span>&#160;<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a0651d47d9a021801a30e9a0b60844d0a">multi_runner_child::on_log</a>(<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> <span class="keyword">const</span>&amp; msg)</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;{</div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a606b8616d185b74788e9b0fece55260c">print_log_</a>)</div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; </div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream.html">std::stringstream</a> s;</div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1test_1_1multi__runner__child.html#a6c266b81d7204ca8b92111eb21f3dce6">num_jobs_</a> &gt; 1)</div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; s &lt;&lt; <a class="code" href="classripple_1_1test_1_1multi__runner__child.html#af780bfef631c84d178ddf8f5ba36ee09">job_index_</a> &lt;&lt; <span class="stringliteral">&quot;&gt; &quot;</span>;</div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; s &lt;&lt; msg;</div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">message_queue_send</a>(MessageType::log, s.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html">str</a>());</div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;}</div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; </div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="keyword">namespace </span>detail {</div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;<span class="keyword">template</span> <span class="keyword">class </span>multi_runner_base&lt;true&gt;;</div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="keyword">template</span> <span class="keyword">class </span>multi_runner_base&lt;false&gt;;</div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; </div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;} <span class="comment">// namespace test</span></div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;} <span class="comment">// namespace ripple</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html_aa7d32185206c3c05870b55e95022448c"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html#aa7d32185206c3c05870b55e95022448c">ripple::test::detail::results::suites</a></div><div class="ttdeci">std::size_t suites</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00084">multi_runner.h:84</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1detail_1_1multi__runner__base_html_a0331a2ea0d001c21aba5d5f835409c7f"><div class="ttname"><a href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#a0331a2ea0d001c21aba5d5f835409c7f">ripple::test::detail::multi_runner_base::suites</a></div><div class="ttdeci">std::size_t suites() const</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00376">multi_runner.cpp:376</a></div></div>
@@ -760,20 +759,21 @@ $(function() {
<div class="ttc" id="aclassripple_1_1test_1_1detail_1_1multi__runner__base_html_ab4ad584e02145885460bedaca75c306a"><div class="ttname"><a href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab4ad584e02145885460bedaca75c306a">ripple::test::detail::multi_runner_base::message_queue_send</a></div><div class="ttdeci">void message_queue_send(MessageType mt, std::string const &amp;s)</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00357">multi_runner.cpp:357</a></div></div>
<div class="ttc" id="alock_guard_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/lock_guard.html">std::lock_guard</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="acerr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/cerr.html">std::cerr</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a9f2a73456540e386e4bbeeb145062b71"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a9f2a73456540e386e4bbeeb145062b71">ripple::test::multi_runner_child::on_suite_end</a></div><div class="ttdeci">virtual void on_suite_end() override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00589">multi_runner.cpp:589</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_aef362e03138daa4cad7e3c735670a6d2"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#aef362e03138daa4cad7e3c735670a6d2">ripple::test::multi_runner_child::tests</a></div><div class="ttdeci">std::size_t tests() const</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00563">multi_runner.cpp:563</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a9f2a73456540e386e4bbeeb145062b71"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a9f2a73456540e386e4bbeeb145062b71">ripple::test::multi_runner_child::on_suite_end</a></div><div class="ttdeci">virtual void on_suite_end() override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00588">multi_runner.cpp:588</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_aef362e03138daa4cad7e3c735670a6d2"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#aef362e03138daa4cad7e3c735670a6d2">ripple::test::multi_runner_child::tests</a></div><div class="ttdeci">std::size_t tests() const</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00562">multi_runner.cpp:562</a></div></div>
<div class="ttc" id="aiostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/iostream.html">iostream</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1suite__results_html"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1suite__results.html">ripple::test::detail::suite_results</a></div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00059">multi_runner.h:59</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html_a6a39caedf6133fc04fa42bffff52d2d7"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html#a6a39caedf6133fc04fa42bffff52d2d7">ripple::test::detail::results::add</a></div><div class="ttdeci">void add(suite_results const &amp;r)</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00064">multi_runner.cpp:64</a></div></div>
<div class="ttc" id="aalgorithm_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/algorithm.html">algorithm</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html">ripple::test::detail::results</a></div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00075">multi_runner.h:75</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__parent_html_a433a4a5b63dfc8a51576e93184803d4c"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__parent.html#a433a4a5b63dfc8a51576e93184803d4c">ripple::test::multi_runner_parent::suites</a></div><div class="ttdeci">std::size_t suites() const</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00495">multi_runner.cpp:495</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a982ea553cf802a50f5db000df6e2a272"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a982ea553cf802a50f5db000df6e2a272">ripple::test::multi_runner_child::~multi_runner_child</a></div><div class="ttdeci">~multi_runner_child()</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00551">multi_runner.cpp:551</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a474d18c596a8328b44506add96372d86"><div class="ttname"><a href="namespaceripple_1_1test.html#a474d18c596a8328b44506add96372d86">ripple::test::incPorts</a></div><div class="ttdeci">void incPorts(int times)</div><div class="ttdef"><b>Definition:</b> <a href="envconfig_8cpp_source.html#l00029">envconfig.cpp:29</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a982ea553cf802a50f5db000df6e2a272"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a982ea553cf802a50f5db000df6e2a272">ripple::test::multi_runner_child::~multi_runner_child</a></div><div class="ttdeci">~multi_runner_child()</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00550">multi_runner.cpp:550</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1detail_html_a1b13ebf18ced7b153e56986bd9946d13"><div class="ttname"><a href="namespaceripple_1_1test_1_1detail.html#a1b13ebf18ced7b153e56986bd9946d13">ripple::test::detail::fmtdur</a></div><div class="ttdeci">std::string fmtdur(typename clock_type::duration const &amp;d)</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00040">multi_runner.cpp:40</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_aac62e5455c9b12398c39bf74b0f774de"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#aac62e5455c9b12398c39bf74b0f774de">ripple::test::multi_runner_child::on_suite_begin</a></div><div class="ttdeci">virtual void on_suite_begin(beast::unit_test::suite_info const &amp;info) override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00582">multi_runner.cpp:582</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_aac62e5455c9b12398c39bf74b0f774de"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#aac62e5455c9b12398c39bf74b0f774de">ripple::test::multi_runner_child::on_suite_begin</a></div><div class="ttdeci">virtual void on_suite_begin(beast::unit_test::suite_info const &amp;info) override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00581">multi_runner.cpp:581</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1detail_1_1multi__runner__base_html_ab30711010c11d2d7aa3e8a3eea68e805"><div class="ttname"><a href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#ab30711010c11d2d7aa3e8a3eea68e805">ripple::test::detail::multi_runner_base::add_failures</a></div><div class="ttdeci">void add_failures(std::size_t failures)</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00383">multi_runner.cpp:383</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html_a0e2b004a6b7e2158ac554da847565eab"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html#a0e2b004a6b7e2158ac554da847565eab">ripple::test::detail::results::cases</a></div><div class="ttdeci">std::size_t cases</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00085">multi_runner.h:85</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_aed74ca01b2aa07bd2f4ecded00a52f51"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#aed74ca01b2aa07bd2f4ecded00a52f51">ripple::test::multi_runner_child::suites</a></div><div class="ttdeci">std::size_t suites() const</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00569">multi_runner.cpp:569</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_aed74ca01b2aa07bd2f4ecded00a52f51"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#aed74ca01b2aa07bd2f4ecded00a52f51">ripple::test::multi_runner_child::suites</a></div><div class="ttdeci">std::size_t suites() const</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00568">multi_runner.cpp:568</a></div></div>
<div class="ttc" id="athread_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/thread.html">std::thread</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__parent_html_a355c060adb28996d8a194589cf9e08d8"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__parent.html#a355c060adb28996d8a194589cf9e08d8">ripple::test::multi_runner_parent::continue_message_queue_</a></div><div class="ttdeci">std::atomic&lt; bool &gt; continue_message_queue_</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00223">multi_runner.h:223</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1detail_1_1multi__runner__base_html_af05ea88bd732b9d7db950ec4bec70604"><div class="ttname"><a href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#af05ea88bd732b9d7db950ec4bec70604">ripple::test::detail::multi_runner_base::checkout_job_index</a></div><div class="ttdeci">std::size_t checkout_job_index()</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00307">multi_runner.cpp:307</a></div></div>
@@ -787,10 +787,10 @@ $(function() {
<div class="ttc" id="aclassripple_1_1test_1_1detail_1_1multi__runner__base_html_afe4e245ee815663245d23372c4f9e65b"><div class="ttname"><a href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#afe4e245ee815663245d23372c4f9e65b">ripple::test::detail::multi_runner_base&lt; true &gt;::MessageType</a></div><div class="ttdeci">MessageType</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00169">multi_runner.h:169</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html_a7942d2aed4d390ecd26834be960c895e"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html#a7942d2aed4d390ecd26834be960c895e">ripple::test::detail::results::total</a></div><div class="ttdeci">std::size_t total</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00086">multi_runner.h:86</a></div></div>
<div class="ttc" id="aflush_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream/flush.html">std::ostream::flush</a></div><div class="ttdeci">T flush(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a0651d47d9a021801a30e9a0b60844d0a"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a0651d47d9a021801a30e9a0b60844d0a">ripple::test::multi_runner_child::on_log</a></div><div class="ttdeci">virtual void on_log(std::string const &amp;s) override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00637">multi_runner.cpp:637</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a0651d47d9a021801a30e9a0b60844d0a"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a0651d47d9a021801a30e9a0b60844d0a">ripple::test::multi_runner_child::on_log</a></div><div class="ttdeci">virtual void on_log(std::string const &amp;s) override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00636">multi_runner.cpp:636</a></div></div>
<div class="ttc" id="aerase_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/set/erase.html">std::set::erase</a></div><div class="ttdeci">T erase(T... args)</div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1suite__results_html_a383f310236105700138c7d575ef40989"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1suite__results.html#a383f310236105700138c7d575ef40989">ripple::test::detail::suite_results::cases</a></div><div class="ttdeci">std::size_t cases</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00062">multi_runner.h:62</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a88e3792ce02aac13f30f53d9f0f80203"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a88e3792ce02aac13f30f53d9f0f80203">ripple::test::multi_runner_child::add_failures</a></div><div class="ttdeci">void add_failures(std::size_t failures)</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00575">multi_runner.cpp:575</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a88e3792ce02aac13f30f53d9f0f80203"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a88e3792ce02aac13f30f53d9f0f80203">ripple::test::multi_runner_child::add_failures</a></div><div class="ttdeci">void add_failures(std::size_t failures)</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00574">multi_runner.cpp:574</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a6c266b81d7204ca8b92111eb21f3dce6"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a6c266b81d7204ca8b92111eb21f3dce6">ripple::test::multi_runner_child::num_jobs_</a></div><div class="ttdeci">std::size_t num_jobs_</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00261">multi_runner.h:261</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a07ec20cef34bbc2d7b4694ef4a838385"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a07ec20cef34bbc2d7b4694ef4a838385">ripple::test::multi_runner_child::case_results_</a></div><div class="ttdeci">detail::case_results case_results_</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00260">multi_runner.h:260</a></div></div>
<div class="ttc" id="amerge_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/merge.html">std::merge</a></div><div class="ttdeci">T merge(T... args)</div></div>
@@ -801,22 +801,21 @@ $(function() {
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html_aa1910005f0fdb03be0e52975d5d7eee1acbd9e0c6b352f171dc1492f750967646"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html#aa1910005f0fdb03be0e52975d5d7eee1acbd9e0c6b352f171dc1492f750967646">ripple::test::detail::results::max_top</a></div><div class="ttdeci">@ max_top</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00082">multi_runner.h:82</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html_ae1739e18dca3d4a17f296faa7e2a66b7"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html#ae1739e18dca3d4a17f296faa7e2a66b7">ripple::test::detail::results::start</a></div><div class="ttdeci">clock_type::time_point start</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00089">multi_runner.h:89</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html_a95ce2b63705f74bf149cc0c8e8b12ead"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html#a95ce2b63705f74bf149cc0c8e8b12ead">ripple::test::detail::results::print</a></div><div class="ttdeci">void print(S &amp;s)</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00138">multi_runner.cpp:138</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a14311c8b17066b96487dbc988dcb18d2"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a14311c8b17066b96487dbc988dcb18d2">ripple::test::multi_runner_child::on_case_end</a></div><div class="ttdeci">virtual void on_case_end() override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00612">multi_runner.cpp:612</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a14311c8b17066b96487dbc988dcb18d2"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a14311c8b17066b96487dbc988dcb18d2">ripple::test::multi_runner_child::on_case_end</a></div><div class="ttdeci">virtual void on_case_end() override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00611">multi_runner.cpp:611</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__parent_html_a48c538ae3e284b429dea35d17411e06f"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__parent.html#a48c538ae3e284b429dea35d17411e06f">ripple::test::multi_runner_parent::message_queue_thread_</a></div><div class="ttdeci">std::thread message_queue_thread_</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00224">multi_runner.h:224</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1detail_1_1multi__runner__base_html"><div class="ttname"><a href="classripple_1_1test_1_1detail_1_1multi__runner__base.html">ripple::test::detail::multi_runner_base</a></div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00103">multi_runner.h:103</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html_aec5257448baa2a4dc3e55576c6cbcdda"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html#aec5257448baa2a4dc3e55576c6cbcdda">ripple::test::detail::results::failed</a></div><div class="ttdeci">std::size_t failed</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00087">multi_runner.h:87</a></div></div>
<div class="ttc" id="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="RCLCensorshipDetector_8h_source.html#l00029">RCLCensorshipDetector.h:29</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_acac5db0c19a6e1da379f9e4b91accc21"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#acac5db0c19a6e1da379f9e4b91accc21">ripple::test::multi_runner_child::on_pass</a></div><div class="ttdeci">virtual void on_pass() override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00618">multi_runner.cpp:618</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_acac5db0c19a6e1da379f9e4b91accc21"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#acac5db0c19a6e1da379f9e4b91accc21">ripple::test::multi_runner_child::on_pass</a></div><div class="ttdeci">virtual void on_pass() override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00617">multi_runner.cpp:617</a></div></div>
<div class="ttc" id="alower_bound_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/lower_bound.html">std::lower_bound</a></div><div class="ttdeci">T lower_bound(T... args)</div></div>
<div class="ttc" id="aendl_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a></div><div class="ttdeci">T endl(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_ad6582d8735b76b0673b62b10e89c36dd"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#ad6582d8735b76b0673b62b10e89c36dd">ripple::test::multi_runner_child::on_fail</a></div><div class="ttdeci">virtual void on_fail(std::string const &amp;reason) override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00624">multi_runner.cpp:624</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_ad6582d8735b76b0673b62b10e89c36dd"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#ad6582d8735b76b0673b62b10e89c36dd">ripple::test::multi_runner_child::on_fail</a></div><div class="ttdeci">virtual void on_fail(std::string const &amp;reason) override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00623">multi_runner.cpp:623</a></div></div>
<div class="ttc" id="aiomanip_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/iomanip.html">iomanip</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html_a06fe88648bdd73434179288b51f923eb"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html#a06fe88648bdd73434179288b51f923eb">ripple::test::detail::results::merge</a></div><div class="ttdeci">void merge(results const &amp;r)</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00110">multi_runner.cpp:110</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1results_html_ada93bebf330c636d4cddf0f5954e6f6f"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1results.html#ada93bebf330c636d4cddf0f5954e6f6f">ripple::test::detail::results::top</a></div><div class="ttdeci">boost::container::static_vector&lt; run_time, max_top &gt; top</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00088">multi_runner.h:88</a></div></div>
<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdoc">STL namespace.</div></div>
<div class="ttc" id="ainsert_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/set/insert.html">std::set::insert</a></div><div class="ttdeci">T insert(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__parent_html_a32055a6d520d708ebe14f7fa5bdbea59"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__parent.html#a32055a6d520d708ebe14f7fa5bdbea59">ripple::test::multi_runner_parent::tests</a></div><div class="ttdeci">std::size_t tests() const</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00489">multi_runner.cpp:489</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a356a2138c78c6a1b4a84f3a36d2991e6"><div class="ttname"><a href="namespaceripple_1_1test.html#a356a2138c78c6a1b4a84f3a36d2991e6">ripple::test::incPorts</a></div><div class="ttdeci">void incPorts()</div><div class="ttdef"><b>Definition:</b> <a href="envconfig_8cpp_source.html#l00029">envconfig.cpp:29</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1detail_1_1multi__runner__base_html_a4f18d02e2d15933f31cf9200eb8d6180"><div class="ttname"><a href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#a4f18d02e2d15933f31cf9200eb8d6180">ripple::test::detail::multi_runner_base::tests</a></div><div class="ttdeci">std::size_t tests() const</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00369">multi_runner.cpp:369</a></div></div>
<div class="ttc" id="afixed_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/fixed.html">std::fixed</a></div><div class="ttdeci">T fixed(T... args)</div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1multi__runner__base_1_1inner_html_aea769d990e8fbefc60f6d0262d6720ef"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1multi__runner__base_1_1inner.html#aea769d990e8fbefc60f6d0262d6720ef">ripple::test::detail::multi_runner_base::inner::tests</a></div><div class="ttdeci">std::size_t tests() const</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00187">multi_runner.cpp:187</a></div></div>
@@ -830,7 +829,7 @@ $(function() {
<div class="ttc" id="asetw_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a></div><div class="ttdeci">T setw(T... args)</div></div>
<div class="ttc" id="aconditional_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/conditional.html">std::conditional_t</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1detail_1_1multi__runner__base_1_1inner_html_a961278a039fc12e22bad2bcce855beca"><div class="ttname"><a href="structripple_1_1test_1_1detail_1_1multi__runner__base_1_1inner.html#a961278a039fc12e22bad2bcce855beca">ripple::test::detail::multi_runner_base::inner::any_failed</a></div><div class="ttdeci">bool any_failed() const</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00173">multi_runner.cpp:173</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a51ab645fb7ef38a940ade75ad2299412"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a51ab645fb7ef38a940ade75ad2299412">ripple::test::multi_runner_child::on_case_begin</a></div><div class="ttdeci">virtual void on_case_begin(std::string const &amp;name) override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00596">multi_runner.cpp:596</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_a51ab645fb7ef38a940ade75ad2299412"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#a51ab645fb7ef38a940ade75ad2299412">ripple::test::multi_runner_child::on_case_begin</a></div><div class="ttdeci">virtual void on_case_begin(std::string const &amp;name) override</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8cpp_source.html#l00595">multi_runner.cpp:595</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__child_html_af780bfef631c84d178ddf8f5ba36ee09"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__child.html#af780bfef631c84d178ddf8f5ba36ee09">ripple::test::multi_runner_child::job_index_</a></div><div class="ttdeci">std::size_t job_index_</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00257">multi_runner.h:257</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1detail_1_1multi__runner__base_html_abf82d59f14b7d5056a76def513013a68"><div class="ttname"><a href="classripple_1_1test_1_1detail_1_1multi__runner__base.html#abf82d59f14b7d5056a76def513013a68">ripple::test::detail::multi_runner_base&lt; true &gt;::message_queue_</a></div><div class="ttdeci">std::unique_ptr&lt; boost::interprocess::message_queue &gt; message_queue_</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00167">multi_runner.h:167</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1multi__runner__parent_html_a50bb0fb4994cd9a4b371b4f6b1e8e6a3"><div class="ttname"><a href="classripple_1_1test_1_1multi__runner__parent.html#a50bb0fb4994cd9a4b371b4f6b1e8e6a3">ripple::test::multi_runner_parent::os_</a></div><div class="ttdeci">std::ostream &amp; os_</div><div class="ttdef"><b>Definition:</b> <a href="multi__runner_8h_source.html#l00222">multi_runner.h:222</a></div></div>