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">'/tmp/test_friendpaste_load.txt'</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s">'w'</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">"Test"</span><span class="p">,</span> <span class="n">content</span><span class="o">=</span><span class="s">"A test comment"</span><span class="p">,</span> <span class="n">language</span><span class="o">=</span><span class="s">"text"</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">"POST"</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">" - "</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">"test"</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">'n'</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">'127.0.0.1'</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">"http://</span><span class="si">%s</span><span class="s">:8080"</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>
