TESTS: the web image can now handle concurrent connections
Using the python web framework [Flask](http://flask.pocoo.org/). As a side effect, headers printed out from the `/headers` end point get capitalized.
This commit is contained in:
parent
563cfedb98
commit
d282c2481b
4 changed files with 20 additions and 24 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
# Docker Image running one (or multiple) webservers listening on all given ports from WEB_PORTS environment variable
|
# Docker Image running one (or multiple) webservers listening on all given ports from WEB_PORTS environment variable
|
||||||
|
|
||||||
FROM python:3
|
FROM python:3
|
||||||
|
RUN pip install flask==0.12
|
||||||
COPY ./webserver.py /
|
COPY ./webserver.py /
|
||||||
COPY ./entrypoint.sh /
|
COPY ./entrypoint.sh /
|
||||||
WORKDIR /opt
|
WORKDIR /opt
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,26 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
import os
|
||||||
|
|
||||||
import os, sys
|
import sys
|
||||||
import http.server
|
from flask import Flask, Response, request
|
||||||
import socketserver
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Handler(http.server.SimpleHTTPRequestHandler):
|
@app.route("/")
|
||||||
def do_GET(self):
|
def root():
|
||||||
|
return Response("I'm %s\n" % os.environ['HOSTNAME'], mimetype="text/plain")
|
||||||
self.send_response(200)
|
|
||||||
self.send_header("Content-Type", "text/plain")
|
|
||||||
self.end_headers()
|
|
||||||
|
|
||||||
if self.path == "/headers":
|
|
||||||
self.wfile.write(self.headers.as_string().encode())
|
@app.route("/headers")
|
||||||
elif self.path == "/port":
|
def headers():
|
||||||
response = "answer from port %s\n" % PORT
|
return Response("".join(["%s: %s\n" % (header, value) for header, value in request.headers.items()]), mimetype="text/plain")
|
||||||
self.wfile.write(response.encode())
|
|
||||||
elif self.path == "/":
|
|
||||||
response = "I'm %s\n" % os.environ['HOSTNAME']
|
@app.route("/port")
|
||||||
self.wfile.write(response.encode())
|
def port():
|
||||||
else:
|
return Response("answer from port %s\n" % PORT, mimetype="text/plain")
|
||||||
self.wfile.write("No route for this path!\n".encode())
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
PORT = int(sys.argv[1])
|
PORT = int(sys.argv[1])
|
||||||
socketserver.TCPServer.allow_reuse_address = True
|
app.run(host="0.0.0.0", port=PORT)
|
||||||
httpd = socketserver.TCPServer(('0.0.0.0', PORT), Handler)
|
|
||||||
httpd.serve_forever()
|
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ def test_X_Forwarded_Ssl_is_overwritten(docker_compose, nginxproxy):
|
||||||
def test_X_Real_IP_is_generated(docker_compose, nginxproxy):
|
def test_X_Real_IP_is_generated(docker_compose, nginxproxy):
|
||||||
r = nginxproxy.get("http://web.nginx-proxy.tld/headers")
|
r = nginxproxy.get("http://web.nginx-proxy.tld/headers")
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
assert "X-Real-IP: " in r.text
|
assert "X-Real-IP: ".upper() in r.text.upper()
|
||||||
|
|
||||||
def test_Host_is_passed_on(docker_compose, nginxproxy):
|
def test_Host_is_passed_on(docker_compose, nginxproxy):
|
||||||
r = nginxproxy.get("http://web.nginx-proxy.tld/headers")
|
r = nginxproxy.get("http://web.nginx-proxy.tld/headers")
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ def test_X_Forwarded_Ssl_is_overwritten(docker_compose, nginxproxy):
|
||||||
def test_X_Real_IP_is_generated(docker_compose, nginxproxy):
|
def test_X_Real_IP_is_generated(docker_compose, nginxproxy):
|
||||||
r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
|
r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
assert "X-Real-IP: " in r.text
|
assert "X-Real-IP: ".upper() in r.text.upper()
|
||||||
|
|
||||||
def test_Host_is_passed_on(docker_compose, nginxproxy):
|
def test_Host_is_passed_on(docker_compose, nginxproxy):
|
||||||
r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
|
r = nginxproxy.get("https://web.nginx-proxy.tld/headers")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue