Added: qpid/site/input/releases/qpid-proton-master/proton/python/examples/test_examples.py.html.in URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/test_examples.py.html.in?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/examples/test_examples.py.html.in (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/examples/test_examples.py.html.in Tue Sep 29 20:27:56 2015 @@ -0,0 +1,137 @@ + +<h1>test_examples.py</h1> +<div class="highlight"><pre><span class="kn">import</span> <span class="nn">sys</span> +<span class="kn">import</span> <span class="nn">subprocess</span> +<span class="kn">import</span> <span class="nn">time</span> +<span class="kn">import</span> <span class="nn">unittest</span> + +<span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> + <span class="n">_unicode_prefix</span> <span class="o">=</span> <span class="s">'u'</span> +<span class="k">else</span><span class="p">:</span> + <span class="n">_unicode_prefix</span> <span class="o">=</span> <span class="s">''</span> + + +<span class="k">class</span> <span class="nc">ExamplesTest</span><span class="p">(</span><span class="n">unittest</span><span class="o">.</span><span class="n">TestCase</span><span class="p">):</span> + <span class="k">def</span> <span class="nf">test_helloworld</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">example</span><span class="o">=</span><span class="s">"helloworld.py"</span><span class="p">):</span> + <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">example</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">p</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="n">output</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">p</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="p">[</span><span class="s">'Hello World!'</span><span class="p">])</span> + + <span class="k">def</span> <span class="nf">test_helloworld_direct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s">'helloworld_direct.py'</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_helloworld_blocking</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s">'helloworld_blocking.py'</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_helloworld_tornado</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s">'helloworld_tornado.py'</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_helloworld_direct_tornado</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">test_helloworld</span><span class="p">(</span><span class="s">'helloworld_direct_tornado.py'</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_simple_send_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">recv</span><span class="o">=</span><span class="s">'simple_recv.py'</span><span class="p">,</span> <span class="n">send</span><span class="o">=</span><span class="s">'simple_send.py'</span><span class="p">):</span> + <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">recv</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">send</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span> + <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s">"{</span><span class="si">%s</span><span class="s">'sequence': </span><span class="si">%i</span><span class="s">}"</span> <span class="o">%</span> <span class="p">(</span><span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_client_server</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s">'client.py'</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s">'server.py'</span><span class="p">],</span> <span class="n">sleep</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span> + <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">server</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="k">if</span> <span class="n">sleep</span><span class="p">:</span> + <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">sleep</span><span class="p">)</span> + <span class="n">c</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">c</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="n">s</span><span class="o">.</span><span class="n">terminate</span><span class="p">()</span> + <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">c</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span> + <span class="n">inputs</span> <span class="o">=</span> <span class="p">[</span><span class="s">"Twas brillig, and the slithy toves"</span><span class="p">,</span> + <span class="s">"Did gire and gymble in the wabe."</span><span class="p">,</span> + <span class="s">"All mimsy were the borogroves,"</span><span class="p">,</span> + <span class="s">"And the mome raths outgrabe."</span><span class="p">]</span> + <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s">"</span><span class="si">%s</span><span class="s"> => </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">l</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">inputs</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_sync_client_server</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s">'sync_client.py'</span><span class="p">])</span> + + <span class="k">def</span> <span class="nf">test_client_server_tx</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s">'server_tx.py'</span><span class="p">])</span> + + <span class="k">def</span> <span class="nf">test_sync_client_server_tx</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s">'sync_client.py'</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s">'server_tx.py'</span><span class="p">])</span> + + <span class="k">def</span> <span class="nf">test_client_server_direct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s">'client.py'</span><span class="p">,</span> <span class="s">'-a'</span><span class="p">,</span> <span class="s">'localhost:8888/examples'</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s">'server_direct.py'</span><span class="p">],</span> <span class="n">sleep</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_sync_client_server_direct</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">test_client_server</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="p">[</span><span class="s">'sync_client.py'</span><span class="p">,</span> <span class="s">'-a'</span><span class="p">,</span> <span class="s">'localhost:8888/examples'</span><span class="p">],</span> <span class="n">server</span><span class="o">=</span><span class="p">[</span><span class="s">'server_direct.py'</span><span class="p">],</span> <span class="n">sleep</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_db_send_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">maxDiff</span> <span class="o">=</span> <span class="bp">None</span> + <span class="c"># setup databases</span> + <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s">'db_ctrl.py'</span><span class="p">,</span> <span class="s">'init'</span><span class="p">,</span> <span class="s">'./src_db'</span><span class="p">])</span> + <span class="n">subprocess</span><span class="o">.</span><span class="n">check_call</span><span class="p">([</span><span class="s">'db_ctrl.py'</span><span class="p">,</span> <span class="s">'init'</span><span class="p">,</span> <span class="s">'./dst_db'</span><span class="p">])</span> + <span class="n">fill</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s">'db_ctrl.py'</span><span class="p">,</span> <span class="s">'insert'</span><span class="p">,</span> <span class="s">'./src_db'</span><span class="p">],</span> + <span class="n">stdin</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">):</span> + <span class="n">fill</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">"Message-</span><span class="si">%i</span><span class="se">\n</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> + <span class="n">fill</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + <span class="n">fill</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="c"># run send and recv</span> + <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s">'db_recv.py'</span><span class="p">,</span> <span class="s">'-m'</span><span class="p">,</span> <span class="s">'100'</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s">'db_send.py'</span><span class="p">,</span> <span class="s">'-m'</span><span class="p">,</span> <span class="s">'100'</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="c"># verify output of receive</span> + <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span> + <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s">"inserted message </span><span class="si">%i</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span> + <span class="c"># verify state of databases</span> + <span class="n">v</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s">'db_ctrl.py'</span><span class="p">,</span> <span class="s">'list'</span><span class="p">,</span> <span class="s">'./dst_db'</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">v</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s">"(</span><span class="si">%i</span><span class="s">, </span><span class="si">%s</span><span class="s">'Message-</span><span class="si">%i</span><span class="s">')"</span> <span class="o">%</span> <span class="p">((</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span> <span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span> + <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">v</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_tx_send_tx_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">test_simple_send_recv</span><span class="p">(</span><span class="n">recv</span><span class="o">=</span><span class="s">'tx_recv.py'</span><span class="p">,</span> <span class="n">send</span><span class="o">=</span><span class="s">'tx_send.py'</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_simple_send_direct_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">maxDiff</span> <span class="o">=</span> <span class="bp">None</span> + <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s">'direct_recv.py'</span><span class="p">,</span> <span class="s">'-a'</span><span class="p">,</span> <span class="s">'localhost:8888'</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span> + <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s">'simple_send.py'</span><span class="p">,</span> <span class="s">'-a'</span><span class="p">,</span> <span class="s">'localhost:8888'</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span> + <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s">"{</span><span class="si">%s</span><span class="s">'sequence': </span><span class="si">%i</span><span class="s">}"</span> <span class="o">%</span> <span class="p">(</span><span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">test_direct_send_simple_recv</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">s</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s">'direct_send.py'</span><span class="p">,</span> <span class="s">'-a'</span><span class="p">,</span> <span class="s">'localhost:8888'</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span> + <span class="n">r</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="s">'simple_recv.py'</span><span class="p">,</span> <span class="s">'-a'</span><span class="p">,</span> <span class="s">'localhost:8888'</span><span class="p">],</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> + <span class="n">universal_newlines</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="n">r</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="n">s</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span> + <span class="n">actual</span> <span class="o">=</span> <span class="p">[</span><span class="n">l</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">stdout</span><span class="p">]</span> + <span class="n">expected</span> <span class="o">=</span> <span class="p">[</span><span class="s">"{</span><span class="si">%s</span><span class="s">'sequence': </span><span class="si">%i</span><span class="s">}"</span> <span class="o">%</span> <span class="p">(</span><span class="n">_unicode_prefix</span><span class="p">,</span> <span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">))</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">100</span><span class="p">)]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">actual</span><span class="p">,</span> <span class="n">expected</span><span class="p">)</span> +</pre></div> + +<p><a href="test_examples.py">Download this file</a></p>
Added: qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv.py URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv.py?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv.py (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv.py Tue Sep 29 20:27:56 2015 @@ -0,0 +1,80 @@ +#!/usr/bin/env python +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +from __future__ import print_function +import optparse +from proton import Url +from proton.reactor import Container +from proton.handlers import MessagingHandler, TransactionHandler + +class TxRecv(MessagingHandler, TransactionHandler): + def __init__(self, url, messages, batch_size): + super(TxRecv, self).__init__(prefetch=0, auto_accept=False) + self.url = Url(url) + self.expected = messages + self.batch_size = batch_size + self.current_batch = 0 + self.committed = 0 + + def on_start(self, event): + self.container = event.container + self.conn = self.container.connect(self.url) + self.receiver = self.container.create_receiver(self.conn, self.url.path) + self.container.declare_transaction(self.conn, handler=self) + self.transaction = None + + def on_message(self, event): + print(event.message.body) + self.transaction.accept(event.delivery) + self.current_batch += 1 + if self.current_batch == self.batch_size: + self.transaction.commit() + self.transaction = None + + def on_transaction_declared(self, event): + self.receiver.flow(self.batch_size) + self.transaction = event.transaction + + def on_transaction_committed(self, event): + self.committed += self.current_batch + self.current_batch = 0 + if self.expected == 0 or self.committed < self.expected: + self.container.declare_transaction(self.conn, handler=self) + else: + event.connection.close() + + def on_disconnected(self, event): + self.current_batch = 0 + +parser = optparse.OptionParser(usage="usage: %prog [options]") +parser.add_option("-a", "--address", default="localhost:5672/examples", + help="address from which messages are received (default %default)") +parser.add_option("-m", "--messages", type="int", default=100, + help="number of messages to receive; 0 receives indefinitely (default %default)") +parser.add_option("-b", "--batch-size", type="int", default=10, + help="number of messages in each transaction (default %default)") +opts, args = parser.parse_args() + +try: + Container(TxRecv(opts.address, opts.messages, opts.batch_size)).run() +except KeyboardInterrupt: pass + + + Propchange: qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv.py ------------------------------------------------------------------------------ svn:executable = * Added: qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv.py.html.in URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv.py.html.in?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv.py.html.in (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv.py.html.in Tue Sep 29 20:27:56 2015 @@ -0,0 +1,62 @@ + +<h1>tx_recv.py</h1> +<div class="highlight"><pre><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span> +<span class="kn">import</span> <span class="nn">optparse</span> +<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Url</span> +<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span> +<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span> + +<span class="k">class</span> <span class="nc">TxRecv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span><span class="p">):</span> + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">messages</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">prefetch</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">auto_accept</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">Url</span><span class="p">(</span><span class="n">url</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">=</span> <span class="n">messages</span> + <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span> <span class="o">=</span> <span class="n">batch_size</span> + <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span> + <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="o">.</span><span class="n">path</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span> + + <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span> + + <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">flow</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">transaction</span> + + <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> + <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">expected</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span> + +<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s">"usage: %prog [options]"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">"-a"</span><span class="p">,</span> <span class="s">"--address"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s">"localhost:5672/examples"</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s">"address from which messages are received (default </span><span class="si">%d</span><span class="s">efault)"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">"-m"</span><span class="p">,</span> <span class="s">"--messages"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s">"int"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s">"number of messages to receive; 0 receives indefinitely (default </span><span class="si">%d</span><span class="s">efault)"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">"-b"</span><span class="p">,</span> <span class="s">"--batch-size"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s">"int"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s">"number of messages in each transaction (default </span><span class="si">%d</span><span class="s">efault)"</span><span class="p">)</span> +<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span> + +<span class="k">try</span><span class="p">:</span> + <span class="n">Container</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">batch_size</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span> +<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span> +</pre></div> + +<p><a href="tx_recv.py">Download this file</a></p> Added: qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py Tue Sep 29 20:27:56 2015 @@ -0,0 +1,84 @@ +#!/usr/bin/env python +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +from __future__ import print_function +import sys +import threading +from proton.reactor import ApplicationEvent, Container +from proton.handlers import MessagingHandler, TransactionHandler + +class TxRecv(MessagingHandler, TransactionHandler): + def __init__(self): + super(TxRecv, self).__init__(prefetch=0, auto_accept=False) + + def on_start(self, event): + self.container = event.container + self.conn = self.container.connect("localhost:5672") + self.receiver = self.container.create_receiver(self.conn, "examples") + self.container.declare_transaction(self.conn, handler=self, settle_before_discharge=True) + self.transaction = None + + def on_message(self, event): + print(event.message.body) + self.transaction.accept(event.delivery) + + def on_transaction_declared(self, event): + self.transaction = event.transaction + print("transaction declared") + + def on_transaction_committed(self, event): + print("transaction committed") + self.container.declare_transaction(self.conn, handler=self) + + def on_transaction_aborted(self, event): + print("transaction aborted") + self.container.declare_transaction(self.conn, handler=self) + + def on_commit(self, event): + self.transaction.commit() + + def on_abort(self, event): + self.transaction.abort() + + def on_fetch(self, event): + self.receiver.flow(1) + + def on_quit(self, event): + c = self.receiver.connection + self.receiver.close() + c.close() + +try: + reactor = Container(TxRecv()) + events = reactor.get_event_trigger() + thread = threading.Thread(target=reactor.run) + thread.daemon=True + thread.start() + + print("Enter 'fetch', 'commit' or 'abort'") + while True: + line = sys.stdin.readline() + if line: + events.trigger(ApplicationEvent(line.strip())) + else: + break +except KeyboardInterrupt: pass + + Propchange: qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py ------------------------------------------------------------------------------ svn:executable = * Added: qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html.in URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html.in?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html.in (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html.in Tue Sep 29 20:27:56 2015 @@ -0,0 +1,67 @@ + +<h1>tx_recv_interactive.py</h1> +<div class="highlight"><pre><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span> +<span class="kn">import</span> <span class="nn">sys</span> +<span class="kn">import</span> <span class="nn">threading</span> +<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">ApplicationEvent</span><span class="p">,</span> <span class="n">Container</span> +<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span> + +<span class="k">class</span> <span class="nc">TxRecv</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span><span class="p">):</span> + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="n">prefetch</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">auto_accept</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span> + <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s">"localhost:5672"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_receiver</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="s">"examples"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">settle_before_discharge</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span> + + <span class="k">def</span> <span class="nf">on_message</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="k">print</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">body</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">accept</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">delivery</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">transaction</span> + <span class="k">print</span><span class="p">(</span><span class="s">"transaction declared"</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="k">print</span><span class="p">(</span><span class="s">"transaction committed"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">on_transaction_aborted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="k">print</span><span class="p">(</span><span class="s">"transaction aborted"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">on_commit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">on_abort</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">abort</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">on_fetch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">flow</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">on_quit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="n">c</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">connection</span> + <span class="bp">self</span><span class="o">.</span><span class="n">receiver</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + <span class="n">c</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + +<span class="k">try</span><span class="p">:</span> + <span class="n">reactor</span> <span class="o">=</span> <span class="n">Container</span><span class="p">(</span><span class="n">TxRecv</span><span class="p">())</span> + <span class="n">events</span> <span class="o">=</span> <span class="n">reactor</span><span class="o">.</span><span class="n">get_event_trigger</span><span class="p">()</span> + <span class="n">thread</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">reactor</span><span class="o">.</span><span class="n">run</span><span class="p">)</span> + <span class="n">thread</span><span class="o">.</span><span class="n">daemon</span><span class="o">=</span><span class="bp">True</span> + <span class="n">thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> + + <span class="k">print</span><span class="p">(</span><span class="s">"Enter 'fetch', 'commit' or 'abort'"</span><span class="p">)</span> + <span class="k">while</span> <span class="bp">True</span><span class="p">:</span> + <span class="n">line</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span> + <span class="k">if</span> <span class="n">line</span><span class="p">:</span> + <span class="n">events</span><span class="o">.</span><span class="n">trigger</span><span class="p">(</span><span class="n">ApplicationEvent</span><span class="p">(</span><span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()))</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">break</span> +<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span> +</pre></div> + +<p><a href="tx_recv_interactive.py">Download this file</a></p> Added: qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_send.py URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_send.py?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_send.py (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_send.py Tue Sep 29 20:27:56 2015 @@ -0,0 +1,89 @@ +#!/usr/bin/env python +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +from __future__ import print_function, unicode_literals +import optparse +from proton import Message, Url +from proton.reactor import Container +from proton.handlers import MessagingHandler, TransactionHandler + +class TxSend(MessagingHandler, TransactionHandler): + def __init__(self, url, messages, batch_size): + super(TxSend, self).__init__() + self.url = Url(url) + self.current_batch = 0 + self.committed = 0 + self.confirmed = 0 + self.total = messages + self.batch_size = batch_size + + def on_start(self, event): + self.container = event.container + self.conn = self.container.connect(self.url) + self.sender = self.container.create_sender(self.conn, self.url.path) + self.container.declare_transaction(self.conn, handler=self) + self.transaction = None + + def on_transaction_declared(self, event): + self.transaction = event.transaction + self.send() + + def on_sendable(self, event): + self.send() + + def send(self): + while self.transaction and self.sender.credit and (self.committed + self.current_batch) < self.total: + seq = self.committed + self.current_batch + 1 + msg = Message(id=seq, body={'sequence':seq}) + self.transaction.send(self.sender, msg) + self.current_batch += 1 + if self.current_batch == self.batch_size: + self.transaction.commit() + self.transaction = None + + def on_accepted(self, event): + if event.sender == self.sender: + self.confirmed += 1 + + def on_transaction_committed(self, event): + self.committed += self.current_batch + if self.committed == self.total: + print("all messages committed") + event.connection.close() + else: + self.current_batch = 0 + self.container.declare_transaction(self.conn, handler=self) + + def on_disconnected(self, event): + self.current_batch = 0 + +parser = optparse.OptionParser(usage="usage: %prog [options]", + description="Send messages transactionally to the supplied address.") +parser.add_option("-a", "--address", default="localhost:5672/examples", + help="address to which messages are sent (default %default)") +parser.add_option("-m", "--messages", type="int", default=100, + help="number of messages to send (default %default)") +parser.add_option("-b", "--batch-size", type="int", default=10, + help="number of messages in each transaction (default %default)") +opts, args = parser.parse_args() + +try: + Container(TxSend(opts.address, opts.messages, opts.batch_size)).run() +except KeyboardInterrupt: pass Propchange: qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_send.py ------------------------------------------------------------------------------ svn:executable = * Added: qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_send.py.html.in URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_send.py.html.in?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_send.py.html.in (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/examples/tx_send.py.html.in Tue Sep 29 20:27:56 2015 @@ -0,0 +1,74 @@ + +<h1>tx_send.py</h1> +<div class="highlight"><pre><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span><span class="p">,</span> <span class="n">unicode_literals</span> +<span class="kn">import</span> <span class="nn">optparse</span> +<span class="kn">from</span> <span class="nn">proton</span> <span class="kn">import</span> <span class="n">Message</span><span class="p">,</span> <span class="n">Url</span> +<span class="kn">from</span> <span class="nn">proton.reactor</span> <span class="kn">import</span> <span class="n">Container</span> +<span class="kn">from</span> <span class="nn">proton.handlers</span> <span class="kn">import</span> <span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span> + +<span class="k">class</span> <span class="nc">TxSend</span><span class="p">(</span><span class="n">MessagingHandler</span><span class="p">,</span> <span class="n">TransactionHandler</span><span class="p">):</span> + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">messages</span><span class="p">,</span> <span class="n">batch_size</span><span class="p">):</span> + <span class="nb">super</span><span class="p">(</span><span class="n">TxSend</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">url</span> <span class="o">=</span> <span class="n">Url</span><span class="p">(</span><span class="n">url</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">total</span> <span class="o">=</span> <span class="n">messages</span> + <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span> <span class="o">=</span> <span class="n">batch_size</span> + + <span class="k">def</span> <span class="nf">on_start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">container</span> + <span class="bp">self</span><span class="o">.</span><span class="n">conn</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">sender</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">create_sender</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="o">.</span><span class="n">path</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span> + + <span class="k">def</span> <span class="nf">on_transaction_declared</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="n">event</span><span class="o">.</span><span class="n">transaction</span> + <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">on_sendable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">send</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">send</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="o">.</span><span class="n">credit</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span><span class="p">)</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span> + <span class="n">seq</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">+</span> <span class="mi">1</span> + <span class="n">msg</span> <span class="o">=</span> <span class="n">Message</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="n">seq</span><span class="p">,</span> <span class="n">body</span><span class="o">=</span><span class="p">{</span><span class="s">'sequence'</span><span class="p">:</span><span class="n">seq</span><span class="p">})</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">,</span> <span class="n">msg</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">+=</span> <span class="mi">1</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">batch_size</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">transaction</span> <span class="o">=</span> <span class="bp">None</span> + + <span class="k">def</span> <span class="nf">on_accepted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">sender</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">sender</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">confirmed</span> <span class="o">+=</span> <span class="mi">1</span> + + <span class="k">def</span> <span class="nf">on_transaction_committed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">committed</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">total</span><span class="p">:</span> + <span class="k">print</span><span class="p">(</span><span class="s">"all messages committed"</span><span class="p">)</span> + <span class="n">event</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">declare_transaction</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span class="p">,</span> <span class="n">handler</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">on_disconnected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">current_batch</span> <span class="o">=</span> <span class="mi">0</span> + +<span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">(</span><span class="n">usage</span><span class="o">=</span><span class="s">"usage: %prog [options]"</span><span class="p">,</span> + <span class="n">description</span><span class="o">=</span><span class="s">"Send messages transactionally to the supplied address."</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">"-a"</span><span class="p">,</span> <span class="s">"--address"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s">"localhost:5672/examples"</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s">"address to which messages are sent (default </span><span class="si">%d</span><span class="s">efault)"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">"-m"</span><span class="p">,</span> <span class="s">"--messages"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s">"int"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s">"number of messages to send (default </span><span class="si">%d</span><span class="s">efault)"</span><span class="p">)</span> +<span class="n">parser</span><span class="o">.</span><span class="n">add_option</span><span class="p">(</span><span class="s">"-b"</span><span class="p">,</span> <span class="s">"--batch-size"</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="s">"int"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> + <span class="n">help</span><span class="o">=</span><span class="s">"number of messages in each transaction (default </span><span class="si">%d</span><span class="s">efault)"</span><span class="p">)</span> +<span class="n">opts</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span> + +<span class="k">try</span><span class="p">:</span> + <span class="n">Container</span><span class="p">(</span><span class="n">TxSend</span><span class="p">(</span><span class="n">opts</span><span class="o">.</span><span class="n">address</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">messages</span><span class="p">,</span> <span class="n">opts</span><span class="o">.</span><span class="n">batch_size</span><span class="p">))</span><span class="o">.</span><span class="n">run</span><span class="p">()</span> +<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span> <span class="k">pass</span> +</pre></div> + +<p><a href="tx_send.py">Download this file</a></p> Modified: qpid/site/python/qpid_site/generate.py URL: http://svn.apache.org/viewvc/qpid/site/python/qpid_site/generate.py?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/python/qpid_site/generate.py (original) +++ qpid/site/python/qpid_site/generate.py Tue Sep 29 20:27:56 2015 @@ -57,6 +57,7 @@ def setup_release_script(): call("gcc --version > /dev/null") call("make --version > /dev/null") call("rdoc --version > /dev/null") + call("sphinx-build --version > /dev/null") call("svn --version > /dev/null") call("which javadoc > /dev/null") call("xsltproc --version > /dev/null") Modified: qpid/site/scripts/gen-cpp-release-page URL: http://svn.apache.org/viewvc/qpid/site/scripts/gen-cpp-release-page?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/scripts/gen-cpp-release-page (original) +++ qpid/site/scripts/gen-cpp-release-page Tue Sep 29 20:27:56 2015 @@ -30,6 +30,24 @@ component_records = ( ("messaging-api", "Qpid Messaging API", "C++, Perl, Python, Ruby, .NET", "Linux, Windows", "1.0, 0-10"), ) +documentation = \ +""" +<div class="two-column" markdown="1"> + + - [Installing Qpid C++](http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/INSTALL) + - [C++ broker book](cpp-broker/book/index.html) ([PDF](cpp-broker/cpp-broker-book.pdf)) + - [.NET API reference](messaging-api/dotnet/api/index.html) + - [.NET examples](messaging-api/dotnet/examples/index.html) + - [C++ API reference](messaging-api/cpp/api/index.html) + - [C++ examples](messaging-api/cpp/examples/index.html) + - [Python API reference](messaging-api/python/api/index.html) + - [Python examples](messaging-api/python/examples/index.html) + - [Ruby API reference](messaging-api/ruby/api/index.html) + - [Ruby examples](messaging-api/ruby/examples/index.html) + +</div> +""" + template = \ """ ;; @@ -51,14 +69,6 @@ template = \ ;; under the License. ;; -<script type="text/javascript"> - _deferredFunctions.push(function() {{ - if ("{release}" === "{{{{current_cpp_release}}}}") {{ - _modifyCurrentReleaseLinks(); - }} - }}); -</script> - # Qpid C++ {release} Qpid C++ offers a connection-oriented messaging API supporting many @@ -87,25 +97,20 @@ files you download. ## Documentation -<div class="two-column" markdown="1"> - - - [Installing Qpid C++](http://svn.apache.org/repos/asf/qpid/tags/qpid-cpp-{release}/qpid/cpp/INSTALL) - - [C++ broker book](cpp-broker/book/index.html) ([PDF](cpp-broker/cpp-broker-book.pdf)) - - [.NET API reference](messaging-api/dotnet/api/index.html) - - [.NET examples](messaging-api/dotnet/examples/index.html) - - [C++ API reference](messaging-api/cpp/api/index.html) - - [C++ examples](messaging-api/cpp/examples/index.html) - - [Python API reference](messaging-api/python/api/index.html) - - [Python examples](messaging-api/python/examples/index.html) - - [Ruby API reference](messaging-api/ruby/api/index.html) - - [Ruby examples](messaging-api/ruby/examples/index.html) - -</div> +{documentation} ## More information - [Resolved issues in JIRA]({issues_url}) - [Source repository tag](http://svn.apache.org/repos/asf/qpid/tags/qpid-cpp-{release}) + +<script type="text/javascript"> + _deferredFunctions.push(function() {{ + if ("{release}" === "{{{{current_cpp_release}}}}") {{ + _modifyCurrentReleaseLinks(); + }} + }}); +</script> """ def gen_release_page(release, release_dir): @@ -139,7 +144,10 @@ def gen_release_page(release, release_di jql = "project = QPID AND fixVersion = 'qpid-cpp-{}' ORDER BY priority DESC".format(release) issues_url = "https://issues.apache.org/jira/issues/?jql={}".format(urllib.quote_plus(jql)) - output = template.format(**locals()) + vars = locals() + vars["documentation"] = documentation + + output = template.format(**vars) output = output.strip() write(output_path, output) @@ -180,20 +188,7 @@ This content was generated at {time} on ## Documentation -<div class="two-column" markdown="1"> - - - [Installing Qpid C++](http://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/INSTALL) - - [C++ broker book](cpp-broker/book/index.html) ([PDF](cpp-broker/cpp-broker-book.pdf)) - - [.NET API reference](messaging-api/dotnet/api/index.html) - - [.NET examples](messaging-api/dotnet/examples/index.html) - - [C++ API reference](messaging-api/cpp/api/index.html) - - [C++ examples](messaging-api/cpp/examples/index.html) - - [Python API reference](messaging-api/python/api/index.html) - - [Python examples](messaging-api/python/examples/index.html) - - [Ruby API reference](messaging-api/ruby/api/index.html) - - [Ruby examples](messaging-api/ruby/examples/index.html) - -</div> +{documentation} ## More information @@ -209,7 +204,10 @@ def gen_trunk_release_page(release_dir): date = now.strftime("%d %B %Y") time = now.strftime("%H:%M %Z") - output = trunk_template.format(**locals()) + vars = locals() + vars["documentation"] = documentation + + output = trunk_template.format(**vars) output = output.strip() write(output_path, output) Modified: qpid/site/scripts/gen-dispatch-release-page URL: http://svn.apache.org/viewvc/qpid/site/scripts/gen-dispatch-release-page?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/scripts/gen-dispatch-release-page (original) +++ qpid/site/scripts/gen-dispatch-release-page Tue Sep 29 20:27:56 2015 @@ -64,14 +64,6 @@ template = \ ;; under the License. ;; -<script type="text/javascript"> - _deferredFunctions.push(function() {{ - if ("{release}" === "{{{{current_dispatch_release}}}}") {{ - _modifyCurrentReleaseLinks(); - }} - }}); -</script> - # Qpid Dispatch {release} Dispatch is a lightweight AMQP message router library. More about @@ -100,6 +92,14 @@ the files you download. - [All release artefacts](http://archive.apache.org/dist/qpid/dispatch/{release}) - [Resolved issues in JIRA]({issues_url}) - [Source repository tag](https://git-wip-us.apache.org/repos/asf/qpid-dispatch.git/tree/refs/tags/{release}) + +<script type="text/javascript"> + _deferredFunctions.push(function() {{ + if ("{release}" === "{{{{current_dispatch_release}}}}") {{ + _modifyCurrentReleaseLinks(); + }} + }}); +</script> """ def gen_release_page(release, release_dir): @@ -129,7 +129,10 @@ def gen_release_page(release, release_di jql = "project = DISPATCH AND fixVersion = '{}' ORDER BY priority DESC".format(release) issues_url = "https://issues.apache.org/jira/issues/?jql={}".format(urllib.quote_plus(jql)) - output = template.format(documentation=documentation, **locals()) + vars = locals() + vars["documentation"] = documentation.format(release=release) + + output = template.format(**vars) output = output.strip() write(output_path, output) @@ -154,7 +157,7 @@ master_template = """ ;; under the License. ;; -# Qpid Dispatch Development +# Qpid Dispatch Master <div class="feature" markdown="1"> @@ -174,7 +177,7 @@ This content was generated at {time} on ## More information -- [Source repository](https://git-wip-us.apache.org/repos/asf/qpid-dispatch.git) + - [Source repository](https://git-wip-us.apache.org/repos/asf/qpid-dispatch.git) """ def gen_master_release_page(release_dir): @@ -186,7 +189,10 @@ def gen_master_release_page(release_dir) date = now.strftime("%d %B %Y") time = now.strftime("%H:%M %Z") - output = master_template.format(documentation=documentation, **locals()) + vars = locals() + vars["documentation"] = documentation.format(release="master") + + output = master_template.format(**vars) output = output.strip() write(output_path, output) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
