This commit is contained in:
nbougalis
2022-07-19 15:12:23 +00:00
parent e7ca908a33
commit 70c2d3809d
2408 changed files with 53648 additions and 52103 deletions

View File

@@ -370,227 +370,226 @@ $(function() {
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; serverPort.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>().port = 0;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; serverPort.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>().protocol.insert(<span class="stringliteral">&quot;http&quot;</span>);</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">auto</span> eps = s-&gt;ports(serverPort);</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; log &lt;&lt; <span class="stringliteral">&quot;server listening on port &quot;</span> &lt;&lt; eps[0].port() &lt;&lt; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/manip/endl.html">std::endl</a>;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#ad4afd8dfded9cddc1e3dec06183e2bf8">test_request</a>(eps[0]);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a5ce97f41e98ed54e0bd3050ab0fa82b6">test_keepalive</a>(eps[0]);</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="comment">// s-&gt;close();</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; s = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; pass();</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; </div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1Server__test.html#a732657b8e69b27ef9aba56a90519f86f"> 311</a></span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a732657b8e69b27ef9aba56a90519f86f">stressTest</a>()</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; testcase(<span class="stringliteral">&quot;stress test&quot;</span>);</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">struct </span>NullHandler</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; {</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; onAccept(<a class="code" href="classripple_1_1Session.html">Session</a>&amp; session, boost::asio::ip::tcp::endpoint endpoint)</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; </div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="structripple_1_1Handoff.html">Handoff</a></div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; onHandoff(</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="classripple_1_1Session.html">Session</a>&amp; session,</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;stream_type&gt;</a>&amp;&amp; bundle,</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespaceripple.html#aa265217edeb8282e636c78b50049f4c0">http_request_type</a>&amp;&amp; request,</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; boost::asio::ip::tcp::endpoint remote_address)</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structripple_1_1Handoff.html">Handoff</a>{};</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; </div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="structripple_1_1Handoff.html">Handoff</a></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; onHandoff(</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="classripple_1_1Session.html">Session</a>&amp; session,</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="namespaceripple.html#aa265217edeb8282e636c78b50049f4c0">http_request_type</a>&amp;&amp; request,</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; boost::asio::ip::tcp::endpoint remote_address)</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structripple_1_1Handoff.html">Handoff</a>{};</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; </div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; onRequest(<a class="code" href="classripple_1_1Session.html">Session</a>&amp; session)</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; {</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; </div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; onWSMessage(</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;WSSession&gt;</a> session,</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;boost::asio::const_buffer&gt;</a> <span class="keyword">const</span>&amp; buffers)</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; </div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; onClose(<a class="code" href="classripple_1_1Session.html">Session</a>&amp; session, boost::system::error_code <span class="keyword">const</span>&amp;)</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; </div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; onStopped(<a class="code" href="classripple_1_1Server.html">Server</a>&amp; server)</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; };</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; </div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keyword">using namespace </span><a class="code" href="namespacebeast_1_1severities.html">beast::severities</a>;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="classripple_1_1test_1_1SuiteJournal.html">SuiteJournal</a> journal(<span class="stringliteral">&quot;Server_test&quot;</span>, *<span class="keyword">this</span>);</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; </div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; NullHandler h;</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 1000; ++i)</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; {</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test_1_1TestThread.html">TestThread</a> thread;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keyword">auto</span> s = <a class="code" href="namespaceripple.html#a3f03c206eec01cb455b609c9fd752508">make_Server</a>(h, thread.<a class="code" href="classripple_1_1test_1_1Server__test_1_1TestThread.html#a7963598c3b40954a4193b923ffca2d20">get_io_service</a>(), journal);</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;Port&gt;</a> serverPort(1);</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; serverPort.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>().ip =</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; beast::IP::Address::from_string(<a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>()),</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; serverPort.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>().port = 0;</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; serverPort.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>().protocol.insert(<span class="stringliteral">&quot;http&quot;</span>);</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; s-&gt;ports(serverPort);</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; pass();</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; </div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1Server__test.html#a950177aae1686adec1d784a3f52a5871"> 383</a></span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a950177aae1686adec1d784a3f52a5871">testBadConfig</a>()</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; {</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; testcase(<span class="stringliteral">&quot;Server config - invalid options&quot;</span>);</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; </div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> messages;</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; </div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; except([&amp;] {</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; (*cfg).deprecatedClearSection(<span class="stringliteral">&quot;port_rpc&quot;</span>);</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }),</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; });</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Missing &#39;ip&#39; in [port_rpc]&quot;</span>) != std::string::npos);</div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; </div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; except([&amp;] {</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; (*cfg).deprecatedClearSection(<span class="stringliteral">&quot;port_rpc&quot;</span>);</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }),</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; });</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Missing &#39;port&#39; in [port_rpc]&quot;</span>) != std::string::npos);</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; </div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; except([&amp;] {</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; (*cfg).deprecatedClearSection(<span class="stringliteral">&quot;port_rpc&quot;</span>);</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;port&quot;</span>, <span class="stringliteral">&quot;0&quot;</span>);</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; }),</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; });</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Invalid value &#39;0&#39; for key &#39;port&#39; in [port_rpc]&quot;</span>) !=</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; std::string::npos);</div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; </div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; except([&amp;] {</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; (*cfg).deprecatedClearSection(<span class="stringliteral">&quot;port_rpc&quot;</span>);</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;port&quot;</span>, <span class="stringliteral">&quot;8081&quot;</span>);</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;protocol&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }),</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; });</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Missing &#39;protocol&#39; in [port_rpc]&quot;</span>) !=</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; std::string::npos);</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; </div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; except(</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; [&amp;] <span class="comment">// this creates a standard test config without the server</span></div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="comment">// section</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; {</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; cfg = std::make_unique&lt;Config&gt;();</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; cfg-&gt;overwrite(</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a44ee859a6705ddcac4e318602f8fe6ac">ConfigSection::nodeDatabase</a>(), <span class="stringliteral">&quot;type&quot;</span>, <span class="stringliteral">&quot;memory&quot;</span>);</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; cfg-&gt;overwrite(</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a44ee859a6705ddcac4e318602f8fe6ac">ConfigSection::nodeDatabase</a>(), <span class="stringliteral">&quot;path&quot;</span>, <span class="stringliteral">&quot;main&quot;</span>);</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; cfg-&gt;deprecatedClearSection(</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a683114c5bbff808d0b15bd6a4283dff4">ConfigSection::importNodeDatabase</a>());</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; cfg-&gt;legacy(<span class="stringliteral">&quot;database_path&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; cfg-&gt;setupControl(<span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_peer&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_peer&quot;</span>].set(<span class="stringliteral">&quot;port&quot;</span>, <span class="stringliteral">&quot;8080&quot;</span>);</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_peer&quot;</span>].set(<span class="stringliteral">&quot;protocol&quot;</span>, <span class="stringliteral">&quot;peer&quot;</span>);</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;port&quot;</span>, <span class="stringliteral">&quot;8081&quot;</span>);</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;protocol&quot;</span>, <span class="stringliteral">&quot;http,ws2&quot;</span>);</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;admin&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_ws&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_ws&quot;</span>].set(<span class="stringliteral">&quot;port&quot;</span>, <span class="stringliteral">&quot;8082&quot;</span>);</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_ws&quot;</span>].set(<span class="stringliteral">&quot;protocol&quot;</span>, <span class="stringliteral">&quot;ws&quot;</span>);</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_ws&quot;</span>].set(<span class="stringliteral">&quot;admin&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }),</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; });</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Required section [server] is missing&quot;</span>) !=</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; std::string::npos);</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; except([&amp;] <span class="comment">// this creates a standard test config without some of the</span></div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">// port sections</span></div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; {</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; cfg = std::make_unique&lt;Config&gt;();</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; cfg-&gt;overwrite(</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a44ee859a6705ddcac4e318602f8fe6ac">ConfigSection::nodeDatabase</a>(), <span class="stringliteral">&quot;type&quot;</span>, <span class="stringliteral">&quot;memory&quot;</span>);</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; cfg-&gt;overwrite(</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a44ee859a6705ddcac4e318602f8fe6ac">ConfigSection::nodeDatabase</a>(), <span class="stringliteral">&quot;path&quot;</span>, <span class="stringliteral">&quot;main&quot;</span>);</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; cfg-&gt;deprecatedClearSection(</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a683114c5bbff808d0b15bd6a4283dff4">ConfigSection::importNodeDatabase</a>());</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; cfg-&gt;legacy(<span class="stringliteral">&quot;database_path&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; cfg-&gt;setupControl(<span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; (*cfg)[<span class="stringliteral">&quot;server&quot;</span>].append(<span class="stringliteral">&quot;port_peer&quot;</span>);</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; (*cfg)[<span class="stringliteral">&quot;server&quot;</span>].append(<span class="stringliteral">&quot;port_rpc&quot;</span>);</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; (*cfg)[<span class="stringliteral">&quot;server&quot;</span>].append(<span class="stringliteral">&quot;port_ws&quot;</span>);</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }),</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; });</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Missing section: [port_peer]&quot;</span>) != std::string::npos);</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; }</div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; </div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1Server__test.html#aeca3c4605b5c225c8b664e4de1a4c9bb"> 508</a></span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#aeca3c4605b5c225c8b664e4de1a4c9bb">run</a>()<span class="keyword"> override</span></div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a3363f1c421671f12844d3f5d04ab9025">basicTests</a>();</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a732657b8e69b27ef9aba56a90519f86f">stressTest</a>();</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a950177aae1686adec1d784a3f52a5871">testBadConfig</a>();</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; }</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;};</div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; </div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<a class="code" href="namespaceripple_1_1test.html#a36e90e9cdf2adf7993483b3190ee8e21">BEAST_DEFINE_TESTSUITE</a>(<a class="code" href="classripple_1_1Server.html">Server</a>, http, <a class="code" href="namespaceripple.html">ripple</a>);</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; </div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;} <span class="comment">// namespace test</span></div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#ad4afd8dfded9cddc1e3dec06183e2bf8">test_request</a>(eps[0]);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a5ce97f41e98ed54e0bd3050ab0fa82b6">test_keepalive</a>(eps[0]);</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="comment">// s-&gt;close();</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; s = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; pass();</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; </div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1Server__test.html#a732657b8e69b27ef9aba56a90519f86f"> 310</a></span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a732657b8e69b27ef9aba56a90519f86f">stressTest</a>()</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; testcase(<span class="stringliteral">&quot;stress test&quot;</span>);</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keyword">struct </span>NullHandler</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">bool</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; onAccept(<a class="code" href="classripple_1_1Session.html">Session</a>&amp; session, boost::asio::ip::tcp::endpoint endpoint)</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; </div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="structripple_1_1Handoff.html">Handoff</a></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; onHandoff(</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="classripple_1_1Session.html">Session</a>&amp; session,</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;stream_type&gt;</a>&amp;&amp; bundle,</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="namespaceripple.html#aa265217edeb8282e636c78b50049f4c0">http_request_type</a>&amp;&amp; request,</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; boost::asio::ip::tcp::endpoint remote_address)</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; {</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structripple_1_1Handoff.html">Handoff</a>{};</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; }</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; </div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="structripple_1_1Handoff.html">Handoff</a></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; onHandoff(</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="classripple_1_1Session.html">Session</a>&amp; session,</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="namespaceripple.html#aa265217edeb8282e636c78b50049f4c0">http_request_type</a>&amp;&amp; request,</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; boost::asio::ip::tcp::endpoint remote_address)</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; {</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structripple_1_1Handoff.html">Handoff</a>{};</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; </div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; onRequest(<a class="code" href="classripple_1_1Session.html">Session</a>&amp; session)</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; }</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; </div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; onWSMessage(</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;WSSession&gt;</a> session,</div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;boost::asio::const_buffer&gt;</a> <span class="keyword">const</span>&amp; buffers)</div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; {</div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; </div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; onClose(<a class="code" href="classripple_1_1Session.html">Session</a>&amp; session, boost::system::error_code <span class="keyword">const</span>&amp;)</div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; {</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; </div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; onStopped(<a class="code" href="classripple_1_1Server.html">Server</a>&amp; server)</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; {</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; };</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; </div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keyword">using namespace </span><a class="code" href="namespacebeast_1_1severities.html">beast::severities</a>;</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classripple_1_1test_1_1SuiteJournal.html">SuiteJournal</a> journal(<span class="stringliteral">&quot;Server_test&quot;</span>, *<span class="keyword">this</span>);</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; </div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; NullHandler h;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 1000; ++i)</div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; {</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test_1_1TestThread.html">TestThread</a> thread;</div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keyword">auto</span> s = <a class="code" href="namespaceripple.html#a3f03c206eec01cb455b609c9fd752508">make_Server</a>(h, thread.<a class="code" href="classripple_1_1test_1_1Server__test_1_1TestThread.html#a7963598c3b40954a4193b923ffca2d20">get_io_service</a>(), journal);</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;Port&gt;</a> serverPort(1);</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; serverPort.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>().ip =</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; beast::IP::Address::from_string(<a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>()),</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; serverPort.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>().port = 0;</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; serverPort.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>().protocol.insert(<span class="stringliteral">&quot;http&quot;</span>);</div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; s-&gt;ports(serverPort);</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; }</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; pass();</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; </div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1Server__test.html#a950177aae1686adec1d784a3f52a5871"> 382</a></span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a950177aae1686adec1d784a3f52a5871">testBadConfig</a>()</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; {</div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; testcase(<span class="stringliteral">&quot;Server config - invalid options&quot;</span>);</div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; </div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> messages;</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; </div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; except([&amp;] {</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; (*cfg).deprecatedClearSection(<span class="stringliteral">&quot;port_rpc&quot;</span>);</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; }),</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; });</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Missing &#39;ip&#39; in [port_rpc]&quot;</span>) != std::string::npos);</div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; </div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; except([&amp;] {</div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; (*cfg).deprecatedClearSection(<span class="stringliteral">&quot;port_rpc&quot;</span>);</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }),</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; });</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Missing &#39;port&#39; in [port_rpc]&quot;</span>) != std::string::npos);</div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; </div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; except([&amp;] {</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; (*cfg).deprecatedClearSection(<span class="stringliteral">&quot;port_rpc&quot;</span>);</div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;port&quot;</span>, <span class="stringliteral">&quot;0&quot;</span>);</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }),</div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; });</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Invalid value &#39;0&#39; for key &#39;port&#39; in [port_rpc]&quot;</span>) !=</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; std::string::npos);</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; </div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; except([&amp;] {</div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; (*cfg).deprecatedClearSection(<span class="stringliteral">&quot;port_rpc&quot;</span>);</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;port&quot;</span>, <span class="stringliteral">&quot;8081&quot;</span>);</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;protocol&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }),</div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; });</div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Missing &#39;protocol&#39; in [port_rpc]&quot;</span>) !=</div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; std::string::npos);</div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; </div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; except(</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; [&amp;] <span class="comment">// this creates a standard test config without the server</span></div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="comment">// section</span></div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; cfg = std::make_unique&lt;Config&gt;();</div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; cfg-&gt;overwrite(</div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a44ee859a6705ddcac4e318602f8fe6ac">ConfigSection::nodeDatabase</a>(), <span class="stringliteral">&quot;type&quot;</span>, <span class="stringliteral">&quot;memory&quot;</span>);</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; cfg-&gt;overwrite(</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a44ee859a6705ddcac4e318602f8fe6ac">ConfigSection::nodeDatabase</a>(), <span class="stringliteral">&quot;path&quot;</span>, <span class="stringliteral">&quot;main&quot;</span>);</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; cfg-&gt;deprecatedClearSection(</div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a683114c5bbff808d0b15bd6a4283dff4">ConfigSection::importNodeDatabase</a>());</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; cfg-&gt;legacy(<span class="stringliteral">&quot;database_path&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; cfg-&gt;setupControl(<span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_peer&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_peer&quot;</span>].set(<span class="stringliteral">&quot;port&quot;</span>, <span class="stringliteral">&quot;8080&quot;</span>);</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_peer&quot;</span>].set(<span class="stringliteral">&quot;protocol&quot;</span>, <span class="stringliteral">&quot;peer&quot;</span>);</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;port&quot;</span>, <span class="stringliteral">&quot;8081&quot;</span>);</div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;protocol&quot;</span>, <span class="stringliteral">&quot;http,ws2&quot;</span>);</div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_rpc&quot;</span>].set(<span class="stringliteral">&quot;admin&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_ws&quot;</span>].set(<span class="stringliteral">&quot;ip&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_ws&quot;</span>].set(<span class="stringliteral">&quot;port&quot;</span>, <span class="stringliteral">&quot;8082&quot;</span>);</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_ws&quot;</span>].set(<span class="stringliteral">&quot;protocol&quot;</span>, <span class="stringliteral">&quot;ws&quot;</span>);</div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; (*cfg)[<span class="stringliteral">&quot;port_ws&quot;</span>].set(<span class="stringliteral">&quot;admin&quot;</span>, <a class="code" href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">getEnvLocalhostAddr</a>());</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }),</div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; });</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Required section [server] is missing&quot;</span>) !=</div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; std::string::npos);</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; </div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; except([&amp;] <span class="comment">// this creates a standard test config without some of the</span></div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="comment">// port sections</span></div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; {</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{</div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; *<span class="keyword">this</span>,</div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a287cf5b6a71db097fe1678c88926efb4">envconfig</a>([](<a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Config&gt;</a> cfg) {</div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; cfg = std::make_unique&lt;Config&gt;();</div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; cfg-&gt;overwrite(</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a44ee859a6705ddcac4e318602f8fe6ac">ConfigSection::nodeDatabase</a>(), <span class="stringliteral">&quot;type&quot;</span>, <span class="stringliteral">&quot;memory&quot;</span>);</div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; cfg-&gt;overwrite(</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a44ee859a6705ddcac4e318602f8fe6ac">ConfigSection::nodeDatabase</a>(), <span class="stringliteral">&quot;path&quot;</span>, <span class="stringliteral">&quot;main&quot;</span>);</div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; cfg-&gt;deprecatedClearSection(</div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="structripple_1_1ConfigSection.html#a683114c5bbff808d0b15bd6a4283dff4">ConfigSection::importNodeDatabase</a>());</div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; cfg-&gt;legacy(<span class="stringliteral">&quot;database_path&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; cfg-&gt;setupControl(<span class="keyword">true</span>, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; (*cfg)[<span class="stringliteral">&quot;server&quot;</span>].append(<span class="stringliteral">&quot;port_peer&quot;</span>);</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; (*cfg)[<span class="stringliteral">&quot;server&quot;</span>].append(<span class="stringliteral">&quot;port_rpc&quot;</span>);</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; (*cfg)[<span class="stringliteral">&quot;server&quot;</span>].append(<span class="stringliteral">&quot;port_ws&quot;</span>);</div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> cfg;</div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }),</div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; std::make_unique&lt;CaptureLogs&gt;(&amp;messages)};</div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; });</div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; BEAST_EXPECT(</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; messages.<a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string/find.html">find</a>(<span class="stringliteral">&quot;Missing section: [port_peer]&quot;</span>) != std::string::npos);</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; </div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l00507"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1Server__test.html#aeca3c4605b5c225c8b664e4de1a4c9bb"> 507</a></span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#aeca3c4605b5c225c8b664e4de1a4c9bb">run</a>()<span class="keyword"> override</span></div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a3363f1c421671f12844d3f5d04ab9025">basicTests</a>();</div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a732657b8e69b27ef9aba56a90519f86f">stressTest</a>();</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="classripple_1_1test_1_1Server__test.html#a950177aae1686adec1d784a3f52a5871">testBadConfig</a>();</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;};</div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; </div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<a class="code" href="namespaceripple_1_1test.html#a36e90e9cdf2adf7993483b3190ee8e21">BEAST_DEFINE_TESTSUITE</a>(<a class="code" href="classripple_1_1Server.html">Server</a>, http, <a class="code" href="namespaceripple.html">ripple</a>);</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">// namespace test</span></div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;} <span class="comment">// namespace ripple</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassripple_1_1test_1_1Server__test_1_1TestThread_html_afe527d2706d3800b538e6296518333b5"><div class="ttname"><a href="classripple_1_1test_1_1Server__test_1_1TestThread.html#afe527d2706d3800b538e6296518333b5">ripple::test::Server_test::TestThread::TestThread</a></div><div class="ttdeci">TestThread()</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00059">Server_test.cpp:59</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1Server__test_html_a732657b8e69b27ef9aba56a90519f86f"><div class="ttname"><a href="classripple_1_1test_1_1Server__test.html#a732657b8e69b27ef9aba56a90519f86f">ripple::test::Server_test::stressTest</a></div><div class="ttdeci">void stressTest()</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00311">Server_test.cpp:311</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1Server__test_html_a732657b8e69b27ef9aba56a90519f86f"><div class="ttname"><a href="classripple_1_1test_1_1Server__test.html#a732657b8e69b27ef9aba56a90519f86f">ripple::test::Server_test::stressTest</a></div><div class="ttdeci">void stressTest()</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00310">Server_test.cpp:310</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_1_1Sink_html"><div class="ttname"><a href="classbeast_1_1Journal_1_1Sink.html">beast::Journal::Sink</a></div><div class="ttdoc">Abstraction for the underlying message destination.</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00074">Journal.h:74</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1Server__test_1_1TestThread_html_ae13e3b2d873d45f398f76ffb70a01bd4"><div class="ttname"><a href="classripple_1_1test_1_1Server__test_1_1TestThread.html#ae13e3b2d873d45f398f76ffb70a01bd4">ripple::test::Server_test::TestThread::~TestThread</a></div><div class="ttdeci">~TestThread()</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00065">Server_test.cpp:65</a></div></div>
<div class="ttc" id="aresize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/resize.html">std::string::resize</a></div><div class="ttdeci">T resize(T... args)</div></div>
@@ -617,7 +616,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Session_html_a7ef37bf5e14c980a67ccf21342d7f80b"><div class="ttname"><a href="classripple_1_1Session.html#a7ef37bf5e14c980a67ccf21342d7f80b">ripple::Session::write</a></div><div class="ttdeci">void write(std::string const &amp;s)</div><div class="ttdoc">Send a copy of data asynchronously.</div><div class="ttdef"><b>Definition:</b> <a href="Session_8h_source.html#l00074">Session.h:74</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1Server__test_1_1TestSink_html_a60eb92ead4ac4a1890ec33f02d712362"><div class="ttname"><a href="classripple_1_1test_1_1Server__test_1_1TestSink.html#a60eb92ead4ac4a1890ec33f02d712362">ripple::test::Server_test::TestSink::write</a></div><div class="ttdeci">void write(beast::severities::Severity level, std::string const &amp;text) override</div><div class="ttdoc">Write text to the sink at the specified severity.</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00091">Server_test.cpp:91</a></div></div>
<div class="ttc" id="areset_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/optional/reset.html">std::optional::reset</a></div><div class="ttdeci">T reset(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1test_1_1Server__test_html_aeca3c4605b5c225c8b664e4de1a4c9bb"><div class="ttname"><a href="classripple_1_1test_1_1Server__test.html#aeca3c4605b5c225c8b664e4de1a4c9bb">ripple::test::Server_test::run</a></div><div class="ttdeci">void run() override</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00508">Server_test.cpp:508</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1Server__test_html_aeca3c4605b5c225c8b664e4de1a4c9bb"><div class="ttname"><a href="classripple_1_1test_1_1Server__test.html#aeca3c4605b5c225c8b664e4de1a4c9bb">ripple::test::Server_test::run</a></div><div class="ttdeci">void run() override</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00507">Server_test.cpp:507</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1Server__test_1_1TestSink_html_a550290590b06efeddbb3a9151605cd80"><div class="ttname"><a href="classripple_1_1test_1_1Server__test_1_1TestSink.html#a550290590b06efeddbb3a9151605cd80">ripple::test::Server_test::TestSink::TestSink</a></div><div class="ttdeci">TestSink(beast::unit_test::suite &amp;suite)</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00085">Server_test.cpp:85</a></div></div>
<div class="ttc" id="astdexcept_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/stdexcept.html">stdexcept</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a5cec438e4f0b4209c6e24ad4a60348f2"><div class="ttname"><a href="namespaceripple_1_1test.html#a5cec438e4f0b4209c6e24ad4a60348f2">ripple::test::getEnvLocalhostAddr</a></div><div class="ttdeci">const char * getEnvLocalhostAddr()</div><div class="ttdef"><b>Definition:</b> <a href="envconfig_8h_source.html#l00031">envconfig.h:31</a></div></div>
@@ -659,13 +658,13 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_aa265217edeb8282e636c78b50049f4c0"><div class="ttname"><a href="namespaceripple.html#aa265217edeb8282e636c78b50049f4c0">ripple::http_request_type</a></div><div class="ttdeci">boost::beast::http::request&lt; boost::beast::http::dynamic_body &gt; http_request_type</div><div class="ttdef"><b>Definition:</b> <a href="Handshake_8h_source.html#l00047">Handshake.h:47</a></div></div>
<div class="ttc" id="aunique_ptr_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt; stream_type &gt;</a></div></div>
<div class="ttc" id="astructripple_1_1test_1_1Server__test_1_1TestHandler_html_aa775659bb5a180db57c157b00fa9f8de"><div class="ttname"><a href="structripple_1_1test_1_1Server__test_1_1TestHandler.html#aa775659bb5a180db57c157b00fa9f8de">ripple::test::Server_test::TestHandler::onStopped</a></div><div class="ttdeci">void onStopped(Server &amp;server)</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00153">Server_test.cpp:153</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1Server__test_html_a950177aae1686adec1d784a3f52a5871"><div class="ttname"><a href="classripple_1_1test_1_1Server__test.html#a950177aae1686adec1d784a3f52a5871">ripple::test::Server_test::testBadConfig</a></div><div class="ttdeci">void testBadConfig()</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00383">Server_test.cpp:383</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1Server__test_html_a950177aae1686adec1d784a3f52a5871"><div class="ttname"><a href="classripple_1_1test_1_1Server__test.html#a950177aae1686adec1d784a3f52a5871">ripple::test::Server_test::testBadConfig</a></div><div class="ttdeci">void testBadConfig()</div><div class="ttdef"><b>Definition:</b> <a href="Server__test_8cpp_source.html#l00382">Server_test.cpp:382</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html">ripple::test::jtx::Env</a></div><div class="ttdoc">A transaction testing environment.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00116">Env.h:116</a></div></div>
<div class="ttc" id="astructripple_1_1ConfigSection_html_a44ee859a6705ddcac4e318602f8fe6ac"><div class="ttname"><a href="structripple_1_1ConfigSection.html#a44ee859a6705ddcac4e318602f8fe6ac">ripple::ConfigSection::nodeDatabase</a></div><div class="ttdeci">static std::string nodeDatabase()</div><div class="ttdef"><b>Definition:</b> <a href="ConfigSections_8h_source.html#l00033">ConfigSections.h:33</a></div></div>
<div class="ttc" id="ajoin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/thread/thread/join.html">std::thread::join</a></div><div class="ttdeci">T join(T... args)</div></div>
<div class="ttc" id="awhat_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/error/exception/what.html">std::exception::what</a></div><div class="ttdeci">T what(T... args)</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a36e90e9cdf2adf7993483b3190ee8e21"><div class="ttname"><a href="namespaceripple_1_1test.html#a36e90e9cdf2adf7993483b3190ee8e21">ripple::test::BEAST_DEFINE_TESTSUITE</a></div><div class="ttdeci">BEAST_DEFINE_TESTSUITE(DeliverMin, app, ripple)</div></div>
<div class="ttc" id="anamespacebeast_html"><div class="ttname"><a href="namespacebeast.html">beast</a></div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00671">base_uint.h:671</a></div></div>
<div class="ttc" id="anamespacebeast_html"><div class="ttname"><a href="namespacebeast.html">beast</a></div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00677">base_uint.h:677</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">