Mercurial > hg
annotate tests/dumbhttp.py @ 51696:6aa74bcd4255
Try the full CI run
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Thu, 18 Jul 2024 15:48:05 +0200 |
parents | 493034cc3265 |
children | 7f0cb9ee0534 |
rev | line source |
---|---|
47500
23f5ed6dbcb1
run-tests: stop writing a `python3` symlink pointing to python2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45830
diff
changeset
|
1 #!/usr/bin/env python |
22959
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
2 |
27282
0bb8c405a7c7
tests/dumbhttp: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23136
diff
changeset
|
3 |
22959
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
4 """ |
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
5 Small and dumb HTTP server for use in tests. |
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
6 """ |
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
7 |
27282
0bb8c405a7c7
tests/dumbhttp: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23136
diff
changeset
|
8 import optparse |
31004
d05fefbb5ab3
dumbhttp: use IPv6 if HGIPV6 is set to 1
Jun Wu <quark@fb.com>
parents:
30506
diff
changeset
|
9 import os |
27282
0bb8c405a7c7
tests/dumbhttp: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23136
diff
changeset
|
10 import signal |
31004
d05fefbb5ab3
dumbhttp: use IPv6 if HGIPV6 is set to 1
Jun Wu <quark@fb.com>
parents:
30506
diff
changeset
|
11 import socket |
27282
0bb8c405a7c7
tests/dumbhttp: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23136
diff
changeset
|
12 import sys |
22959
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
13 |
27282
0bb8c405a7c7
tests/dumbhttp: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23136
diff
changeset
|
14 from mercurial import ( |
38593
e46c3b6a47b5
py3: fix dumbhttp.py to convert --daemon-postexec arguments back to bytes
Yuya Nishihara <yuya@tcha.org>
parents:
37672
diff
changeset
|
15 encoding, |
37672
8bacc09814ba
py3: make values bytes before passing into server.runservice()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34944
diff
changeset
|
16 pycompat, |
30506
d9d8d78e6bc9
server: move cmdutil.service() to new module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
29566
diff
changeset
|
17 server, |
29566
075146e85bb6
py3: conditionalize BaseHTTPServer, SimpleHTTPServer and CGIHTTPServer import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28771
diff
changeset
|
18 util, |
27282
0bb8c405a7c7
tests/dumbhttp: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23136
diff
changeset
|
19 ) |
0bb8c405a7c7
tests/dumbhttp: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23136
diff
changeset
|
20 |
29566
075146e85bb6
py3: conditionalize BaseHTTPServer, SimpleHTTPServer and CGIHTTPServer import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28771
diff
changeset
|
21 httpserver = util.httpserver |
27282
0bb8c405a7c7
tests/dumbhttp: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
23136
diff
changeset
|
22 OptionParser = optparse.OptionParser |
22959
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
23 |
31004
d05fefbb5ab3
dumbhttp: use IPv6 if HGIPV6 is set to 1
Jun Wu <quark@fb.com>
parents:
30506
diff
changeset
|
24 if os.environ.get('HGIPV6', '0') == '1': |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
25 |
31004
d05fefbb5ab3
dumbhttp: use IPv6 if HGIPV6 is set to 1
Jun Wu <quark@fb.com>
parents:
30506
diff
changeset
|
26 class simplehttpserver(httpserver.httpserver): |
d05fefbb5ab3
dumbhttp: use IPv6 if HGIPV6 is set to 1
Jun Wu <quark@fb.com>
parents:
30506
diff
changeset
|
27 address_family = socket.AF_INET6 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
28 |
31004
d05fefbb5ab3
dumbhttp: use IPv6 if HGIPV6 is set to 1
Jun Wu <quark@fb.com>
parents:
30506
diff
changeset
|
29 else: |
d05fefbb5ab3
dumbhttp: use IPv6 if HGIPV6 is set to 1
Jun Wu <quark@fb.com>
parents:
30506
diff
changeset
|
30 simplehttpserver = httpserver.httpserver |
d05fefbb5ab3
dumbhttp: use IPv6 if HGIPV6 is set to 1
Jun Wu <quark@fb.com>
parents:
30506
diff
changeset
|
31 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
32 |
34944
bf2db35a6fe7
test-static-http: flush access log per request
Yuya Nishihara <yuya@tcha.org>
parents:
34925
diff
changeset
|
33 class _httprequesthandler(httpserver.simplehttprequesthandler): |
bf2db35a6fe7
test-static-http: flush access log per request
Yuya Nishihara <yuya@tcha.org>
parents:
34925
diff
changeset
|
34 def log_message(self, format, *args): |
bf2db35a6fe7
test-static-http: flush access log per request
Yuya Nishihara <yuya@tcha.org>
parents:
34925
diff
changeset
|
35 httpserver.simplehttprequesthandler.log_message(self, format, *args) |
bf2db35a6fe7
test-static-http: flush access log per request
Yuya Nishihara <yuya@tcha.org>
parents:
34925
diff
changeset
|
36 sys.stderr.flush() |
bf2db35a6fe7
test-static-http: flush access log per request
Yuya Nishihara <yuya@tcha.org>
parents:
34925
diff
changeset
|
37 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
38 |
48946
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48875
diff
changeset
|
39 class simplehttpservice: |
23136
6eab50a34fed
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()
Yuya Nishihara <yuya@tcha.org>
parents:
22959
diff
changeset
|
40 def __init__(self, host, port): |
6eab50a34fed
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()
Yuya Nishihara <yuya@tcha.org>
parents:
22959
diff
changeset
|
41 self.address = (host, port) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
42 |
23136
6eab50a34fed
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()
Yuya Nishihara <yuya@tcha.org>
parents:
22959
diff
changeset
|
43 def init(self): |
34944
bf2db35a6fe7
test-static-http: flush access log per request
Yuya Nishihara <yuya@tcha.org>
parents:
34925
diff
changeset
|
44 self.httpd = simplehttpserver(self.address, _httprequesthandler) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
45 |
23136
6eab50a34fed
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()
Yuya Nishihara <yuya@tcha.org>
parents:
22959
diff
changeset
|
46 def run(self): |
6eab50a34fed
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()
Yuya Nishihara <yuya@tcha.org>
parents:
22959
diff
changeset
|
47 self.httpd.serve_forever() |
22959
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
48 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
49 |
22959
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
50 if __name__ == '__main__': |
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
51 parser = OptionParser() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
52 parser.add_option( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
53 '-p', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
54 '--port', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
55 dest='port', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
56 type='int', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
57 default=8000, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
58 help='TCP port to listen on', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
59 metavar='PORT', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
60 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
61 parser.add_option( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
62 '-H', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
63 '--host', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
64 dest='host', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
65 default='localhost', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
66 help='hostname or IP to listen on', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
67 metavar='HOST', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
68 ) |
34925
8b95e420e248
test-static-http: show all files accessed over HTTP
Yuya Nishihara <yuya@tcha.org>
parents:
31004
diff
changeset
|
69 parser.add_option('--logfile', help='file name of access/error log') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
70 parser.add_option( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
71 '--pid', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
72 dest='pid', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
73 help='file name where the PID of the server is stored', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
74 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
75 parser.add_option( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
76 '-f', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
77 '--foreground', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
78 dest='foreground', |
22959
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
79 action='store_true', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
80 help='do not start the HTTP server in the background', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
81 ) |
28451
c90cfe76e024
serve: accept multiple values for --daemon-postexec
Jun Wu <quark@fb.com>
parents:
28194
diff
changeset
|
82 parser.add_option('--daemon-postexec', action='append') |
22959
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
83 |
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
84 (options, args) = parser.parse_args() |
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
85 |
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
86 signal.signal(signal.SIGTERM, lambda x, y: sys.exit(0)) |
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
87 |
34925
8b95e420e248
test-static-http: show all files accessed over HTTP
Yuya Nishihara <yuya@tcha.org>
parents:
31004
diff
changeset
|
88 if options.foreground and options.logfile: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
89 parser.error( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
90 "options --logfile and --foreground are mutually " "exclusive" |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
91 ) |
22959
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
92 if options.foreground and options.pid: |
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
93 parser.error("options --pid and --foreground are mutually exclusive") |
10116463b0b1
tests: pull common http server setup out of individual tests
Mike Hommey <mh@glandium.org>
parents:
diff
changeset
|
94 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
95 opts = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
96 b'pid_file': options.pid, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
97 b'daemon': not options.foreground, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
98 b'daemon_postexec': pycompat.rapply( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
99 encoding.strtolocal, options.daemon_postexec |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
100 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
101 } |
23136
6eab50a34fed
tests: have dumbhttp.py use cmdutil.service() to wait for child to listen()
Yuya Nishihara <yuya@tcha.org>
parents:
22959
diff
changeset
|
102 service = simplehttpservice(options.host, options.port) |
37672
8bacc09814ba
py3: make values bytes before passing into server.runservice()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34944
diff
changeset
|
103 runargs = [sys.executable, __file__] + sys.argv[1:] |
8bacc09814ba
py3: make values bytes before passing into server.runservice()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34944
diff
changeset
|
104 runargs = [pycompat.fsencode(a) for a in runargs] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
105 server.runservice( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
106 opts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
107 initfn=service.init, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
108 runfn=service.run, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
109 logfile=options.logfile, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
110 runargs=runargs, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
38593
diff
changeset
|
111 ) |