4 from os import curdir, sep
5 from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
6 from optparse import OptionParser
9 USAGE = "Usage: %prog [options] "
10 parser = OptionParser(usage=USAGE)
11 parser.add_option("-p", "--port", dest="port",
12 help="http server port", default="8080")
13 parser.add_option("-t", "--test", dest="test_name",
14 help="test name", metavar="NAME")
23 class MyHandler(BaseHTTPRequestHandler):
25 def stop(self, msg, retval):
37 length = self.headers.getheader('content-length')
40 except (TypeError, ValueError):
43 data = self.rfile.read(nbytes)
44 while select.select([self.rfile._sock], [], [], 0)[0]:
45 if not self.rfile._sock.recv(1):
48 if self.path.endswith("FAIL"):
49 self.stop("FAILED - %s" % data, 1)
52 if self.path.endswith("DONE"):
53 self.stop("OK - %s" % data, 0)
58 if self.path.endswith("FAIL"):
59 self.stop("FAILED", 1)
62 if self.path.endswith("DONE"):
66 f = open(curdir + sep + self.path)
67 self.send_response(200)
69 self.wfile.write(f.read())
73 self.send_error(404,'File Not Found: %s' % self.path)
74 def log_message(self, *args):
76 def log_error(self, *args):
82 (options, args) = parser.parse_args()
83 if not options.test_name:
84 parser.error("Define test name")
88 server = HTTPServer(('', int(options.port)), MyHandler)
90 server.handle_request()
91 sys.stderr.write("%s: %s\n" % (options.test_name, message))
92 sys.exit(return_value)
93 except KeyboardInterrupt:
96 if __name__ == '__main__':