This commit is contained in:
manojsdoshi
2020-10-14 23:50:07 +00:00
parent b7f5072ca1
commit 47b1eac2df
1003 changed files with 51748 additions and 50621 deletions

View File

@@ -4211,341 +4211,414 @@ $(function() {
<div class="line"><a name="l04163"></a><span class="lineno"> 4163</span>&#160; env.close();</div>
<div class="line"><a name="l04164"></a><span class="lineno"> 4164</span>&#160; env.fund(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a37cf35ddf6bc8f4c6cbfa3fba57d6815">XRP</a>(10000), fiona);</div>
<div class="line"><a name="l04165"></a><span class="lineno"> 4165</span>&#160; env.close();</div>
<div class="line"><a name="l04166"></a><span class="lineno"> 4166</span>&#160; </div>
<div class="line"><a name="l04167"></a><span class="lineno"> 4167</span>&#160; <span class="comment">// Close ledgers until the amendments show up.</span></div>
<div class="line"><a name="l04168"></a><span class="lineno"> 4168</span>&#160; <span class="keywordtype">int</span> i = 0;</div>
<div class="line"><a name="l04169"></a><span class="lineno"> 4169</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt;= 257; ++i)</div>
<div class="line"><a name="l04170"></a><span class="lineno"> 4170</span>&#160; {</div>
<div class="line"><a name="l04171"></a><span class="lineno"> 4171</span>&#160; env.close();</div>
<div class="line"><a name="l04172"></a><span class="lineno"> 4172</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#ab6b00b336996c0b0a3fe2e8a8d5fa76a">getMajorityAmendments</a>(*env.closed()).<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/map/empty.html">empty</a>())</div>
<div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>&#160; }</div>
<div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>&#160; </div>
<div class="line"><a name="l04176"></a><span class="lineno"> 4176</span>&#160; <span class="comment">// Now wait 2 weeks modulo 256 ledgers for the amendments to be</span></div>
<div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>&#160; <span class="comment">// enabled. Speed the process by closing ledgers every 80 minutes,</span></div>
<div class="line"><a name="l04178"></a><span class="lineno"> 4178</span>&#160; <span class="comment">// which should get us to just past 2 weeks after 256 ledgers.</span></div>
<div class="line"><a name="l04179"></a><span class="lineno"> 4179</span>&#160; <span class="keyword">using namespace </span>std::chrono_literals;</div>
<div class="line"><a name="l04180"></a><span class="lineno"> 4180</span>&#160; <span class="keyword">auto</span> closeDuration = 80min;</div>
<div class="line"><a name="l04181"></a><span class="lineno"> 4181</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt;= 255; ++i)</div>
<div class="line"><a name="l04182"></a><span class="lineno"> 4182</span>&#160; env.close(closeDuration);</div>
<div class="line"><a name="l04183"></a><span class="lineno"> 4183</span>&#160; </div>
<div class="line"><a name="l04184"></a><span class="lineno"> 4184</span>&#160; <span class="comment">// We&#39;re very close to the flag ledger. Fill the ledger.</span></div>
<div class="line"><a name="l04185"></a><span class="lineno"> 4185</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aa59ed232620728f3e4a01add9dc06288">fillQueue</a>(env, alice);</div>
<div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 0, 195, 40, 39, 256);</div>
<div class="line"><a name="l04166"></a><span class="lineno"> 4166</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 0, 10, 0, 2, 256);</div>
<div class="line"><a name="l04167"></a><span class="lineno"> 4167</span>&#160; </div>
<div class="line"><a name="l04168"></a><span class="lineno"> 4168</span>&#160; <span class="comment">// Close ledgers until the amendments show up.</span></div>
<div class="line"><a name="l04169"></a><span class="lineno"> 4169</span>&#160; <span class="keywordtype">int</span> i = 0;</div>
<div class="line"><a name="l04170"></a><span class="lineno"> 4170</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt;= 257; ++i)</div>
<div class="line"><a name="l04171"></a><span class="lineno"> 4171</span>&#160; {</div>
<div class="line"><a name="l04172"></a><span class="lineno"> 4172</span>&#160; env.close();</div>
<div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#ab6b00b336996c0b0a3fe2e8a8d5fa76a">getMajorityAmendments</a>(*env.closed()).<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/map/empty.html">empty</a>())</div>
<div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>&#160; }</div>
<div class="line"><a name="l04176"></a><span class="lineno"> 4176</span>&#160; <span class="keyword">auto</span> expectedPerLedger =</div>
<div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>&#160; <a class="code" href="namespaceripple_1_1detail.html#a9a69ad76af590957aabbb780058387f3">ripple::detail::supportedAmendments</a>().<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>() + 1;</div>
<div class="line"><a name="l04178"></a><span class="lineno"> 4178</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 0, 5 * expectedPerLedger, 0, expectedPerLedger, 256);</div>
<div class="line"><a name="l04179"></a><span class="lineno"> 4179</span>&#160; </div>
<div class="line"><a name="l04180"></a><span class="lineno"> 4180</span>&#160; <span class="comment">// Now wait 2 weeks modulo 256 ledgers for the amendments to be</span></div>
<div class="line"><a name="l04181"></a><span class="lineno"> 4181</span>&#160; <span class="comment">// enabled. Speed the process by closing ledgers every 80 minutes,</span></div>
<div class="line"><a name="l04182"></a><span class="lineno"> 4182</span>&#160; <span class="comment">// which should get us to just past 2 weeks after 256 ledgers.</span></div>
<div class="line"><a name="l04183"></a><span class="lineno"> 4183</span>&#160; <span class="keyword">using namespace </span>std::chrono_literals;</div>
<div class="line"><a name="l04184"></a><span class="lineno"> 4184</span>&#160; <span class="keyword">auto</span> closeDuration = 80min;</div>
<div class="line"><a name="l04185"></a><span class="lineno"> 4185</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt;= 255; ++i)</div>
<div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>&#160; env.close(closeDuration);</div>
<div class="line"><a name="l04187"></a><span class="lineno"> 4187</span>&#160; </div>
<div class="line"><a name="l04188"></a><span class="lineno"> 4188</span>&#160; <span class="comment">// Fill everyone&#39;s queues.</span></div>
<div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>&#160; <span class="keyword">auto</span> seqAlice = env.seq(alice);</div>
<div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>&#160; <span class="keyword">auto</span> seqBob = env.seq(bob);</div>
<div class="line"><a name="l04191"></a><span class="lineno"> 4191</span>&#160; <span class="keyword">auto</span> seqCarol = env.seq(carol);</div>
<div class="line"><a name="l04192"></a><span class="lineno"> 4192</span>&#160; <span class="keyword">auto</span> seqDaria = env.seq(daria);</div>
<div class="line"><a name="l04193"></a><span class="lineno"> 4193</span>&#160; <span class="keyword">auto</span> seqEllie = env.seq(ellie);</div>
<div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>&#160; <span class="keyword">auto</span> seqFiona = env.seq(fiona);</div>
<div class="line"><a name="l04195"></a><span class="lineno"> 4195</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 10; ++i)</div>
<div class="line"><a name="l04196"></a><span class="lineno"> 4196</span>&#160; {</div>
<div class="line"><a name="l04197"></a><span class="lineno"> 4197</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqBob++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04202"></a><span class="lineno"> 4202</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(fiona), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqFiona++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>&#160; }</div>
<div class="line"><a name="l04204"></a><span class="lineno"> 4204</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 60, 195, 40, 39, 256);</div>
<div class="line"><a name="l04205"></a><span class="lineno"> 4205</span>&#160; </div>
<div class="line"><a name="l04206"></a><span class="lineno"> 4206</span>&#160; <span class="comment">// The next close should cause the in-ledger amendments to change.</span></div>
<div class="line"><a name="l04207"></a><span class="lineno"> 4207</span>&#160; <span class="comment">// Alice&#39;s queued transactions have a cached PreflightResult</span></div>
<div class="line"><a name="l04208"></a><span class="lineno"> 4208</span>&#160; <span class="comment">// that resulted from running against the Rules in the previous</span></div>
<div class="line"><a name="l04209"></a><span class="lineno"> 4209</span>&#160; <span class="comment">// ledger. Since the amendments change in this newest ledger</span></div>
<div class="line"><a name="l04210"></a><span class="lineno"> 4210</span>&#160; <span class="comment">// The TxQ must re-run preflight using the new rules.</span></div>
<div class="line"><a name="l04211"></a><span class="lineno"> 4211</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04212"></a><span class="lineno"> 4212</span>&#160; <span class="comment">// These particular amendments don&#39;t impact any of the queued</span></div>
<div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>&#160; <span class="comment">// transactions, so we won&#39;t see any change in the transaction</span></div>
<div class="line"><a name="l04214"></a><span class="lineno"> 4214</span>&#160; <span class="comment">// outcomes. But code coverage is affected.</span></div>
<div class="line"><a name="l04215"></a><span class="lineno"> 4215</span>&#160; env.close(closeDuration);</div>
<div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 19, 200, 41, 40, 256);</div>
<div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(alice) == seqAlice - 3);</div>
<div class="line"><a name="l04218"></a><span class="lineno"> 4218</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(bob) == seqBob - 3);</div>
<div class="line"><a name="l04219"></a><span class="lineno"> 4219</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(carol) == seqCarol - 3);</div>
<div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(daria) == seqDaria - 3);</div>
<div class="line"><a name="l04221"></a><span class="lineno"> 4221</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(ellie) == seqEllie - 3);</div>
<div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(fiona) == seqFiona - 4);</div>
<div class="line"><a name="l04223"></a><span class="lineno"> 4223</span>&#160; </div>
<div class="line"><a name="l04224"></a><span class="lineno"> 4224</span>&#160; env.close(closeDuration);</div>
<div class="line"><a name="l04225"></a><span class="lineno"> 4225</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 0, 205, 19, 41, 256);</div>
<div class="line"><a name="l04226"></a><span class="lineno"> 4226</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(alice) == seqAlice);</div>
<div class="line"><a name="l04227"></a><span class="lineno"> 4227</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(bob) == seqBob);</div>
<div class="line"><a name="l04228"></a><span class="lineno"> 4228</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(carol) == seqCarol);</div>
<div class="line"><a name="l04229"></a><span class="lineno"> 4229</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(daria) == seqDaria);</div>
<div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(ellie) == seqEllie);</div>
<div class="line"><a name="l04231"></a><span class="lineno"> 4231</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(fiona) == seqFiona);</div>
<div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>&#160; }</div>
<div class="line"><a name="l04233"></a><span class="lineno"> 4233</span>&#160; </div>
<div class="line"><a name="l04234"></a><span class="lineno"> 4234</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l04235"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TxQ__test.html#aaa9d23553035727df84776536682f98a"> 4235</a></span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aaa9d23553035727df84776536682f98a">testQueueFullDropPenalty</a>()</div>
<div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>&#160; {</div>
<div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>&#160; <span class="comment">// If...</span></div>
<div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>&#160; <span class="comment">// o The queue is close to full,</span></div>
<div class="line"><a name="l04239"></a><span class="lineno"> 4239</span>&#160; <span class="comment">// o An account has multiple txs queued, and</span></div>
<div class="line"><a name="l04240"></a><span class="lineno"> 4240</span>&#160; <span class="comment">// o That same account has a transaction fail</span></div>
<div class="line"><a name="l04241"></a><span class="lineno"> 4241</span>&#160; <span class="comment">// Then drop the last transaction for the account if possible.</span></div>
<div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04243"></a><span class="lineno"> 4243</span>&#160; <span class="comment">// Verify that happens.</span></div>
<div class="line"><a name="l04244"></a><span class="lineno"> 4244</span>&#160; testcase(<span class="stringliteral">&quot;Queue full drop penalty&quot;</span>);</div>
<div class="line"><a name="l04245"></a><span class="lineno"> 4245</span>&#160; <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a name="l04246"></a><span class="lineno"> 4246</span>&#160; </div>
<div class="line"><a name="l04247"></a><span class="lineno"> 4247</span>&#160; <span class="comment">// Because we&#39;re looking at a phenomenon that occurs when the TxQ</span></div>
<div class="line"><a name="l04248"></a><span class="lineno"> 4248</span>&#160; <span class="comment">// is at 95% capacity or greater, we need to have lots of entries</span></div>
<div class="line"><a name="l04249"></a><span class="lineno"> 4249</span>&#160; <span class="comment">// in the queue. You can&#39;t even see 95% capacity unless there are</span></div>
<div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>&#160; <span class="comment">// 20 entries in the queue.</span></div>
<div class="line"><a name="l04251"></a><span class="lineno"> 4251</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> bob(<span class="stringliteral">&quot;bob&quot;</span>);</div>
<div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> carol(<span class="stringliteral">&quot;carol&quot;</span>);</div>
<div class="line"><a name="l04254"></a><span class="lineno"> 4254</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> daria(<span class="stringliteral">&quot;daria&quot;</span>);</div>
<div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> ellie(<span class="stringliteral">&quot;ellie&quot;</span>);</div>
<div class="line"><a name="l04256"></a><span class="lineno"> 4256</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> fiona(<span class="stringliteral">&quot;fiona&quot;</span>);</div>
<div class="line"><a name="l04257"></a><span class="lineno"> 4257</span>&#160; </div>
<div class="line"><a name="l04258"></a><span class="lineno"> 4258</span>&#160; <span class="comment">// We&#39;ll be using fees to control which entries leave the queue in</span></div>
<div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>&#160; <span class="comment">// which order. There&#39;s no &quot;lowFee&quot; -- that&#39;s the default fee from</span></div>
<div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>&#160; <span class="comment">// the unit test.</span></div>
<div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> medFee = <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(15);</div>
<div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> hiFee = <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(1000);</div>
<div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>&#160; </div>
<div class="line"><a name="l04264"></a><span class="lineno"> 4264</span>&#160; <span class="keyword">auto</span> cfg = <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ab234e6367865be8f720da31f12b4fac1">makeConfig</a>(</div>
<div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>&#160; {{<span class="stringliteral">&quot;minimum_txn_in_ledger_standalone&quot;</span>, <span class="stringliteral">&quot;5&quot;</span>},</div>
<div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>&#160; {<span class="stringliteral">&quot;ledgers_in_queue&quot;</span>, <span class="stringliteral">&quot;5&quot;</span>},</div>
<div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>&#160; {<span class="stringliteral">&quot;maximum_txn_per_account&quot;</span>, <span class="stringliteral">&quot;30&quot;</span>},</div>
<div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>&#160; {<span class="stringliteral">&quot;minimum_queue_size&quot;</span>, <span class="stringliteral">&quot;50&quot;</span>}});</div>
<div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>&#160; </div>
<div class="line"><a name="l04270"></a><span class="lineno"> 4270</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env(</div>
<div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>&#160; *<span class="keyword">this</span>, std::move(cfg), <a class="code" href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">supported_amendments</a>() | <a class="code" href="namespaceripple.html#af5a63958686496574543bdfeb4b68ffa">featureTicketBatch</a>);</div>
<div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>&#160; </div>
<div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>&#160; <span class="comment">// The noripple is to reduce the number of transactions required to</span></div>
<div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>&#160; <span class="comment">// fund the accounts. There is no rippling in this test.</span></div>
<div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>&#160; env.fund(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a37cf35ddf6bc8f4c6cbfa3fba57d6815">XRP</a>(10000), <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a878af2c3339d93c7ad690135ce33e67a">noripple</a>(alice, bob, carol, daria, ellie, fiona));</div>
<div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>&#160; env.close();</div>
<div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>&#160; </div>
<div class="line"><a name="l04278"></a><span class="lineno"> 4278</span>&#160; <span class="comment">// Get bob some tickets.</span></div>
<div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <span class="keyword">const</span> bobTicketSeq = env.seq(bob) + 1;</div>
<div class="line"><a name="l04280"></a><span class="lineno"> 4280</span>&#160; env(ticket::create(bob, 10));</div>
<div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>&#160; env.close();</div>
<div class="line"><a name="l04282"></a><span class="lineno"> 4282</span>&#160; </div>
<div class="line"><a name="l04283"></a><span class="lineno"> 4283</span>&#160; <span class="comment">// Get the dropPenalty flag set on alice and bob by having one</span></div>
<div class="line"><a name="l04284"></a><span class="lineno"> 4284</span>&#160; <span class="comment">// of their transactions expire out of the queue. To start out</span></div>
<div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>&#160; <span class="comment">// alice fills the ledger.</span></div>
<div class="line"><a name="l04286"></a><span class="lineno"> 4286</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aa59ed232620728f3e4a01add9dc06288">fillQueue</a>(env, alice);</div>
<div class="line"><a name="l04287"></a><span class="lineno"> 4287</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 0, 50, 7, 6, 256);</div>
<div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>&#160; </div>
<div class="line"><a name="l04289"></a><span class="lineno"> 4289</span>&#160; <span class="comment">// Now put a few transactions into alice&#39;s queue, including one that</span></div>
<div class="line"><a name="l04290"></a><span class="lineno"> 4290</span>&#160; <span class="comment">// will expire out soon.</span></div>
<div class="line"><a name="l04291"></a><span class="lineno"> 4291</span>&#160; <span class="keyword">auto</span> seqAlice = env.seq(alice);</div>
<div class="line"><a name="l04292"></a><span class="lineno"> 4292</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> seqSaveAlice = seqAlice;</div>
<div class="line"><a name="l04293"></a><span class="lineno"> 4293</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice),</div>
<div class="line"><a name="l04294"></a><span class="lineno"> 4294</span>&#160; <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++),</div>
<div class="line"><a name="l04295"></a><span class="lineno"> 4295</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1json.html">json</a>(R<span class="stringliteral">&quot;({&quot;LastLedgerSequence&quot;: 7})&quot;),</span></div>
<div class="line"><a name="l04296"></a><span class="lineno"> 4296</span>&#160;<span class="stringliteral"> <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>&#160;<span class="stringliteral"> env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>&#160;<span class="stringliteral"> env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04299"></a><span class="lineno"> 4299</span>&#160;<span class="stringliteral"> <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(alice) == seqSaveAlice);</span></div>
<div class="line"><a name="l04300"></a><span class="lineno"> 4300</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l04301"></a><span class="lineno"> 4301</span>&#160;<span class="stringliteral"> </span><span class="comment">// Similarly for bob, but bob uses tickets in his transactions.</span></div>
<div class="line"><a name="l04302"></a><span class="lineno"> 4302</span>&#160; <span class="comment">// The drop penalty works a little differently with tickets.</span></div>
<div class="line"><a name="l04303"></a><span class="lineno"> 4303</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob),</div>
<div class="line"><a name="l04304"></a><span class="lineno"> 4304</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 0),</div>
<div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1json.html">json</a>(R<span class="stringliteral">&quot;({&quot;LastLedgerSequence&quot;: 7})&quot;),</span></div>
<div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>&#160;<span class="stringliteral"> <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04307"></a><span class="lineno"> 4307</span>&#160;<span class="stringliteral"> env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob), <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 1), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>&#160;<span class="stringliteral"> env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob), <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 2), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04309"></a><span class="lineno"> 4309</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l04310"></a><span class="lineno"> 4310</span>&#160;<span class="stringliteral"> </span><span class="comment">// Fill the queue with higher fee transactions so alice&#39;s and</span></div>
<div class="line"><a name="l04311"></a><span class="lineno"> 4311</span>&#160; <span class="comment">// bob&#39;s transactions are stuck in the queue.</span></div>
<div class="line"><a name="l04312"></a><span class="lineno"> 4312</span>&#160; <span class="keyword">auto</span> seqCarol = env.seq(carol);</div>
<div class="line"><a name="l04313"></a><span class="lineno"> 4313</span>&#160; <span class="keyword">auto</span> seqDaria = env.seq(daria);</div>
<div class="line"><a name="l04314"></a><span class="lineno"> 4314</span>&#160; <span class="keyword">auto</span> seqEllie = env.seq(ellie);</div>
<div class="line"><a name="l04315"></a><span class="lineno"> 4315</span>&#160; <span class="keyword">auto</span> seqFiona = env.seq(fiona);</div>
<div class="line"><a name="l04316"></a><span class="lineno"> 4316</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 7; ++i)</div>
<div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>&#160; {</div>
<div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04321"></a><span class="lineno"> 4321</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(fiona), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqFiona++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>&#160; }</div>
<div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>&#160; </div>
<div class="line"><a name="l04324"></a><span class="lineno"> 4324</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 34, 50, 7, 6, 256);</div>
<div class="line"><a name="l04325"></a><span class="lineno"> 4325</span>&#160; env.close();</div>
<div class="line"><a name="l04326"></a><span class="lineno"> 4326</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 26, 50, 8, 7, 256);</div>
<div class="line"><a name="l04327"></a><span class="lineno"> 4327</span>&#160; </div>
<div class="line"><a name="l04328"></a><span class="lineno"> 4328</span>&#160; <span class="comment">// Re-fill the queue so alice and bob stay stuck.</span></div>
<div class="line"><a name="l04329"></a><span class="lineno"> 4329</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 3; ++i)</div>
<div class="line"><a name="l04330"></a><span class="lineno"> 4330</span>&#160; {</div>
<div class="line"><a name="l04331"></a><span class="lineno"> 4331</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04333"></a><span class="lineno"> 4333</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04334"></a><span class="lineno"> 4334</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(fiona), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqFiona++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04335"></a><span class="lineno"> 4335</span>&#160; }</div>
<div class="line"><a name="l04336"></a><span class="lineno"> 4336</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 38, 50, 8, 7, 256);</div>
<div class="line"><a name="l04337"></a><span class="lineno"> 4337</span>&#160; env.close();</div>
<div class="line"><a name="l04338"></a><span class="lineno"> 4338</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 29, 50, 9, 8, 256);</div>
<div class="line"><a name="l04339"></a><span class="lineno"> 4339</span>&#160; </div>
<div class="line"><a name="l04340"></a><span class="lineno"> 4340</span>&#160; <span class="comment">// One more time...</span></div>
<div class="line"><a name="l04341"></a><span class="lineno"> 4341</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 3; ++i)</div>
<div class="line"><a name="l04342"></a><span class="lineno"> 4342</span>&#160; {</div>
<div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04344"></a><span class="lineno"> 4344</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04345"></a><span class="lineno"> 4345</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04346"></a><span class="lineno"> 4346</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(fiona), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqFiona++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04347"></a><span class="lineno"> 4347</span>&#160; }</div>
<div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 41, 50, 9, 8, 256);</div>
<div class="line"><a name="l04188"></a><span class="lineno"> 4188</span>&#160; <span class="comment">// We&#39;re very close to the flag ledger. Fill the ledger.</span></div>
<div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aa59ed232620728f3e4a01add9dc06288">fillQueue</a>(env, alice);</div>
<div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(</div>
<div class="line"><a name="l04191"></a><span class="lineno"> 4191</span>&#160; env,</div>
<div class="line"><a name="l04192"></a><span class="lineno"> 4192</span>&#160; 0,</div>
<div class="line"><a name="l04193"></a><span class="lineno"> 4193</span>&#160; 5 * expectedPerLedger,</div>
<div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>&#160; expectedPerLedger + 1,</div>
<div class="line"><a name="l04195"></a><span class="lineno"> 4195</span>&#160; expectedPerLedger,</div>
<div class="line"><a name="l04196"></a><span class="lineno"> 4196</span>&#160; 256);</div>
<div class="line"><a name="l04197"></a><span class="lineno"> 4197</span>&#160; </div>
<div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>&#160; <span class="comment">// Fill everyone&#39;s queues.</span></div>
<div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>&#160; <span class="keyword">auto</span> seqAlice = env.seq(alice);</div>
<div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>&#160; <span class="keyword">auto</span> seqBob = env.seq(bob);</div>
<div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>&#160; <span class="keyword">auto</span> seqCarol = env.seq(carol);</div>
<div class="line"><a name="l04202"></a><span class="lineno"> 4202</span>&#160; <span class="keyword">auto</span> seqDaria = env.seq(daria);</div>
<div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>&#160; <span class="keyword">auto</span> seqEllie = env.seq(ellie);</div>
<div class="line"><a name="l04204"></a><span class="lineno"> 4204</span>&#160; <span class="keyword">auto</span> seqFiona = env.seq(fiona);</div>
<div class="line"><a name="l04205"></a><span class="lineno"> 4205</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 10; ++i)</div>
<div class="line"><a name="l04206"></a><span class="lineno"> 4206</span>&#160; {</div>
<div class="line"><a name="l04207"></a><span class="lineno"> 4207</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04208"></a><span class="lineno"> 4208</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqBob++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04209"></a><span class="lineno"> 4209</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04210"></a><span class="lineno"> 4210</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04211"></a><span class="lineno"> 4211</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04212"></a><span class="lineno"> 4212</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(fiona), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqFiona++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>&#160; }</div>
<div class="line"><a name="l04214"></a><span class="lineno"> 4214</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/size_t.html">std::size_t</a> expectedInQueue = 60;</div>
<div class="line"><a name="l04215"></a><span class="lineno"> 4215</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(</div>
<div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>&#160; env,</div>
<div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>&#160; expectedInQueue,</div>
<div class="line"><a name="l04218"></a><span class="lineno"> 4218</span>&#160; 5 * expectedPerLedger,</div>
<div class="line"><a name="l04219"></a><span class="lineno"> 4219</span>&#160; expectedPerLedger + 1,</div>
<div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>&#160; expectedPerLedger,</div>
<div class="line"><a name="l04221"></a><span class="lineno"> 4221</span>&#160; 256);</div>
<div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>&#160; </div>
<div class="line"><a name="l04223"></a><span class="lineno"> 4223</span>&#160; <span class="comment">// The next close should cause the in-ledger amendments to change.</span></div>
<div class="line"><a name="l04224"></a><span class="lineno"> 4224</span>&#160; <span class="comment">// Alice&#39;s queued transactions have a cached PreflightResult</span></div>
<div class="line"><a name="l04225"></a><span class="lineno"> 4225</span>&#160; <span class="comment">// that resulted from running against the Rules in the previous</span></div>
<div class="line"><a name="l04226"></a><span class="lineno"> 4226</span>&#160; <span class="comment">// ledger. Since the amendments change in this newest ledger</span></div>
<div class="line"><a name="l04227"></a><span class="lineno"> 4227</span>&#160; <span class="comment">// The TxQ must re-run preflight using the new rules.</span></div>
<div class="line"><a name="l04228"></a><span class="lineno"> 4228</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04229"></a><span class="lineno"> 4229</span>&#160; <span class="comment">// These particular amendments don&#39;t impact any of the queued</span></div>
<div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>&#160; <span class="comment">// transactions, so we won&#39;t see any change in the transaction</span></div>
<div class="line"><a name="l04231"></a><span class="lineno"> 4231</span>&#160; <span class="comment">// outcomes. But code coverage is affected.</span></div>
<div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>&#160; env.close(closeDuration);</div>
<div class="line"><a name="l04233"></a><span class="lineno"> 4233</span>&#160; expectedInQueue -= expectedPerLedger + 2;</div>
<div class="line"><a name="l04234"></a><span class="lineno"> 4234</span>&#160; ++expectedPerLedger;</div>
<div class="line"><a name="l04235"></a><span class="lineno"> 4235</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(</div>
<div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>&#160; env,</div>
<div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>&#160; expectedInQueue,</div>
<div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>&#160; 5 * expectedPerLedger,</div>
<div class="line"><a name="l04239"></a><span class="lineno"> 4239</span>&#160; expectedPerLedger + 1,</div>
<div class="line"><a name="l04240"></a><span class="lineno"> 4240</span>&#160; expectedPerLedger,</div>
<div class="line"><a name="l04241"></a><span class="lineno"> 4241</span>&#160; 256);</div>
<div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>&#160; {</div>
<div class="line"><a name="l04243"></a><span class="lineno"> 4243</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> expectedPerAccount = expectedInQueue / 6;</div>
<div class="line"><a name="l04244"></a><span class="lineno"> 4244</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> expectedRemainder = expectedInQueue % 6;</div>
<div class="line"><a name="l04245"></a><span class="lineno"> 4245</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(alice) == seqAlice - expectedPerAccount);</div>
<div class="line"><a name="l04246"></a><span class="lineno"> 4246</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(</div>
<div class="line"><a name="l04247"></a><span class="lineno"> 4247</span>&#160; env.seq(bob) ==</div>
<div class="line"><a name="l04248"></a><span class="lineno"> 4248</span>&#160; seqBob - expectedPerAccount - (expectedRemainder &gt; 4 ? 1 : 0));</div>
<div class="line"><a name="l04249"></a><span class="lineno"> 4249</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(</div>
<div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>&#160; env.seq(carol) ==</div>
<div class="line"><a name="l04251"></a><span class="lineno"> 4251</span>&#160; seqCarol - expectedPerAccount -</div>
<div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>&#160; (expectedRemainder &gt; 3 ? 1 : 0));</div>
<div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(</div>
<div class="line"><a name="l04254"></a><span class="lineno"> 4254</span>&#160; env.seq(daria) ==</div>
<div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>&#160; seqDaria - expectedPerAccount -</div>
<div class="line"><a name="l04256"></a><span class="lineno"> 4256</span>&#160; (expectedRemainder &gt; 2 ? 1 : 0));</div>
<div class="line"><a name="l04257"></a><span class="lineno"> 4257</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(</div>
<div class="line"><a name="l04258"></a><span class="lineno"> 4258</span>&#160; env.seq(ellie) ==</div>
<div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>&#160; seqEllie - expectedPerAccount -</div>
<div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>&#160; (expectedRemainder &gt; 1 ? 1 : 0));</div>
<div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(</div>
<div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>&#160; env.seq(fiona) ==</div>
<div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>&#160; seqFiona - expectedPerAccount -</div>
<div class="line"><a name="l04264"></a><span class="lineno"> 4264</span>&#160; (expectedRemainder &gt; 0 ? 1 : 0));</div>
<div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>&#160; }</div>
<div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>&#160; </div>
<div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>&#160; env.close(closeDuration);</div>
<div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>&#160; <span class="keyword">auto</span> expectedInLedger = expectedInQueue;</div>
<div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>&#160; expectedInQueue =</div>
<div class="line"><a name="l04270"></a><span class="lineno"> 4270</span>&#160; (expectedInQueue &gt; expectedPerLedger + 2</div>
<div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>&#160; ? expectedInQueue - (expectedPerLedger + 2)</div>
<div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>&#160; : 0);</div>
<div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>&#160; ++expectedPerLedger;</div>
<div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(</div>
<div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>&#160; env,</div>
<div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>&#160; 0,</div>
<div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>&#160; 5 * expectedPerLedger,</div>
<div class="line"><a name="l04278"></a><span class="lineno"> 4278</span>&#160; expectedInLedger,</div>
<div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>&#160; expectedPerLedger,</div>
<div class="line"><a name="l04280"></a><span class="lineno"> 4280</span>&#160; 256);</div>
<div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>&#160; {</div>
<div class="line"><a name="l04282"></a><span class="lineno"> 4282</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> expectedPerAccount = expectedInQueue / 6;</div>
<div class="line"><a name="l04283"></a><span class="lineno"> 4283</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> expectedRemainder = expectedInQueue % 6;</div>
<div class="line"><a name="l04284"></a><span class="lineno"> 4284</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(alice) == seqAlice - expectedPerAccount);</div>
<div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(</div>
<div class="line"><a name="l04286"></a><span class="lineno"> 4286</span>&#160; env.seq(bob) ==</div>
<div class="line"><a name="l04287"></a><span class="lineno"> 4287</span>&#160; seqBob - expectedPerAccount - (expectedRemainder &gt; 4 ? 1 : 0));</div>
<div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(</div>
<div class="line"><a name="l04289"></a><span class="lineno"> 4289</span>&#160; env.seq(carol) ==</div>
<div class="line"><a name="l04290"></a><span class="lineno"> 4290</span>&#160; seqCarol - expectedPerAccount -</div>
<div class="line"><a name="l04291"></a><span class="lineno"> 4291</span>&#160; (expectedRemainder &gt; 3 ? 1 : 0));</div>
<div class="line"><a name="l04292"></a><span class="lineno"> 4292</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(</div>
<div class="line"><a name="l04293"></a><span class="lineno"> 4293</span>&#160; env.seq(daria) ==</div>
<div class="line"><a name="l04294"></a><span class="lineno"> 4294</span>&#160; seqDaria - expectedPerAccount -</div>
<div class="line"><a name="l04295"></a><span class="lineno"> 4295</span>&#160; (expectedRemainder &gt; 2 ? 1 : 0));</div>
<div class="line"><a name="l04296"></a><span class="lineno"> 4296</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(</div>
<div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>&#160; env.seq(ellie) ==</div>
<div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>&#160; seqEllie - expectedPerAccount -</div>
<div class="line"><a name="l04299"></a><span class="lineno"> 4299</span>&#160; (expectedRemainder &gt; 1 ? 1 : 0));</div>
<div class="line"><a name="l04300"></a><span class="lineno"> 4300</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(</div>
<div class="line"><a name="l04301"></a><span class="lineno"> 4301</span>&#160; env.seq(fiona) ==</div>
<div class="line"><a name="l04302"></a><span class="lineno"> 4302</span>&#160; seqFiona - expectedPerAccount -</div>
<div class="line"><a name="l04303"></a><span class="lineno"> 4303</span>&#160; (expectedRemainder &gt; 0 ? 1 : 0));</div>
<div class="line"><a name="l04304"></a><span class="lineno"> 4304</span>&#160; }</div>
<div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>&#160; }</div>
<div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>&#160; </div>
<div class="line"><a name="l04307"></a><span class="lineno"> 4307</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l04308"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TxQ__test.html#aaa9d23553035727df84776536682f98a"> 4308</a></span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aaa9d23553035727df84776536682f98a">testQueueFullDropPenalty</a>()</div>
<div class="line"><a name="l04309"></a><span class="lineno"> 4309</span>&#160; {</div>
<div class="line"><a name="l04310"></a><span class="lineno"> 4310</span>&#160; <span class="comment">// If...</span></div>
<div class="line"><a name="l04311"></a><span class="lineno"> 4311</span>&#160; <span class="comment">// o The queue is close to full,</span></div>
<div class="line"><a name="l04312"></a><span class="lineno"> 4312</span>&#160; <span class="comment">// o An account has multiple txs queued, and</span></div>
<div class="line"><a name="l04313"></a><span class="lineno"> 4313</span>&#160; <span class="comment">// o That same account has a transaction fail</span></div>
<div class="line"><a name="l04314"></a><span class="lineno"> 4314</span>&#160; <span class="comment">// Then drop the last transaction for the account if possible.</span></div>
<div class="line"><a name="l04315"></a><span class="lineno"> 4315</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04316"></a><span class="lineno"> 4316</span>&#160; <span class="comment">// Verify that happens.</span></div>
<div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>&#160; testcase(<span class="stringliteral">&quot;Queue full drop penalty&quot;</span>);</div>
<div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>&#160; <span class="keyword">using namespace </span>jtx;</div>
<div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>&#160; </div>
<div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>&#160; <span class="comment">// Because we&#39;re looking at a phenomenon that occurs when the TxQ</span></div>
<div class="line"><a name="l04321"></a><span class="lineno"> 4321</span>&#160; <span class="comment">// is at 95% capacity or greater, we need to have lots of entries</span></div>
<div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>&#160; <span class="comment">// in the queue. You can&#39;t even see 95% capacity unless there are</span></div>
<div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>&#160; <span class="comment">// 20 entries in the queue.</span></div>
<div class="line"><a name="l04324"></a><span class="lineno"> 4324</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a name="l04325"></a><span class="lineno"> 4325</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> bob(<span class="stringliteral">&quot;bob&quot;</span>);</div>
<div class="line"><a name="l04326"></a><span class="lineno"> 4326</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> carol(<span class="stringliteral">&quot;carol&quot;</span>);</div>
<div class="line"><a name="l04327"></a><span class="lineno"> 4327</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> daria(<span class="stringliteral">&quot;daria&quot;</span>);</div>
<div class="line"><a name="l04328"></a><span class="lineno"> 4328</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> ellie(<span class="stringliteral">&quot;ellie&quot;</span>);</div>
<div class="line"><a name="l04329"></a><span class="lineno"> 4329</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> fiona(<span class="stringliteral">&quot;fiona&quot;</span>);</div>
<div class="line"><a name="l04330"></a><span class="lineno"> 4330</span>&#160; </div>
<div class="line"><a name="l04331"></a><span class="lineno"> 4331</span>&#160; <span class="comment">// We&#39;ll be using fees to control which entries leave the queue in</span></div>
<div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>&#160; <span class="comment">// which order. There&#39;s no &quot;lowFee&quot; -- that&#39;s the default fee from</span></div>
<div class="line"><a name="l04333"></a><span class="lineno"> 4333</span>&#160; <span class="comment">// the unit test.</span></div>
<div class="line"><a name="l04334"></a><span class="lineno"> 4334</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> medFee = <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(15);</div>
<div class="line"><a name="l04335"></a><span class="lineno"> 4335</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> hiFee = <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(1000);</div>
<div class="line"><a name="l04336"></a><span class="lineno"> 4336</span>&#160; </div>
<div class="line"><a name="l04337"></a><span class="lineno"> 4337</span>&#160; <span class="keyword">auto</span> cfg = <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ab234e6367865be8f720da31f12b4fac1">makeConfig</a>(</div>
<div class="line"><a name="l04338"></a><span class="lineno"> 4338</span>&#160; {{<span class="stringliteral">&quot;minimum_txn_in_ledger_standalone&quot;</span>, <span class="stringliteral">&quot;5&quot;</span>},</div>
<div class="line"><a name="l04339"></a><span class="lineno"> 4339</span>&#160; {<span class="stringliteral">&quot;ledgers_in_queue&quot;</span>, <span class="stringliteral">&quot;5&quot;</span>},</div>
<div class="line"><a name="l04340"></a><span class="lineno"> 4340</span>&#160; {<span class="stringliteral">&quot;maximum_txn_per_account&quot;</span>, <span class="stringliteral">&quot;30&quot;</span>},</div>
<div class="line"><a name="l04341"></a><span class="lineno"> 4341</span>&#160; {<span class="stringliteral">&quot;minimum_queue_size&quot;</span>, <span class="stringliteral">&quot;50&quot;</span>}});</div>
<div class="line"><a name="l04342"></a><span class="lineno"> 4342</span>&#160; </div>
<div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env(</div>
<div class="line"><a name="l04344"></a><span class="lineno"> 4344</span>&#160; *<span class="keyword">this</span>, std::move(cfg), <a class="code" href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">supported_amendments</a>() | <a class="code" href="namespaceripple.html#af5a63958686496574543bdfeb4b68ffa">featureTicketBatch</a>);</div>
<div class="line"><a name="l04345"></a><span class="lineno"> 4345</span>&#160; </div>
<div class="line"><a name="l04346"></a><span class="lineno"> 4346</span>&#160; <span class="comment">// The noripple is to reduce the number of transactions required to</span></div>
<div class="line"><a name="l04347"></a><span class="lineno"> 4347</span>&#160; <span class="comment">// fund the accounts. There is no rippling in this test.</span></div>
<div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>&#160; env.fund(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a37cf35ddf6bc8f4c6cbfa3fba57d6815">XRP</a>(10000), <a class="code" href="namespaceripple_1_1test_1_1jtx.html#a878af2c3339d93c7ad690135ce33e67a">noripple</a>(alice, bob, carol, daria, ellie, fiona));</div>
<div class="line"><a name="l04349"></a><span class="lineno"> 4349</span>&#160; env.close();</div>
<div class="line"><a name="l04350"></a><span class="lineno"> 4350</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 29, 50, 10, 9, 256);</div>
<div class="line"><a name="l04351"></a><span class="lineno"> 4351</span>&#160; </div>
<div class="line"><a name="l04352"></a><span class="lineno"> 4352</span>&#160; <span class="comment">// Finally the stage is set. alice&#39;s and bob&#39;s transactions expired</span></div>
<div class="line"><a name="l04353"></a><span class="lineno"> 4353</span>&#160; <span class="comment">// out of the queue which caused the dropPenalty flag to be set on</span></div>
<div class="line"><a name="l04354"></a><span class="lineno"> 4354</span>&#160; <span class="comment">// their accounts.</span></div>
<div class="line"><a name="l04355"></a><span class="lineno"> 4355</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>&#160; <span class="comment">// This also means that alice has a sequence gap in her transactions,</span></div>
<div class="line"><a name="l04357"></a><span class="lineno"> 4357</span>&#160; <span class="comment">// and thus can&#39;t queue any more.</span></div>
<div class="line"><a name="l04358"></a><span class="lineno"> 4358</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(hiFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a811128cb863cfb8a8f5ddaecf478e318">telCAN_NOT_QUEUE</a>));</div>
<div class="line"><a name="l04359"></a><span class="lineno"> 4359</span>&#160; </div>
<div class="line"><a name="l04360"></a><span class="lineno"> 4360</span>&#160; <span class="comment">// Once again, fill the queue almost to the brim.</span></div>
<div class="line"><a name="l04361"></a><span class="lineno"> 4361</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 4; ++i)</div>
<div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>&#160; {</div>
<div class="line"><a name="l04363"></a><span class="lineno"> 4363</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04364"></a><span class="lineno"> 4364</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04365"></a><span class="lineno"> 4365</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04366"></a><span class="lineno"> 4366</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(fiona), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqFiona++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04367"></a><span class="lineno"> 4367</span>&#160; }</div>
<div class="line"><a name="l04368"></a><span class="lineno"> 4368</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04371"></a><span class="lineno"> 4371</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 48, 50, 10, 9, 256);</div>
<div class="line"><a name="l04372"></a><span class="lineno"> 4372</span>&#160; </div>
<div class="line"><a name="l04373"></a><span class="lineno"> 4373</span>&#160; <span class="comment">// Now induce a fee jump which should cause all the transactions</span></div>
<div class="line"><a name="l04374"></a><span class="lineno"> 4374</span>&#160; <span class="comment">// in the queue to fail with telINSUF_FEE_P.</span></div>
<div class="line"><a name="l04375"></a><span class="lineno"> 4375</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04376"></a><span class="lineno"> 4376</span>&#160; <span class="comment">// *NOTE* raiseLocalFee() is tricky to use since the local fee is</span></div>
<div class="line"><a name="l04377"></a><span class="lineno"> 4377</span>&#160; <span class="comment">// asynchronously lowered by LoadManager. Here we&#39;re just</span></div>
<div class="line"><a name="l04378"></a><span class="lineno"> 4378</span>&#160; <span class="comment">// pushing the local fee up really high and then hoping that we</span></div>
<div class="line"><a name="l04379"></a><span class="lineno"> 4379</span>&#160; <span class="comment">// outrace LoadManager undoing our work.</span></div>
<div class="line"><a name="l04380"></a><span class="lineno"> 4380</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 10; ++i)</div>
<div class="line"><a name="l04381"></a><span class="lineno"> 4381</span>&#160; env.app().getFeeTrack().raiseLocalFee();</div>
<div class="line"><a name="l04382"></a><span class="lineno"> 4382</span>&#160; </div>
<div class="line"><a name="l04383"></a><span class="lineno"> 4383</span>&#160; <span class="comment">// Now close the ledger, which will attempt to process alice&#39;s</span></div>
<div class="line"><a name="l04384"></a><span class="lineno"> 4384</span>&#160; <span class="comment">// and bob&#39;s queued transactions.</span></div>
<div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>&#160; <span class="comment">// o The _last_ transaction should be dropped from alice&#39;s queue.</span></div>
<div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>&#160; <span class="comment">// o The first failing transaction should be dropped from bob&#39;s queue.</span></div>
<div class="line"><a name="l04387"></a><span class="lineno"> 4387</span>&#160; env.close();</div>
<div class="line"><a name="l04388"></a><span class="lineno"> 4388</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 46, 50, 0, 10, 256);</div>
<div class="line"><a name="l04389"></a><span class="lineno"> 4389</span>&#160; </div>
<div class="line"><a name="l04390"></a><span class="lineno"> 4390</span>&#160; <span class="comment">// Run the local fee back down.</span></div>
<div class="line"><a name="l04391"></a><span class="lineno"> 4391</span>&#160; <span class="keywordflow">while</span> (env.app().getFeeTrack().lowerLocalFee())</div>
<div class="line"><a name="l04392"></a><span class="lineno"> 4392</span>&#160; ;</div>
<div class="line"><a name="l04393"></a><span class="lineno"> 4393</span>&#160; </div>
<div class="line"><a name="l04394"></a><span class="lineno"> 4394</span>&#160; <span class="comment">// bob fills the ledger so it&#39;s easier to probe the TxQ.</span></div>
<div class="line"><a name="l04395"></a><span class="lineno"> 4395</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aa59ed232620728f3e4a01add9dc06288">fillQueue</a>(env, bob);</div>
<div class="line"><a name="l04396"></a><span class="lineno"> 4396</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 46, 50, 11, 10, 256);</div>
<div class="line"><a name="l04397"></a><span class="lineno"> 4397</span>&#160; </div>
<div class="line"><a name="l04398"></a><span class="lineno"> 4398</span>&#160; <span class="comment">// Before the close() alice had two transactions in her queue.</span></div>
<div class="line"><a name="l04399"></a><span class="lineno"> 4399</span>&#160; <span class="comment">// We now expect her to have one. Here&#39;s the state of alice&#39;s queue.</span></div>
<div class="line"><a name="l04400"></a><span class="lineno"> 4400</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04401"></a><span class="lineno"> 4401</span>&#160; <span class="comment">// 0. The transaction that used to be first in her queue expired</span></div>
<div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>&#160; <span class="comment">// out two env.close() calls back. That left a gap in alice&#39;s</span></div>
<div class="line"><a name="l04403"></a><span class="lineno"> 4403</span>&#160; <span class="comment">// queue which has not been filled yet.</span></div>
<div class="line"><a name="l04404"></a><span class="lineno"> 4404</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04405"></a><span class="lineno"> 4405</span>&#160; <span class="comment">// 1. The first transaction in the queue failed to apply because</span></div>
<div class="line"><a name="l04406"></a><span class="lineno"> 4406</span>&#160; <span class="comment">// of the sequence gap. But it is retained in the queue.</span></div>
<div class="line"><a name="l04407"></a><span class="lineno"> 4407</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04408"></a><span class="lineno"> 4408</span>&#160; <span class="comment">// 2. The last (second) transaction in alice&#39;s queue was removed</span></div>
<div class="line"><a name="l04409"></a><span class="lineno"> 4409</span>&#160; <span class="comment">// as &quot;punishment&quot;...</span></div>
<div class="line"><a name="l04410"></a><span class="lineno"> 4410</span>&#160; <span class="comment">// a) For already having a transaction expire out of her queue, and</span></div>
<div class="line"><a name="l04411"></a><span class="lineno"> 4411</span>&#160; <span class="comment">// b) For just now having a queued transaction fail on apply()</span></div>
<div class="line"><a name="l04412"></a><span class="lineno"> 4412</span>&#160; <span class="comment">// because of the sequence gap.</span></div>
<div class="line"><a name="l04413"></a><span class="lineno"> 4413</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04414"></a><span class="lineno"> 4414</span>&#160; <span class="comment">// Verify that none of alice&#39;s queued transactions actually applied to</span></div>
<div class="line"><a name="l04415"></a><span class="lineno"> 4415</span>&#160; <span class="comment">// her account.</span></div>
<div class="line"><a name="l04416"></a><span class="lineno"> 4416</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(alice) == seqSaveAlice);</div>
<div class="line"><a name="l04417"></a><span class="lineno"> 4417</span>&#160; seqAlice = seqSaveAlice;</div>
<div class="line"><a name="l04418"></a><span class="lineno"> 4418</span>&#160; </div>
<div class="line"><a name="l04419"></a><span class="lineno"> 4419</span>&#160; <span class="comment">// Verify that there&#39;s a gap at the front of alice&#39;s queue by</span></div>
<div class="line"><a name="l04420"></a><span class="lineno"> 4420</span>&#160; <span class="comment">// queuing another low fee transaction into that spot.</span></div>
<div class="line"><a name="l04421"></a><span class="lineno"> 4421</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>&#160; </div>
<div class="line"><a name="l04423"></a><span class="lineno"> 4423</span>&#160; <span class="comment">// Verify that the first entry in alice&#39;s queue is still there</span></div>
<div class="line"><a name="l04424"></a><span class="lineno"> 4424</span>&#160; <span class="comment">// by trying to replace it and having that fail.</span></div>
<div class="line"><a name="l04425"></a><span class="lineno"> 4425</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a9bf3ae40d6640752371f91ea31337f0f">telCAN_NOT_QUEUE_FEE</a>));</div>
<div class="line"><a name="l04426"></a><span class="lineno"> 4426</span>&#160; </div>
<div class="line"><a name="l04427"></a><span class="lineno"> 4427</span>&#160; <span class="comment">// Verify that the last transaction in alice&#39;s queue was removed by</span></div>
<div class="line"><a name="l04428"></a><span class="lineno"> 4428</span>&#160; <span class="comment">// appending to her queue with a very low fee.</span></div>
<div class="line"><a name="l04429"></a><span class="lineno"> 4429</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>&#160; </div>
<div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>&#160; <span class="comment">// Before the close() bob had two transactions in his queue.</span></div>
<div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>&#160; <span class="comment">// We now expect him to have one. Here&#39;s the state of bob&#39;s queue.</span></div>
<div class="line"><a name="l04433"></a><span class="lineno"> 4433</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04434"></a><span class="lineno"> 4434</span>&#160; <span class="comment">// 0. The transaction that used to be first in his queue expired out</span></div>
<div class="line"><a name="l04435"></a><span class="lineno"> 4435</span>&#160; <span class="comment">// two env.close() calls back. That is how the dropPenalty flag</span></div>
<div class="line"><a name="l04436"></a><span class="lineno"> 4436</span>&#160; <span class="comment">// got set on bob&#39;s queue.</span></div>
<div class="line"><a name="l04437"></a><span class="lineno"> 4437</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04438"></a><span class="lineno"> 4438</span>&#160; <span class="comment">// 1. Since bob&#39;s remaining transactions all have the same fee, the</span></div>
<div class="line"><a name="l04439"></a><span class="lineno"> 4439</span>&#160; <span class="comment">// TxQ attempted to apply bob&#39;s second transaction to the ledger,</span></div>
<div class="line"><a name="l04440"></a><span class="lineno"> 4440</span>&#160; <span class="comment">// but the fee was too low. So the TxQ threw that transaction</span></div>
<div class="line"><a name="l04441"></a><span class="lineno"> 4441</span>&#160; <span class="comment">// (not bob&#39;s last transaction) out of the queue.</span></div>
<div class="line"><a name="l04442"></a><span class="lineno"> 4442</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04443"></a><span class="lineno"> 4443</span>&#160; <span class="comment">// 2. The last of bob&#39;s transactions remains in the TxQ.</span></div>
<div class="line"><a name="l04444"></a><span class="lineno"> 4444</span>&#160; </div>
<div class="line"><a name="l04445"></a><span class="lineno"> 4445</span>&#160; <span class="comment">// Verify that bob&#39;s first transaction was removed from the queue</span></div>
<div class="line"><a name="l04446"></a><span class="lineno"> 4446</span>&#160; <span class="comment">// by queueing another low fee transaction into that spot.</span></div>
<div class="line"><a name="l04447"></a><span class="lineno"> 4447</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob), <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 0), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04448"></a><span class="lineno"> 4448</span>&#160; </div>
<div class="line"><a name="l04449"></a><span class="lineno"> 4449</span>&#160; <span class="comment">// Verify that bob&#39;s second transaction was removed from the queue</span></div>
<div class="line"><a name="l04450"></a><span class="lineno"> 4450</span>&#160; <span class="comment">// by queueing another low fee transaction into that spot.</span></div>
<div class="line"><a name="l04451"></a><span class="lineno"> 4451</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob), <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 1), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04452"></a><span class="lineno"> 4452</span>&#160; </div>
<div class="line"><a name="l04453"></a><span class="lineno"> 4453</span>&#160; <span class="comment">// Verify that the last entry in bob&#39;s queue is still there</span></div>
<div class="line"><a name="l04454"></a><span class="lineno"> 4454</span>&#160; <span class="comment">// by trying to replace it and having that fail.</span></div>
<div class="line"><a name="l04455"></a><span class="lineno"> 4455</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob),</div>
<div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 2),</div>
<div class="line"><a name="l04457"></a><span class="lineno"> 4457</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a9bf3ae40d6640752371f91ea31337f0f">telCAN_NOT_QUEUE_FEE</a>));</div>
<div class="line"><a name="l04458"></a><span class="lineno"> 4458</span>&#160; }</div>
<div class="line"><a name="l04459"></a><span class="lineno"> 4459</span>&#160; </div>
<div class="line"><a name="l04460"></a><span class="lineno"> 4460</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l04461"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TxQ__test.html#aa7d6d9c25279946132184bc4df0b0506"> 4461</a></span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aa7d6d9c25279946132184bc4df0b0506">run</a>()<span class="keyword"> override</span></div>
<div class="line"><a name="l04462"></a><span class="lineno"> 4462</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l04463"></a><span class="lineno"> 4463</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#add9e290789cd4636591a29a27ba73beb">testQueueSeq</a>();</div>
<div class="line"><a name="l04464"></a><span class="lineno"> 4464</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a625df01e3978623faf0d58ce15b2f0e8">testQueueTicket</a>();</div>
<div class="line"><a name="l04465"></a><span class="lineno"> 4465</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a2bf7dbd442728533be2d1a0e532178b0">testTecResult</a>();</div>
<div class="line"><a name="l04466"></a><span class="lineno"> 4466</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aa7f757faf99ae90bb088c6e12f0cf63f">testLocalTxRetry</a>();</div>
<div class="line"><a name="l04467"></a><span class="lineno"> 4467</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a6da7bd996d861f1b00c8b5bd9faf260f">testLastLedgerSeq</a>();</div>
<div class="line"><a name="l04468"></a><span class="lineno"> 4468</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aedba79f77d382b656972e5d3ee54387d">testZeroFeeTxn</a>();</div>
<div class="line"><a name="l04469"></a><span class="lineno"> 4469</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ade5f16c373587b6174fe247faba1bc4f">testFailInPreclaim</a>();</div>
<div class="line"><a name="l04470"></a><span class="lineno"> 4470</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#abd9df2b4d99f799b21fb3505d1bcea85">testQueuedTxFails</a>();</div>
<div class="line"><a name="l04471"></a><span class="lineno"> 4471</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a977f5b0d440084e645813d6f76b02149">testMultiTxnPerAccount</a>();</div>
<div class="line"><a name="l04472"></a><span class="lineno"> 4472</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a4c1d2e3937225bafbb46844751ba74e9">testTieBreaking</a>();</div>
<div class="line"><a name="l04473"></a><span class="lineno"> 4473</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a71dfd9e880cc77f88c9a4c64ca59abc3">testAcctTxnID</a>();</div>
<div class="line"><a name="l04474"></a><span class="lineno"> 4474</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a0bd0b6ea27944ab73e3d128b036d03e0">testMaximum</a>();</div>
<div class="line"><a name="l04475"></a><span class="lineno"> 4475</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aca19fc52aaee0fcff554fe98a1b60304">testUnexpectedBalanceChange</a>();</div>
<div class="line"><a name="l04476"></a><span class="lineno"> 4476</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aedd4096d5ebb70dac56844caaa61ed9e">testBlockersSeq</a>();</div>
<div class="line"><a name="l04477"></a><span class="lineno"> 4477</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a3dbedf093e04a1220c17e96c3a2b6610">testBlockersTicket</a>();</div>
<div class="line"><a name="l04478"></a><span class="lineno"> 4478</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a0dcdb31788f28ca9cdeae66cf884d74f">testInFlightBalance</a>();</div>
<div class="line"><a name="l04479"></a><span class="lineno"> 4479</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a28a49c3e1b5b3834bc906ac870692a88">testConsequences</a>();</div>
<div class="line"><a name="l04480"></a><span class="lineno"> 4480</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a98d1dbc4e81218800e1c6cf9d0309c0a">testAcctInQueueButEmpty</a>();</div>
<div class="line"><a name="l04481"></a><span class="lineno"> 4481</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a0eaf436bb596e33baa7698b5265fa0ea">testRPC</a>();</div>
<div class="line"><a name="l04482"></a><span class="lineno"> 4482</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1af4029426513d0965b6dec86d81084f">testExpirationReplacement</a>();</div>
<div class="line"><a name="l04483"></a><span class="lineno"> 4483</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ac1b882980169fc78b7f5252fd01ec3a2">testFullQueueGapFill</a>();</div>
<div class="line"><a name="l04484"></a><span class="lineno"> 4484</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a3b30cc85c2546c54be0725be6b18a150">testSignAndSubmitSequence</a>();</div>
<div class="line"><a name="l04485"></a><span class="lineno"> 4485</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a20197e15938f299b83a9d52f0f9765a0">testAccountInfo</a>();</div>
<div class="line"><a name="l04486"></a><span class="lineno"> 4486</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ab2a7ca7275ca0680ce6892e26b48e655">testServerInfo</a>();</div>
<div class="line"><a name="l04487"></a><span class="lineno"> 4487</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ac95012f088354d00f6dec5878b8febf7">testServerSubscribe</a>();</div>
<div class="line"><a name="l04488"></a><span class="lineno"> 4488</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a5c1a7af0e4fec70d2460f9e7cd5f2dc9">testClearQueuedAccountTxs</a>();</div>
<div class="line"><a name="l04489"></a><span class="lineno"> 4489</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a3474c7042257a3f1b8a8697b0ec8ba0a">testScaling</a>();</div>
<div class="line"><a name="l04490"></a><span class="lineno"> 4490</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a2bd8e1f40d0d1bd6ce4e956bae3b80b7">testInLedgerSeq</a>();</div>
<div class="line"><a name="l04491"></a><span class="lineno"> 4491</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a44c50a9d9e8bfb32eb201342362fc77c">testInLedgerTicket</a>();</div>
<div class="line"><a name="l04492"></a><span class="lineno"> 4492</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ab5abbdc5c3657c5a1b3d0bffbe6af59e">testReexecutePreflight</a>();</div>
<div class="line"><a name="l04493"></a><span class="lineno"> 4493</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aaa9d23553035727df84776536682f98a">testQueueFullDropPenalty</a>();</div>
<div class="line"><a name="l04494"></a><span class="lineno"> 4494</span>&#160; }</div>
<div class="line"><a name="l04495"></a><span class="lineno"> 4495</span>&#160;};</div>
<div class="line"><a name="l04496"></a><span class="lineno"> 4496</span>&#160; </div>
<div class="line"><a name="l04497"></a><span class="lineno"> 4497</span>&#160;<a class="code" href="namespaceripple_1_1test.html#ac6cac37f3447e39ca9090bb878f8cc12">BEAST_DEFINE_TESTSUITE_PRIO</a>(<a class="code" href="classripple_1_1TxQ.html">TxQ</a>, app, <a class="code" href="namespaceripple.html">ripple</a>, 1);</div>
<div class="line"><a name="l04498"></a><span class="lineno"> 4498</span>&#160; </div>
<div class="line"><a name="l04499"></a><span class="lineno"> 4499</span>&#160;} <span class="comment">// namespace test</span></div>
<div class="line"><a name="l04500"></a><span class="lineno"> 4500</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l04350"></a><span class="lineno"> 4350</span>&#160; </div>
<div class="line"><a name="l04351"></a><span class="lineno"> 4351</span>&#160; <span class="comment">// Get bob some tickets.</span></div>
<div class="line"><a name="l04352"></a><span class="lineno"> 4352</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <span class="keyword">const</span> bobTicketSeq = env.seq(bob) + 1;</div>
<div class="line"><a name="l04353"></a><span class="lineno"> 4353</span>&#160; env(ticket::create(bob, 10));</div>
<div class="line"><a name="l04354"></a><span class="lineno"> 4354</span>&#160; env.close();</div>
<div class="line"><a name="l04355"></a><span class="lineno"> 4355</span>&#160; </div>
<div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>&#160; <span class="comment">// Get the dropPenalty flag set on alice and bob by having one</span></div>
<div class="line"><a name="l04357"></a><span class="lineno"> 4357</span>&#160; <span class="comment">// of their transactions expire out of the queue. To start out</span></div>
<div class="line"><a name="l04358"></a><span class="lineno"> 4358</span>&#160; <span class="comment">// alice fills the ledger.</span></div>
<div class="line"><a name="l04359"></a><span class="lineno"> 4359</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aa59ed232620728f3e4a01add9dc06288">fillQueue</a>(env, alice);</div>
<div class="line"><a name="l04360"></a><span class="lineno"> 4360</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 0, 50, 7, 6, 256);</div>
<div class="line"><a name="l04361"></a><span class="lineno"> 4361</span>&#160; </div>
<div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>&#160; <span class="comment">// Now put a few transactions into alice&#39;s queue, including one that</span></div>
<div class="line"><a name="l04363"></a><span class="lineno"> 4363</span>&#160; <span class="comment">// will expire out soon.</span></div>
<div class="line"><a name="l04364"></a><span class="lineno"> 4364</span>&#160; <span class="keyword">auto</span> seqAlice = env.seq(alice);</div>
<div class="line"><a name="l04365"></a><span class="lineno"> 4365</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> seqSaveAlice = seqAlice;</div>
<div class="line"><a name="l04366"></a><span class="lineno"> 4366</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice),</div>
<div class="line"><a name="l04367"></a><span class="lineno"> 4367</span>&#160; <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++),</div>
<div class="line"><a name="l04368"></a><span class="lineno"> 4368</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1json.html">json</a>(R<span class="stringliteral">&quot;({&quot;LastLedgerSequence&quot;: 7})&quot;),</span></div>
<div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>&#160;<span class="stringliteral"> <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>&#160;<span class="stringliteral"> env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04371"></a><span class="lineno"> 4371</span>&#160;<span class="stringliteral"> env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04372"></a><span class="lineno"> 4372</span>&#160;<span class="stringliteral"> <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(alice) == seqSaveAlice);</span></div>
<div class="line"><a name="l04373"></a><span class="lineno"> 4373</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l04374"></a><span class="lineno"> 4374</span>&#160;<span class="stringliteral"> </span><span class="comment">// Similarly for bob, but bob uses tickets in his transactions.</span></div>
<div class="line"><a name="l04375"></a><span class="lineno"> 4375</span>&#160; <span class="comment">// The drop penalty works a little differently with tickets.</span></div>
<div class="line"><a name="l04376"></a><span class="lineno"> 4376</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob),</div>
<div class="line"><a name="l04377"></a><span class="lineno"> 4377</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 0),</div>
<div class="line"><a name="l04378"></a><span class="lineno"> 4378</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1json.html">json</a>(R<span class="stringliteral">&quot;({&quot;LastLedgerSequence&quot;: 7})&quot;),</span></div>
<div class="line"><a name="l04379"></a><span class="lineno"> 4379</span>&#160;<span class="stringliteral"> <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04380"></a><span class="lineno"> 4380</span>&#160;<span class="stringliteral"> env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob), <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 1), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04381"></a><span class="lineno"> 4381</span>&#160;<span class="stringliteral"> env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob), <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 2), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</span></div>
<div class="line"><a name="l04382"></a><span class="lineno"> 4382</span>&#160;<span class="stringliteral"></span> </div>
<div class="line"><a name="l04383"></a><span class="lineno"> 4383</span>&#160;<span class="stringliteral"> </span><span class="comment">// Fill the queue with higher fee transactions so alice&#39;s and</span></div>
<div class="line"><a name="l04384"></a><span class="lineno"> 4384</span>&#160; <span class="comment">// bob&#39;s transactions are stuck in the queue.</span></div>
<div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>&#160; <span class="keyword">auto</span> seqCarol = env.seq(carol);</div>
<div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>&#160; <span class="keyword">auto</span> seqDaria = env.seq(daria);</div>
<div class="line"><a name="l04387"></a><span class="lineno"> 4387</span>&#160; <span class="keyword">auto</span> seqEllie = env.seq(ellie);</div>
<div class="line"><a name="l04388"></a><span class="lineno"> 4388</span>&#160; <span class="keyword">auto</span> seqFiona = env.seq(fiona);</div>
<div class="line"><a name="l04389"></a><span class="lineno"> 4389</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 7; ++i)</div>
<div class="line"><a name="l04390"></a><span class="lineno"> 4390</span>&#160; {</div>
<div class="line"><a name="l04391"></a><span class="lineno"> 4391</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04392"></a><span class="lineno"> 4392</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04393"></a><span class="lineno"> 4393</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04394"></a><span class="lineno"> 4394</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(fiona), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqFiona++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04395"></a><span class="lineno"> 4395</span>&#160; }</div>
<div class="line"><a name="l04396"></a><span class="lineno"> 4396</span>&#160; </div>
<div class="line"><a name="l04397"></a><span class="lineno"> 4397</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 34, 50, 7, 6, 256);</div>
<div class="line"><a name="l04398"></a><span class="lineno"> 4398</span>&#160; env.close();</div>
<div class="line"><a name="l04399"></a><span class="lineno"> 4399</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 26, 50, 8, 7, 256);</div>
<div class="line"><a name="l04400"></a><span class="lineno"> 4400</span>&#160; </div>
<div class="line"><a name="l04401"></a><span class="lineno"> 4401</span>&#160; <span class="comment">// Re-fill the queue so alice and bob stay stuck.</span></div>
<div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 3; ++i)</div>
<div class="line"><a name="l04403"></a><span class="lineno"> 4403</span>&#160; {</div>
<div class="line"><a name="l04404"></a><span class="lineno"> 4404</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04405"></a><span class="lineno"> 4405</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04406"></a><span class="lineno"> 4406</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04407"></a><span class="lineno"> 4407</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(fiona), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqFiona++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04408"></a><span class="lineno"> 4408</span>&#160; }</div>
<div class="line"><a name="l04409"></a><span class="lineno"> 4409</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 38, 50, 8, 7, 256);</div>
<div class="line"><a name="l04410"></a><span class="lineno"> 4410</span>&#160; env.close();</div>
<div class="line"><a name="l04411"></a><span class="lineno"> 4411</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 29, 50, 9, 8, 256);</div>
<div class="line"><a name="l04412"></a><span class="lineno"> 4412</span>&#160; </div>
<div class="line"><a name="l04413"></a><span class="lineno"> 4413</span>&#160; <span class="comment">// One more time...</span></div>
<div class="line"><a name="l04414"></a><span class="lineno"> 4414</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 3; ++i)</div>
<div class="line"><a name="l04415"></a><span class="lineno"> 4415</span>&#160; {</div>
<div class="line"><a name="l04416"></a><span class="lineno"> 4416</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04417"></a><span class="lineno"> 4417</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04418"></a><span class="lineno"> 4418</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04419"></a><span class="lineno"> 4419</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(fiona), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqFiona++), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(medFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04420"></a><span class="lineno"> 4420</span>&#160; }</div>
<div class="line"><a name="l04421"></a><span class="lineno"> 4421</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 41, 50, 9, 8, 256);</div>
<div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>&#160; env.close();</div>
<div class="line"><a name="l04423"></a><span class="lineno"> 4423</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 29, 50, 10, 9, 256);</div>
<div class="line"><a name="l04424"></a><span class="lineno"> 4424</span>&#160; </div>
<div class="line"><a name="l04425"></a><span class="lineno"> 4425</span>&#160; <span class="comment">// Finally the stage is set. alice&#39;s and bob&#39;s transactions expired</span></div>
<div class="line"><a name="l04426"></a><span class="lineno"> 4426</span>&#160; <span class="comment">// out of the queue which caused the dropPenalty flag to be set on</span></div>
<div class="line"><a name="l04427"></a><span class="lineno"> 4427</span>&#160; <span class="comment">// their accounts.</span></div>
<div class="line"><a name="l04428"></a><span class="lineno"> 4428</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04429"></a><span class="lineno"> 4429</span>&#160; <span class="comment">// This also means that alice has a sequence gap in her transactions,</span></div>
<div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>&#160; <span class="comment">// and thus can&#39;t queue any more.</span></div>
<div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice), <a class="code" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(hiFee), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a811128cb863cfb8a8f5ddaecf478e318">telCAN_NOT_QUEUE</a>));</div>
<div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>&#160; </div>
<div class="line"><a name="l04433"></a><span class="lineno"> 4433</span>&#160; <span class="comment">// Once again, fill the queue almost to the brim.</span></div>
<div class="line"><a name="l04434"></a><span class="lineno"> 4434</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 4; ++i)</div>
<div class="line"><a name="l04435"></a><span class="lineno"> 4435</span>&#160; {</div>
<div class="line"><a name="l04436"></a><span class="lineno"> 4436</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04437"></a><span class="lineno"> 4437</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04438"></a><span class="lineno"> 4438</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04439"></a><span class="lineno"> 4439</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(fiona), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqFiona++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04440"></a><span class="lineno"> 4440</span>&#160; }</div>
<div class="line"><a name="l04441"></a><span class="lineno"> 4441</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(carol), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqCarol++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04442"></a><span class="lineno"> 4442</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(daria), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqDaria++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04443"></a><span class="lineno"> 4443</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(ellie), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqEllie++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04444"></a><span class="lineno"> 4444</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 48, 50, 10, 9, 256);</div>
<div class="line"><a name="l04445"></a><span class="lineno"> 4445</span>&#160; </div>
<div class="line"><a name="l04446"></a><span class="lineno"> 4446</span>&#160; <span class="comment">// Now induce a fee jump which should cause all the transactions</span></div>
<div class="line"><a name="l04447"></a><span class="lineno"> 4447</span>&#160; <span class="comment">// in the queue to fail with telINSUF_FEE_P.</span></div>
<div class="line"><a name="l04448"></a><span class="lineno"> 4448</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04449"></a><span class="lineno"> 4449</span>&#160; <span class="comment">// *NOTE* raiseLocalFee() is tricky to use since the local fee is</span></div>
<div class="line"><a name="l04450"></a><span class="lineno"> 4450</span>&#160; <span class="comment">// asynchronously lowered by LoadManager. Here we&#39;re just</span></div>
<div class="line"><a name="l04451"></a><span class="lineno"> 4451</span>&#160; <span class="comment">// pushing the local fee up really high and then hoping that we</span></div>
<div class="line"><a name="l04452"></a><span class="lineno"> 4452</span>&#160; <span class="comment">// outrace LoadManager undoing our work.</span></div>
<div class="line"><a name="l04453"></a><span class="lineno"> 4453</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 10; ++i)</div>
<div class="line"><a name="l04454"></a><span class="lineno"> 4454</span>&#160; env.app().getFeeTrack().raiseLocalFee();</div>
<div class="line"><a name="l04455"></a><span class="lineno"> 4455</span>&#160; </div>
<div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>&#160; <span class="comment">// Now close the ledger, which will attempt to process alice&#39;s</span></div>
<div class="line"><a name="l04457"></a><span class="lineno"> 4457</span>&#160; <span class="comment">// and bob&#39;s queued transactions.</span></div>
<div class="line"><a name="l04458"></a><span class="lineno"> 4458</span>&#160; <span class="comment">// o The _last_ transaction should be dropped from alice&#39;s queue.</span></div>
<div class="line"><a name="l04459"></a><span class="lineno"> 4459</span>&#160; <span class="comment">// o The first failing transaction should be dropped from bob&#39;s queue.</span></div>
<div class="line"><a name="l04460"></a><span class="lineno"> 4460</span>&#160; env.close();</div>
<div class="line"><a name="l04461"></a><span class="lineno"> 4461</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 46, 50, 0, 10, 256);</div>
<div class="line"><a name="l04462"></a><span class="lineno"> 4462</span>&#160; </div>
<div class="line"><a name="l04463"></a><span class="lineno"> 4463</span>&#160; <span class="comment">// Run the local fee back down.</span></div>
<div class="line"><a name="l04464"></a><span class="lineno"> 4464</span>&#160; <span class="keywordflow">while</span> (env.app().getFeeTrack().lowerLocalFee())</div>
<div class="line"><a name="l04465"></a><span class="lineno"> 4465</span>&#160; ;</div>
<div class="line"><a name="l04466"></a><span class="lineno"> 4466</span>&#160; </div>
<div class="line"><a name="l04467"></a><span class="lineno"> 4467</span>&#160; <span class="comment">// bob fills the ledger so it&#39;s easier to probe the TxQ.</span></div>
<div class="line"><a name="l04468"></a><span class="lineno"> 4468</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aa59ed232620728f3e4a01add9dc06288">fillQueue</a>(env, bob);</div>
<div class="line"><a name="l04469"></a><span class="lineno"> 4469</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a90acbebd85d4fa69a5a34bff78d43c65">checkMetrics</a>(env, 46, 50, 11, 10, 256);</div>
<div class="line"><a name="l04470"></a><span class="lineno"> 4470</span>&#160; </div>
<div class="line"><a name="l04471"></a><span class="lineno"> 4471</span>&#160; <span class="comment">// Before the close() alice had two transactions in her queue.</span></div>
<div class="line"><a name="l04472"></a><span class="lineno"> 4472</span>&#160; <span class="comment">// We now expect her to have one. Here&#39;s the state of alice&#39;s queue.</span></div>
<div class="line"><a name="l04473"></a><span class="lineno"> 4473</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04474"></a><span class="lineno"> 4474</span>&#160; <span class="comment">// 0. The transaction that used to be first in her queue expired</span></div>
<div class="line"><a name="l04475"></a><span class="lineno"> 4475</span>&#160; <span class="comment">// out two env.close() calls back. That left a gap in alice&#39;s</span></div>
<div class="line"><a name="l04476"></a><span class="lineno"> 4476</span>&#160; <span class="comment">// queue which has not been filled yet.</span></div>
<div class="line"><a name="l04477"></a><span class="lineno"> 4477</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04478"></a><span class="lineno"> 4478</span>&#160; <span class="comment">// 1. The first transaction in the queue failed to apply because</span></div>
<div class="line"><a name="l04479"></a><span class="lineno"> 4479</span>&#160; <span class="comment">// of the sequence gap. But it is retained in the queue.</span></div>
<div class="line"><a name="l04480"></a><span class="lineno"> 4480</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04481"></a><span class="lineno"> 4481</span>&#160; <span class="comment">// 2. The last (second) transaction in alice&#39;s queue was removed</span></div>
<div class="line"><a name="l04482"></a><span class="lineno"> 4482</span>&#160; <span class="comment">// as &quot;punishment&quot;...</span></div>
<div class="line"><a name="l04483"></a><span class="lineno"> 4483</span>&#160; <span class="comment">// a) For already having a transaction expire out of her queue, and</span></div>
<div class="line"><a name="l04484"></a><span class="lineno"> 4484</span>&#160; <span class="comment">// b) For just now having a queued transaction fail on apply()</span></div>
<div class="line"><a name="l04485"></a><span class="lineno"> 4485</span>&#160; <span class="comment">// because of the sequence gap.</span></div>
<div class="line"><a name="l04486"></a><span class="lineno"> 4486</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04487"></a><span class="lineno"> 4487</span>&#160; <span class="comment">// Verify that none of alice&#39;s queued transactions actually applied to</span></div>
<div class="line"><a name="l04488"></a><span class="lineno"> 4488</span>&#160; <span class="comment">// her account.</span></div>
<div class="line"><a name="l04489"></a><span class="lineno"> 4489</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">BEAST_EXPECT</a>(env.seq(alice) == seqSaveAlice);</div>
<div class="line"><a name="l04490"></a><span class="lineno"> 4490</span>&#160; seqAlice = seqSaveAlice;</div>
<div class="line"><a name="l04491"></a><span class="lineno"> 4491</span>&#160; </div>
<div class="line"><a name="l04492"></a><span class="lineno"> 4492</span>&#160; <span class="comment">// Verify that there&#39;s a gap at the front of alice&#39;s queue by</span></div>
<div class="line"><a name="l04493"></a><span class="lineno"> 4493</span>&#160; <span class="comment">// queuing another low fee transaction into that spot.</span></div>
<div class="line"><a name="l04494"></a><span class="lineno"> 4494</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04495"></a><span class="lineno"> 4495</span>&#160; </div>
<div class="line"><a name="l04496"></a><span class="lineno"> 4496</span>&#160; <span class="comment">// Verify that the first entry in alice&#39;s queue is still there</span></div>
<div class="line"><a name="l04497"></a><span class="lineno"> 4497</span>&#160; <span class="comment">// by trying to replace it and having that fail.</span></div>
<div class="line"><a name="l04498"></a><span class="lineno"> 4498</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a9bf3ae40d6640752371f91ea31337f0f">telCAN_NOT_QUEUE_FEE</a>));</div>
<div class="line"><a name="l04499"></a><span class="lineno"> 4499</span>&#160; </div>
<div class="line"><a name="l04500"></a><span class="lineno"> 4500</span>&#160; <span class="comment">// Verify that the last transaction in alice&#39;s queue was removed by</span></div>
<div class="line"><a name="l04501"></a><span class="lineno"> 4501</span>&#160; <span class="comment">// appending to her queue with a very low fee.</span></div>
<div class="line"><a name="l04502"></a><span class="lineno"> 4502</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(alice), <a class="code" href="structripple_1_1test_1_1jtx_1_1seq.html">seq</a>(seqAlice++), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04503"></a><span class="lineno"> 4503</span>&#160; </div>
<div class="line"><a name="l04504"></a><span class="lineno"> 4504</span>&#160; <span class="comment">// Before the close() bob had two transactions in his queue.</span></div>
<div class="line"><a name="l04505"></a><span class="lineno"> 4505</span>&#160; <span class="comment">// We now expect him to have one. Here&#39;s the state of bob&#39;s queue.</span></div>
<div class="line"><a name="l04506"></a><span class="lineno"> 4506</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04507"></a><span class="lineno"> 4507</span>&#160; <span class="comment">// 0. The transaction that used to be first in his queue expired out</span></div>
<div class="line"><a name="l04508"></a><span class="lineno"> 4508</span>&#160; <span class="comment">// two env.close() calls back. That is how the dropPenalty flag</span></div>
<div class="line"><a name="l04509"></a><span class="lineno"> 4509</span>&#160; <span class="comment">// got set on bob&#39;s queue.</span></div>
<div class="line"><a name="l04510"></a><span class="lineno"> 4510</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04511"></a><span class="lineno"> 4511</span>&#160; <span class="comment">// 1. Since bob&#39;s remaining transactions all have the same fee, the</span></div>
<div class="line"><a name="l04512"></a><span class="lineno"> 4512</span>&#160; <span class="comment">// TxQ attempted to apply bob&#39;s second transaction to the ledger,</span></div>
<div class="line"><a name="l04513"></a><span class="lineno"> 4513</span>&#160; <span class="comment">// but the fee was too low. So the TxQ threw that transaction</span></div>
<div class="line"><a name="l04514"></a><span class="lineno"> 4514</span>&#160; <span class="comment">// (not bob&#39;s last transaction) out of the queue.</span></div>
<div class="line"><a name="l04515"></a><span class="lineno"> 4515</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l04516"></a><span class="lineno"> 4516</span>&#160; <span class="comment">// 2. The last of bob&#39;s transactions remains in the TxQ.</span></div>
<div class="line"><a name="l04517"></a><span class="lineno"> 4517</span>&#160; </div>
<div class="line"><a name="l04518"></a><span class="lineno"> 4518</span>&#160; <span class="comment">// Verify that bob&#39;s first transaction was removed from the queue</span></div>
<div class="line"><a name="l04519"></a><span class="lineno"> 4519</span>&#160; <span class="comment">// by queueing another low fee transaction into that spot.</span></div>
<div class="line"><a name="l04520"></a><span class="lineno"> 4520</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob), <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 0), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04521"></a><span class="lineno"> 4521</span>&#160; </div>
<div class="line"><a name="l04522"></a><span class="lineno"> 4522</span>&#160; <span class="comment">// Verify that bob&#39;s second transaction was removed from the queue</span></div>
<div class="line"><a name="l04523"></a><span class="lineno"> 4523</span>&#160; <span class="comment">// by queueing another low fee transaction into that spot.</span></div>
<div class="line"><a name="l04524"></a><span class="lineno"> 4524</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob), <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 1), <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fac6476cc82d6799d4a026dfa2f430e06e">terQUEUED</a>));</div>
<div class="line"><a name="l04525"></a><span class="lineno"> 4525</span>&#160; </div>
<div class="line"><a name="l04526"></a><span class="lineno"> 4526</span>&#160; <span class="comment">// Verify that the last entry in bob&#39;s queue is still there</span></div>
<div class="line"><a name="l04527"></a><span class="lineno"> 4527</span>&#160; <span class="comment">// by trying to replace it and having that fail.</span></div>
<div class="line"><a name="l04528"></a><span class="lineno"> 4528</span>&#160; env(<a class="code" href="namespaceripple_1_1test_1_1jtx.html#a95abf901db0a698e0c97d00476c95f34">noop</a>(bob),</div>
<div class="line"><a name="l04529"></a><span class="lineno"> 4529</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(bobTicketSeq + 2),</div>
<div class="line"><a name="l04530"></a><span class="lineno"> 4530</span>&#160; <a class="code" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a9bf3ae40d6640752371f91ea31337f0f">telCAN_NOT_QUEUE_FEE</a>));</div>
<div class="line"><a name="l04531"></a><span class="lineno"> 4531</span>&#160; }</div>
<div class="line"><a name="l04532"></a><span class="lineno"> 4532</span>&#160; </div>
<div class="line"><a name="l04533"></a><span class="lineno"> 4533</span>&#160; <span class="keywordtype">void</span></div>
<div class="line"><a name="l04534"></a><span class="lineno"><a class="line" href="classripple_1_1test_1_1TxQ__test.html#aa7d6d9c25279946132184bc4df0b0506"> 4534</a></span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aa7d6d9c25279946132184bc4df0b0506">run</a>()<span class="keyword"> override</span></div>
<div class="line"><a name="l04535"></a><span class="lineno"> 4535</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l04536"></a><span class="lineno"> 4536</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#add9e290789cd4636591a29a27ba73beb">testQueueSeq</a>();</div>
<div class="line"><a name="l04537"></a><span class="lineno"> 4537</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a625df01e3978623faf0d58ce15b2f0e8">testQueueTicket</a>();</div>
<div class="line"><a name="l04538"></a><span class="lineno"> 4538</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a2bf7dbd442728533be2d1a0e532178b0">testTecResult</a>();</div>
<div class="line"><a name="l04539"></a><span class="lineno"> 4539</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aa7f757faf99ae90bb088c6e12f0cf63f">testLocalTxRetry</a>();</div>
<div class="line"><a name="l04540"></a><span class="lineno"> 4540</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a6da7bd996d861f1b00c8b5bd9faf260f">testLastLedgerSeq</a>();</div>
<div class="line"><a name="l04541"></a><span class="lineno"> 4541</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aedba79f77d382b656972e5d3ee54387d">testZeroFeeTxn</a>();</div>
<div class="line"><a name="l04542"></a><span class="lineno"> 4542</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ade5f16c373587b6174fe247faba1bc4f">testFailInPreclaim</a>();</div>
<div class="line"><a name="l04543"></a><span class="lineno"> 4543</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#abd9df2b4d99f799b21fb3505d1bcea85">testQueuedTxFails</a>();</div>
<div class="line"><a name="l04544"></a><span class="lineno"> 4544</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a977f5b0d440084e645813d6f76b02149">testMultiTxnPerAccount</a>();</div>
<div class="line"><a name="l04545"></a><span class="lineno"> 4545</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a4c1d2e3937225bafbb46844751ba74e9">testTieBreaking</a>();</div>
<div class="line"><a name="l04546"></a><span class="lineno"> 4546</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a71dfd9e880cc77f88c9a4c64ca59abc3">testAcctTxnID</a>();</div>
<div class="line"><a name="l04547"></a><span class="lineno"> 4547</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a0bd0b6ea27944ab73e3d128b036d03e0">testMaximum</a>();</div>
<div class="line"><a name="l04548"></a><span class="lineno"> 4548</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aca19fc52aaee0fcff554fe98a1b60304">testUnexpectedBalanceChange</a>();</div>
<div class="line"><a name="l04549"></a><span class="lineno"> 4549</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aedd4096d5ebb70dac56844caaa61ed9e">testBlockersSeq</a>();</div>
<div class="line"><a name="l04550"></a><span class="lineno"> 4550</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a3dbedf093e04a1220c17e96c3a2b6610">testBlockersTicket</a>();</div>
<div class="line"><a name="l04551"></a><span class="lineno"> 4551</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a0dcdb31788f28ca9cdeae66cf884d74f">testInFlightBalance</a>();</div>
<div class="line"><a name="l04552"></a><span class="lineno"> 4552</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a28a49c3e1b5b3834bc906ac870692a88">testConsequences</a>();</div>
<div class="line"><a name="l04553"></a><span class="lineno"> 4553</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a98d1dbc4e81218800e1c6cf9d0309c0a">testAcctInQueueButEmpty</a>();</div>
<div class="line"><a name="l04554"></a><span class="lineno"> 4554</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a0eaf436bb596e33baa7698b5265fa0ea">testRPC</a>();</div>
<div class="line"><a name="l04555"></a><span class="lineno"> 4555</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a1af4029426513d0965b6dec86d81084f">testExpirationReplacement</a>();</div>
<div class="line"><a name="l04556"></a><span class="lineno"> 4556</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ac1b882980169fc78b7f5252fd01ec3a2">testFullQueueGapFill</a>();</div>
<div class="line"><a name="l04557"></a><span class="lineno"> 4557</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a3b30cc85c2546c54be0725be6b18a150">testSignAndSubmitSequence</a>();</div>
<div class="line"><a name="l04558"></a><span class="lineno"> 4558</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a20197e15938f299b83a9d52f0f9765a0">testAccountInfo</a>();</div>
<div class="line"><a name="l04559"></a><span class="lineno"> 4559</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ab2a7ca7275ca0680ce6892e26b48e655">testServerInfo</a>();</div>
<div class="line"><a name="l04560"></a><span class="lineno"> 4560</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ac95012f088354d00f6dec5878b8febf7">testServerSubscribe</a>();</div>
<div class="line"><a name="l04561"></a><span class="lineno"> 4561</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a5c1a7af0e4fec70d2460f9e7cd5f2dc9">testClearQueuedAccountTxs</a>();</div>
<div class="line"><a name="l04562"></a><span class="lineno"> 4562</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a3474c7042257a3f1b8a8697b0ec8ba0a">testScaling</a>();</div>
<div class="line"><a name="l04563"></a><span class="lineno"> 4563</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a2bd8e1f40d0d1bd6ce4e956bae3b80b7">testInLedgerSeq</a>();</div>
<div class="line"><a name="l04564"></a><span class="lineno"> 4564</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#a44c50a9d9e8bfb32eb201342362fc77c">testInLedgerTicket</a>();</div>
<div class="line"><a name="l04565"></a><span class="lineno"> 4565</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#ab5abbdc5c3657c5a1b3d0bffbe6af59e">testReexecutePreflight</a>();</div>
<div class="line"><a name="l04566"></a><span class="lineno"> 4566</span>&#160; <a class="code" href="classripple_1_1test_1_1TxQ__test.html#aaa9d23553035727df84776536682f98a">testQueueFullDropPenalty</a>();</div>
<div class="line"><a name="l04567"></a><span class="lineno"> 4567</span>&#160; }</div>
<div class="line"><a name="l04568"></a><span class="lineno"> 4568</span>&#160;};</div>
<div class="line"><a name="l04569"></a><span class="lineno"> 4569</span>&#160; </div>
<div class="line"><a name="l04570"></a><span class="lineno"> 4570</span>&#160;<a class="code" href="namespaceripple_1_1test.html#ac6cac37f3447e39ca9090bb878f8cc12">BEAST_DEFINE_TESTSUITE_PRIO</a>(<a class="code" href="classripple_1_1TxQ.html">TxQ</a>, app, <a class="code" href="namespaceripple.html">ripple</a>, 1);</div>
<div class="line"><a name="l04571"></a><span class="lineno"> 4571</span>&#160; </div>
<div class="line"><a name="l04572"></a><span class="lineno"> 4572</span>&#160;} <span class="comment">// namespace test</span></div>
<div class="line"><a name="l04573"></a><span class="lineno"> 4573</span>&#160;} <span class="comment">// namespace ripple</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="anamespaceripple_1_1test_html_ac6cac37f3447e39ca9090bb878f8cc12"><div class="ttname"><a href="namespaceripple_1_1test.html#ac6cac37f3447e39ca9090bb878f8cc12">ripple::test::BEAST_DEFINE_TESTSUITE_PRIO</a></div><div class="ttdeci">BEAST_DEFINE_TESTSUITE_PRIO(Flow, app, ripple, 2)</div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TxQ__test_html_acbf54535fe3a63c9ca7d627f3e7b4f2c"><div class="ttname"><a href="classripple_1_1test_1_1TxQ__test.html#acbf54535fe3a63c9ca7d627f3e7b4f2c">ripple::test::TxQ_test::envs</a></div><div class="ttdeci">envs(noop(alice), fee(100), seq(none), ter(terQUEUED))(submitParams)</div></div>
@@ -4612,7 +4685,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1TxQ_html"><div class="ttname"><a href="classripple_1_1TxQ.html">ripple::TxQ</a></div><div class="ttdoc">Transaction Queue.</div><div class="ttdef"><b>Definition:</b> <a href="TxQ_8h_source.html#l00055">TxQ.h:55</a></div></div>
<div class="ttc" id="anamespaceJson_html_a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6"><div class="ttname"><a href="namespaceJson.html#a7d654b75c16a57007925868e38212b4eae8386dcfc36d1ae897745f7b4f77a1f6">Json::objectValue</a></div><div class="ttdeci">@ objectValue</div><div class="ttdoc">object value (collection of name/value pairs).</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8h_source.html#l00043">json_value.h:43</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a1a79f0c33d1405fe85c40d63a49658bd"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">ripple::RPC::contains_error</a></div><div class="ttdeci">bool contains_error(Json::Value const &amp;json)</div><div class="ttdoc">Returns true if the json contains an rpc error specification.</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8cpp_source.html#l00218">ErrorCodes.cpp:218</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TxQ__test_html_aa7d6d9c25279946132184bc4df0b0506"><div class="ttname"><a href="classripple_1_1test_1_1TxQ__test.html#aa7d6d9c25279946132184bc4df0b0506">ripple::test::TxQ_test::run</a></div><div class="ttdeci">void run() override</div><div class="ttdef"><b>Definition:</b> <a href="TxQ__test_8cpp_source.html#l04461">TxQ_test.cpp:4461</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TxQ__test_html_aa7d6d9c25279946132184bc4df0b0506"><div class="ttname"><a href="classripple_1_1test_1_1TxQ__test.html#aa7d6d9c25279946132184bc4df0b0506">ripple::test::TxQ_test::run</a></div><div class="ttdeci">void run() override</div><div class="ttdef"><b>Definition:</b> <a href="TxQ__test_8cpp_source.html#l04534">TxQ_test.cpp:4534</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TxQ__test_html_add9e290789cd4636591a29a27ba73beb"><div class="ttname"><a href="classripple_1_1test_1_1TxQ__test.html#add9e290789cd4636591a29a27ba73beb">ripple::test::TxQ_test::testQueueSeq</a></div><div class="ttdeci">void testQueueSeq()</div><div class="ttdef"><b>Definition:</b> <a href="TxQ__test_8cpp_source.html#l00170">TxQ_test.cpp:170</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TxQ__test_html_a1aa388dfce2197778686bbc14b16ca2b"><div class="ttname"><a href="classripple_1_1test_1_1TxQ__test.html#a1aa388dfce2197778686bbc14b16ca2b">ripple::test::TxQ_test::BEAST_EXPECT</a></div><div class="ttdeci">BEAST_EXPECT(env.current() -&gt;info().seq &gt; 3)</div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_aa7a5c16a01152db684ae99bdb43bce71"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#aa7a5c16a01152db684ae99bdb43bce71">ripple::test::jtx::Env::postconditions</a></div><div class="ttdeci">void postconditions(JTx const &amp;jt, TER ter, bool didApply)</div><div class="ttdoc">Check expected postconditions of JTx submission.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8cpp_source.html#l00338">Env.cpp:338</a></div></div>
@@ -4624,7 +4697,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1test_1_1TxQ__test_html_a44c50a9d9e8bfb32eb201342362fc77c"><div class="ttname"><a href="classripple_1_1test_1_1TxQ__test.html#a44c50a9d9e8bfb32eb201342362fc77c">ripple::test::TxQ_test::testInLedgerTicket</a></div><div class="ttdeci">void testInLedgerTicket()</div><div class="ttdef"><b>Definition:</b> <a href="TxQ__test_8cpp_source.html#l04029">TxQ_test.cpp:4029</a></div></div>
<div class="ttc" id="aclassripple_1_1Application_html_a9865710c130bf4427842a544b2b7f077"><div class="ttname"><a href="classripple_1_1Application.html#a9865710c130bf4427842a544b2b7f077">ripple::Application::getTxQ</a></div><div class="ttdeci">virtual TxQ &amp; getTxQ()=0</div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a50cacef3867fc01273aa9c29231f9a7c"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a50cacef3867fc01273aa9c29231f9a7c">ripple::test::jtx::fset</a></div><div class="ttdeci">Json::Value fset(Account const &amp;account, std::uint32_t on, std::uint32_t off=0)</div><div class="ttdoc">Add and/or remove flag.</div><div class="ttdef"><b>Definition:</b> <a href="flags_8cpp_source.html#l00028">flags.cpp:28</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TxQ__test_html_aaa9d23553035727df84776536682f98a"><div class="ttname"><a href="classripple_1_1test_1_1TxQ__test.html#aaa9d23553035727df84776536682f98a">ripple::test::TxQ_test::testQueueFullDropPenalty</a></div><div class="ttdeci">void testQueueFullDropPenalty()</div><div class="ttdef"><b>Definition:</b> <a href="TxQ__test_8cpp_source.html#l04235">TxQ_test.cpp:4235</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TxQ__test_html_aaa9d23553035727df84776536682f98a"><div class="ttname"><a href="classripple_1_1test_1_1TxQ__test.html#aaa9d23553035727df84776536682f98a">ripple::test::TxQ_test::testQueueFullDropPenalty</a></div><div class="ttdeci">void testQueueFullDropPenalty()</div><div class="ttdef"><b>Definition:</b> <a href="TxQ__test_8cpp_source.html#l04308">TxQ_test.cpp:4308</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a95819c5e0e7ed797436fa48695febd32"><div class="ttname"><a href="namespaceripple_1_1test.html#a95819c5e0e7ed797436fa48695febd32">ripple::test::reserve</a></div><div class="ttdeci">static XRPAmount reserve(jtx::Env &amp;env, std::uint32_t count)</div><div class="ttdef"><b>Definition:</b> <a href="DepositAuth__test_8cpp_source.html#l00029">DepositAuth_test.cpp:29</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TxQ__test_html_a0dcdb31788f28ca9cdeae66cf884d74f"><div class="ttname"><a href="classripple_1_1test_1_1TxQ__test.html#a0dcdb31788f28ca9cdeae66cf884d74f">ripple::test::TxQ_test::testInFlightBalance</a></div><div class="ttdeci">void testInFlightBalance()</div><div class="ttdef"><b>Definition:</b> <a href="TxQ__test_8cpp_source.html#l01953">TxQ_test.cpp:1953</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1TxQ__test_html_a3b30cc85c2546c54be0725be6b18a150"><div class="ttname"><a href="classripple_1_1test_1_1TxQ__test.html#a3b30cc85c2546c54be0725be6b18a150">ripple::test::TxQ_test::testSignAndSubmitSequence</a></div><div class="ttdeci">void testSignAndSubmitSequence()</div><div class="ttdef"><b>Definition:</b> <a href="TxQ__test_8cpp_source.html#l02799">TxQ_test.cpp:2799</a></div></div>