| |
| <h1>example_test.rb</h1> |
| <div class="highlight"><pre><span></span><span class="nb">require</span> <span class="s1">'minitest/autorun'</span> |
| <span class="nb">require</span> <span class="s1">'qpid_proton'</span> |
| <span class="nb">require</span> <span class="s1">'socket'</span> |
| <span class="nb">require</span> <span class="s1">'rbconfig'</span> |
| |
| <span class="k">begin</span> |
| <span class="no">MiniTest</span><span class="o">::</span><span class="no">Test</span> |
| <span class="k">rescue</span> <span class="no">NameError</span> <span class="c1"># For older versions of MiniTest</span> |
| <span class="no">MiniTest</span><span class="o">::</span><span class="no">Test</span> <span class="o">=</span> <span class="no">MiniTest</span><span class="o">::</span><span class="no">Unit</span><span class="o">::</span><span class="no">TestCase</span> |
| <span class="k">end</span> |
| |
| <span class="k">def</span> <span class="nf">listening_port</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
| <span class="sr">/Listening on ([0-9]+)/</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">s</span><span class="p">)</span><span class="o">[</span><span class="mi">1</span><span class="o">]</span> |
| <span class="k">end</span> |
| |
| <span class="k">def</span> <span class="nf">listening_url</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
| <span class="s2">":</span><span class="si">#{</span><span class="n">listening_port</span> <span class="n">s</span><span class="si">}</span><span class="s2">"</span> |
| <span class="k">end</span> |
| |
| <span class="k">class</span> <span class="nc">ExampleTest</span> <span class="o"><</span> <span class="no">MiniTest</span><span class="o">::</span><span class="no">Test</span> |
| |
| <span class="k">def</span> <span class="nf">run_script</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span> |
| <span class="k">return</span> <span class="no">IO</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="o">[</span> <span class="no">RbConfig</span><span class="o">.</span><span class="n">ruby</span> <span class="o">]</span> <span class="o">+</span> <span class="n">args</span><span class="o">.</span><span class="n">map</span> <span class="p">{</span> <span class="o">|</span><span class="n">a</span><span class="o">|</span> <span class="n">a</span><span class="o">.</span><span class="n">to_s</span> <span class="p">})</span> |
| <span class="k">end</span> |
| |
| <span class="k">def</span> <span class="nf">assert_output</span><span class="p">(</span><span class="n">want</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> |
| <span class="n">assert_equal</span><span class="p">(</span><span class="n">want</span><span class="o">.</span><span class="n">strip</span><span class="p">,</span> <span class="n">run_script</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="o">.</span><span class="n">strip</span><span class="p">)</span> |
| <span class="k">end</span> |
| |
| <span class="k">def</span> <span class="nf">test_helloworld</span> |
| <span class="n">assert_output</span><span class="p">(</span><span class="s2">"Hello world!"</span><span class="p">,</span> <span class="s2">"helloworld.rb"</span><span class="p">,</span> <span class="vg">$url</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span> |
| <span class="k">end</span> |
| |
| <span class="k">def</span> <span class="nf">test_client_server</span> |
| <span class="n">want</span> <span class="o">=</span> <span class="o"><<</span><span class="dl">EOS</span> |
| <span class="sh">-> Twas brillig, and the slithy toves</span> |
| <span class="sh"><- TWAS BRILLIG, AND THE SLITHY TOVES</span> |
| <span class="sh">-> Did gire and gymble in the wabe.</span> |
| <span class="sh"><- DID GIRE AND GYMBLE IN THE WABE.</span> |
| <span class="sh">-> All mimsy were the borogroves,</span> |
| <span class="sh"><- ALL MIMSY WERE THE BOROGROVES,</span> |
| <span class="sh">-> And the mome raths outgrabe.</span> |
| <span class="sh"><- AND THE MOME RATHS OUTGRABE.</span> |
| <span class="dl">EOS</span> |
| <span class="n">server</span> <span class="o">=</span> <span class="n">run_script</span><span class="p">(</span><span class="s2">"server.rb"</span><span class="p">,</span> <span class="vg">$url</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span> |
| <span class="n">assert_output</span><span class="p">(</span><span class="n">want</span><span class="o">.</span><span class="n">strip</span><span class="p">,</span> <span class="s2">"client.rb"</span><span class="p">,</span> <span class="vg">$url</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span> |
| <span class="k">ensure</span> |
| <span class="no">Process</span><span class="o">.</span><span class="n">kill</span> <span class="ss">:TERM</span><span class="p">,</span> <span class="n">server</span><span class="o">.</span><span class="n">pid</span> <span class="k">if</span> <span class="n">server</span> |
| <span class="k">end</span> |
| |
| <span class="k">def</span> <span class="nf">test_send_recv</span> |
| <span class="n">assert_output</span><span class="p">(</span><span class="s2">"All 10 messages confirmed!"</span><span class="p">,</span> <span class="s2">"simple_send.rb"</span><span class="p">,</span> <span class="vg">$url</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span> |
| <span class="n">want</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="o">..</span><span class="mi">9</span><span class="p">)</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> <span class="p">{</span> <span class="o">|</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="o">|</span> <span class="n">x</span> <span class="o"><<</span> <span class="s2">"Received: sequence </span><span class="si">#{</span><span class="n">y</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span> <span class="p">}</span> |
| <span class="n">assert_output</span><span class="p">(</span><span class="n">want</span><span class="o">.</span><span class="n">strip</span><span class="p">,</span> <span class="s2">"simple_recv.rb"</span><span class="p">,</span> <span class="vg">$url</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span> |
| <span class="k">end</span> |
| |
| <span class="k">def</span> <span class="nf">test_ssl_send_recv</span> |
| <span class="n">skip</span> <span class="s1">'SSL not available'</span> <span class="k">unless</span> <span class="no">Qpid</span><span class="o">::</span><span class="no">Proton</span><span class="o">::</span><span class="no">SSL</span><span class="o">.</span><span class="n">present?</span> |
| <span class="n">out</span> <span class="o">=</span> <span class="n">run_script</span><span class="p">(</span><span class="s2">"ssl_send.rb"</span><span class="p">,</span> <span class="vg">$url</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="o">.</span><span class="n">strip</span> |
| <span class="n">assert_match</span><span class="p">(</span><span class="sr">/Connection secured with "...*\"\nAll 10 messages confirmed!/</span><span class="p">,</span> <span class="n">out</span><span class="p">)</span> |
| <span class="n">want</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="o">..</span><span class="mi">9</span><span class="p">)</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> <span class="p">{</span> <span class="o">|</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="o">|</span> <span class="n">x</span> <span class="o"><<</span> <span class="s2">"Received: sequence </span><span class="si">#{</span><span class="n">y</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span> <span class="p">}</span> |
| <span class="n">assert_output</span><span class="p">(</span><span class="n">want</span><span class="o">.</span><span class="n">strip</span><span class="p">,</span> <span class="s2">"simple_recv.rb"</span><span class="p">,</span> <span class="vg">$url</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span> |
| <span class="k">end</span> |
| |
| <span class="k">def</span> <span class="nf">test_direct_recv</span> |
| <span class="nb">p</span> <span class="o">=</span> <span class="n">run_script</span><span class="p">(</span><span class="s2">"direct_recv.rb"</span><span class="p">,</span> <span class="s2">":0"</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span> |
| <span class="n">url</span> <span class="o">=</span> <span class="n">listening_url</span><span class="p">(</span><span class="nb">p</span><span class="o">.</span><span class="n">readline</span><span class="p">)</span> <span class="c1"># Wait till ready</span> |
| <span class="n">assert_output</span><span class="p">(</span><span class="s2">"All 10 messages confirmed!"</span><span class="p">,</span> <span class="s2">"simple_send.rb"</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span> |
| <span class="n">want</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="o">..</span><span class="mi">9</span><span class="p">)</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> <span class="p">{</span> <span class="o">|</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="o">|</span> <span class="n">x</span> <span class="o"><<</span> <span class="s2">"Received: sequence </span><span class="si">#{</span><span class="n">y</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span> <span class="p">}</span> |
| <span class="n">assert_equal</span><span class="p">(</span><span class="n">want</span><span class="o">.</span><span class="n">strip</span><span class="p">,</span> <span class="nb">p</span><span class="o">.</span><span class="n">read</span><span class="o">.</span><span class="n">strip</span><span class="p">)</span> |
| <span class="k">end</span> |
| |
| <span class="k">def</span> <span class="nf">test_direct_send</span> |
| <span class="nb">p</span> <span class="o">=</span> <span class="n">run_script</span><span class="p">(</span><span class="s2">"direct_send.rb"</span><span class="p">,</span> <span class="s2">":0"</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span> |
| <span class="n">url</span> <span class="o">=</span> <span class="n">listening_url</span><span class="p">(</span><span class="nb">p</span><span class="o">.</span><span class="n">readline</span><span class="p">)</span> <span class="c1"># Wait till ready</span> |
| <span class="n">want</span> <span class="o">=</span> <span class="p">(</span><span class="mi">0</span><span class="o">..</span><span class="mi">9</span><span class="p">)</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> <span class="p">{</span> <span class="o">|</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="o">|</span> <span class="n">x</span> <span class="o"><<</span> <span class="s2">"Received: sequence </span><span class="si">#{</span><span class="n">y</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span> <span class="p">}</span> |
| <span class="n">assert_output</span><span class="p">(</span><span class="n">want</span><span class="o">.</span><span class="n">strip</span><span class="p">,</span> <span class="s2">"simple_recv.rb"</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="s2">"examples"</span><span class="p">)</span> |
| <span class="n">assert_equal</span><span class="p">(</span><span class="s2">"All 10 messages confirmed!"</span><span class="p">,</span> <span class="nb">p</span><span class="o">.</span><span class="n">read</span><span class="o">.</span><span class="n">strip</span><span class="p">)</span> |
| <span class="k">end</span> |
| <span class="k">end</span> |
| |
| <span class="c1"># Start the broker before all tests.</span> |
| <span class="vg">$broker</span> <span class="o">=</span> <span class="no">IO</span><span class="o">.</span><span class="n">popen</span><span class="p">(</span><span class="o">[</span><span class="no">RbConfig</span><span class="o">.</span><span class="n">ruby</span><span class="p">,</span> <span class="s1">'broker.rb'</span><span class="p">,</span> <span class="s2">":0"</span><span class="o">]</span><span class="p">)</span> |
| <span class="n">l</span> <span class="o">=</span> <span class="vg">$broker</span><span class="o">.</span><span class="n">readline</span> |
| <span class="vg">$url</span> <span class="o">=</span> <span class="n">listening_url</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> |
| |
| <span class="c1"># Kill the broker after all tests</span> |
| <span class="no">MiniTest</span><span class="o">.</span><span class="n">after_run</span> <span class="k">do</span> |
| <span class="no">Process</span><span class="o">.</span><span class="n">kill</span><span class="p">(</span><span class="ss">:TERM</span><span class="p">,</span> <span class="vg">$broker</span><span class="o">.</span><span class="n">pid</span><span class="p">)</span> <span class="k">if</span> <span class="vg">$broker</span> |
| <span class="k">end</span> |
| </pre></div> |
| |
| <p><a href="example_test.rb">Download this file</a></p> |