Bug 1892041 - Part 3: Update test exclusions. r=spidermonkey-reviewers,dminor
[gecko.git] / testing / awsy / awsy / webservers.py
blobca278db706a1415e6ef22fac37449b183ccbfcfd
1 #!/usr/bin/env python
3 # This Source Code Form is subject to the terms of the Mozilla Public
4 # License, v. 2.0. If a copy of the MPL was not distributed with this
5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 # mozhttpd web server.
10 import argparse
11 import os
12 import socket
14 import mozhttpd
16 # directory of this file
17 here = os.path.dirname(os.path.realpath(__file__))
20 class WebServers(object):
21 def __init__(self, host, port, docroot, count):
22 self.host = host
23 self.port = port
24 self.docroot = docroot
25 self.count = count
26 self.servers = []
28 def start(self):
29 self.stop()
30 self.servers = []
31 port = self.port
32 num_errors = 0
33 while len(self.servers) < self.count:
34 self.servers.append(
35 mozhttpd.MozHttpd(host=self.host, port=port, docroot=self.docroot)
37 try:
38 self.servers[-1].start()
39 except socket.error as error:
40 if isinstance(error, socket.error):
41 if error.errno == 98:
42 print("port {} is in use.".format(port))
43 else:
44 print("port {} error {}".format(port, error))
45 elif isinstance(error, str):
46 print("port {} error {}".format(port, error))
47 self.servers.pop()
48 num_errors += 1
49 except Exception as error:
50 print("port {} error {}".format(port, error))
51 self.servers.pop()
52 num_errors += 1
54 if num_errors > 15:
55 raise Exception("Too many errors in webservers.py")
56 port += 1
58 def stop(self):
59 while len(self.servers) > 0:
60 server = self.servers.pop()
61 server.stop()
64 def main():
65 parser = argparse.ArgumentParser(
66 description="Start mozhttpd servers for use by areweslimyet."
69 parser.add_argument(
70 "--port",
71 type=int,
72 default=8001,
73 help="Starting port. Defaults to 8001. Web servers will be "
74 "created for each port from the starting port to starting port "
75 "+ count - 1.",
77 parser.add_argument(
78 "--count",
79 type=int,
80 default=100,
81 help="Number of web servers to start. Defaults to 100.",
83 parser.add_argument(
84 "--host",
85 type=str,
86 default="localhost",
87 help="Name of webserver host. Defaults to localhost.",
90 args = parser.parse_args()
91 web_servers = WebServers(args.host, args.port, "%s/html" % here, args.count)
92 web_servers.start()
95 if __name__ == "__main__":
96 main()