import friendpaste from friendpaste.core.indexer import IndexWorker import unittest from httplib2 import Http from urllib import urlencode import threading import socket import Queue import web from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer from SocketServer import ThreadingMixIn class IndexWorkerTest(IndexWorker): def __init__(self, queue): super(IndexWorkerTest, self).__init__(queue) self.f = open('/tmp/test_friendpaste_load.txt', mode='w') def stop(self): self.f.close() q = Queue.Queue() idx = IndexWorkerTest(q) idx.start() class PasteThread(threading.Thread): def __init__(self, url, maxiter): super(PasteThread, self).__init__() self.max = maxiter self.h = Http() self.url = url self.setDaemon(True) self.start() def run(self): data = dict(title="Test", content="A test comment", language="text") print self.max i=0 for i in xrange(self.max): resp, content = self.h.request(self.url, "POST", urlencode(data)) #self.q.put(self.callable(resp)) print i, " - ", class LoadHTTPTestHandler(BaseHTTPRequestHandler): def do_GET(self): q.put("test") self.send_response(200) self.end_headers() message = threading.currentThread().getName() self.wfile.write(message) self.wfile.write('n') do_HEAD = do_POST = do_GET class ThreadedHTTPServer(ThreadingMixIn, HTTPServer): pass class loadTest(unittest.TestCase): def testPost(self): host = socket.getfqdn('127.0.0.1') server = ThreadedHTTPServer((host, 8080), LoadHTTPTestHandler) server_thread = threading.Thread(target=server.serve_forever) server_thread.setDaemon(1) server_thread.start() for j in xrange(100): t = PasteThread("http://%s:8080" % host, 100)