Sans titre |  2007-12-13 17:52:10 | Langage : python     Texte  |  Copier | Retour à la liste

Lien vers ce copier-coller : http://www.archlinuxfr.org//paste/882/

<table class="sourcetable"><tr><td class="linenos"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78</pre></td><td class="code"><div class="source"><pre><span class="k">import</span> <span class="nn">friendpaste</span> <span class="k">from</span> <span class="nn">friendpaste.core.indexer</span> <span class="k">import</span> <span class="n">IndexWorker</span> <span class="k">import</span> <span class="nn">unittest</span> <span class="k">from</span> <span class="nn">httplib2</span> <span class="k">import</span> <span class="n">Http</span> <span class="k">from</span> <span class="nn">urllib</span> <span class="k">import</span> <span class="n">urlencode</span> <span class="k">import</span> <span class="nn">threading</span> <span class="k">import</span> <span class="nn">socket</span> <span class="k">import</span> <span class="nn">Queue</span> <span class="k">import</span> <span class="nn">web</span> <span class="k">from</span> <span class="nn">BaseHTTPServer</span> <span class="k">import</span> <span class="n">BaseHTTPRequestHandler</span><span class="p">,</span> <span class="n">HTTPServer</span> <span class="k">from</span> <span class="nn">SocketServer</span> <span class="k">import</span> <span class="n">ThreadingMixIn</span> <span class="k">class</span> <span class="nc">IndexWorkerTest</span><span class="p">(</span><span class="n">IndexWorker</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">queue</span><span class="p">):</span> <span class="nb">super</span><span class="p">(</span><span class="n">IndexWorkerTest</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">queue</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s">&#39;/tmp/test_friendpaste_load.txt&#39;</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s">&#39;w&#39;</span><span class="p">)</span> <span class="k">def</span> <span class="nf">stop</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">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="n">q</span> <span class="o">=</span> <span class="n">Queue</span><span class="o">.</span><span class="n">Queue</span><span class="p">()</span> <span class="n">idx</span> <span class="o">=</span> <span class="n">IndexWorkerTest</span><span class="p">(</span><span class="n">q</span><span class="p">)</span> <span class="n">idx</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> <span class="k">class</span> <span class="nc">PasteThread</span><span class="p">(</span><span class="n">threading</span><span class="o">.</span><span class="n">Thread</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">maxiter</span><span class="p">):</span> <span class="nb">super</span><span class="p">(</span><span class="n">PasteThread</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">max</span> <span class="o">=</span> <span class="n">maxiter</span> <span class="bp">self</span><span class="o">.</span><span class="n">h</span> <span class="o">=</span> <span class="n">Http</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="bp">self</span><span class="o">.</span><span class="n">setDaemon</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="n">data</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&quot;Test&quot;</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s">&quot;A test comment&quot;</span><span class="p">,</span> <span class="n">language</span><span class="o">=</span><span class="s">&quot;text&quot;</span><span class="p">)</span> <span class="k">print</span> <span class="bp">self</span><span class="o">.</span><span class="n">max</span> <span class="n">i</span><span class="o">=</span><span class="mf">0</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">max</span><span class="p">):</span> <span class="n">resp</span><span class="p">,</span> <span class="n">content</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">h</span><span class="o">.</span><span class="n">request</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="s">&quot;POST&quot;</span><span class="p">,</span> <span class="n">urlencode</span><span class="p">(</span><span class="n">data</span><span class="p">))</span> <span class="c">#self.q.put(self.callable(resp))</span> <span class="k">print</span> <span class="n">i</span><span class="p">,</span> <span class="s">&quot; - &quot;</span><span class="p">,</span> <span class="k">class</span> <span class="nc">LoadHTTPTestHandler</span><span class="p">(</span><span class="n">BaseHTTPRequestHandler</span><span class="p">):</span> <span class="k">def</span> <span class="nf">do_GET</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="n">q</span><span class="o">.</span><span class="n">put</span><span class="p">(</span><span class="s">&quot;test&quot;</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_response</span><span class="p">(</span><span class="mf">200</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">end_headers</span><span class="p">()</span> <span class="n">message</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">currentThread</span><span class="p">()</span><span class="o">.</span><span class="n">getName</span><span class="p">()</span> <span class="bp">self</span><span class="o">.</span><span class="n">wfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">wfile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s">&#39;n&#39;</span><span class="p">)</span> <span class="n">do_HEAD</span> <span class="o">=</span> <span class="n">do_POST</span> <span class="o">=</span> <span class="n">do_GET</span> <span class="k">class</span> <span class="nc">ThreadedHTTPServer</span><span class="p">(</span><span class="n">ThreadingMixIn</span><span class="p">,</span> <span class="n">HTTPServer</span><span class="p">):</span> <span class="k">pass</span> <span class="k">class</span> <span class="nc">loadTest</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">testPost</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="n">host</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">getfqdn</span><span class="p">(</span><span class="s">&#39;127.0.0.1&#39;</span><span class="p">)</span> <span class="n">server</span> <span class="o">=</span> <span class="n">ThreadedHTTPServer</span><span class="p">((</span><span class="n">host</span><span class="p">,</span> <span class="mf">8080</span><span class="p">),</span> <span class="n">LoadHTTPTestHandler</span><span class="p">)</span> <span class="n">server_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">server</span><span class="o">.</span><span class="n">serve_forever</span><span class="p">)</span> <span class="n">server_thread</span><span class="o">.</span><span class="n">setDaemon</span><span class="p">(</span><span class="mf">1</span><span class="p">)</span> <span class="n">server_thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="mf">100</span><span class="p">):</span> <span class="n">t</span> <span class="o">=</span> <span class="n">PasteThread</span><span class="p">(</span><span class="s">&quot;http://</span><span class="si">%s</span><span class="s">:8080&quot;</span> <span class="o">%</span> <span class="n">host</span><span class="p">,</span> <span class="mf">100</span><span class="p">)</span> </pre></div> </td></tr></table>