From 40a9a65cae635ce77a4f1b7b0e718e15e4496a2b Mon Sep 17 00:00:00 2001 From: zhaoye Date: Thu, 15 Sep 2022 19:35:38 +0800 Subject: [PATCH] Dockerfile: install mitmproxy into a special pythonpath; Fix e2e tests --- Dockerfile | 6 +++++- e2e_tests/conftest.py | 1 + lyrebird/mock/mock_server.py | 9 +++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 538efb234..e4567bc72 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,7 @@ RUN if [[ -n "$USE_MIRROR" ]] ; then sed -i 's/dl-cdn.alpinelinux.org/mirrors.us && apk update \ && apk add --no-cache build-base jpeg-dev zlib-dev libffi-dev openssl-dev \ && if [[ -n "$USE_MIRROR" ]] ; then pip install --no-cache-dir . facebook-wda==0.8.1 jsonschema -i https://pypi.douban.com/simple ; else pip install --no-cache-dir . facebook-wda==0.8.1 jsonschema ; fi \ + && pip install mitmproxy -t /usr/local/mitmenv \ && rm -rf /usr/src \ && apk del --purge build-base jpeg-dev zlib-dev libffi-dev openssl-dev @@ -23,9 +24,12 @@ ARG USE_MIRROR ENV PYTHONUNBUFFERED 1 RUN if [[ -n "$USE_MIRROR" ]] ; then sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories ; fi \ && apk update \ - && apk add --no-cache jpeg zlib libffi openssl curl libstdc++ tzdata + && apk add --no-cache jpeg zlib libffi openssl curl libstdc++ tzdata \ + && echo -e "#!/bin/sh\nexport PYTHONPATH=/usr/local/mitmenv\npython -c 'from mitmproxy.tools.main import mitmdump;mitmdump()' \$@" > /usr/local/bin/mitmdump \ + && chmod a+x /usr/local/bin/mitmdump COPY --from=pybuilder /usr/local/lib/python3.8/site-packages /usr/local/lib/python3.8/site-packages COPY --from=pybuilder /usr/local/bin /usr/local/bin +COPY --from=pybuilder /usr/local/mitmenv /usr/local/mitmenv EXPOSE 9090 4272 CMD [ "lyrebird" ] diff --git a/e2e_tests/conftest.py b/e2e_tests/conftest.py index 8cbab5ab6..9f2bed0ef 100644 --- a/e2e_tests/conftest.py +++ b/e2e_tests/conftest.py @@ -86,6 +86,7 @@ def _find_free_port(self): return s.getsockname()[1] def start(self, checker_path=None): + cmdline = f'python -m lyrebird -b -v --no-mitm --mock {self.port} --extra-mock {self.extra_mock_port}' if checker_path: cmdline = cmdline + f' --script {checker_path}' diff --git a/lyrebird/mock/mock_server.py b/lyrebird/mock/mock_server.py index 184247298..a704c619b 100644 --- a/lyrebird/mock/mock_server.py +++ b/lyrebird/mock/mock_server.py @@ -8,6 +8,7 @@ from lyrebird.base_server import ThreadServer from lyrebird import application from lyrebird import log +import sys import traceback """ @@ -89,8 +90,12 @@ def on_app_error(error): def run(self): server_ip = application.config.get('ip') _logger.log(60, f'Core start on http://{server_ip}:{self.port}') - self.socket_io.run(self.app, host='0.0.0.0', port=self.port, debug=self.debug, - use_reloader=False, allow_unsafe_werkzeug=True) + if not sys.stdin or not sys.stdin.isatty(): + # For e2e testing start lyrebird in subprocess + self.socket_io.run(self.app, host='0.0.0.0', port=self.port, debug=self.debug, + use_reloader=False, allow_unsafe_werkzeug=True) + else: + self.socket_io.run(self.app, host='0.0.0.0', port=self.port, debug=self.debug, use_reloader=False) def stop(self): """