diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-07-24 17:25:25 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2023-07-25 11:04:00 +0200 |
commit | 46046066c6004c6cca363c1c11e13de650e9e101 (patch) | |
tree | 2e053876f64b76ee1c486c5feb5d5252da2be997 /test | |
parent | 90ddcb1722c07aba3b92652fb407c4cae3c0cfa6 (diff) | |
download | justbuild-46046066c6004c6cca363c1c11e13de650e9e101.tar.gz |
test_server: avoid races
... by creating a file only once the server is ready and waiting
for that file instead of waiting a fixed period of time.
Diffstat (limited to 'test')
-rw-r--r-- | test/end-to-end/just-mr/just-mr.test.sh | 8 | ||||
-rw-r--r-- | test/other_tools/utils/curl_usage_test.sh | 8 | ||||
-rw-r--r-- | test/utils/run_test_server.py | 3 |
3 files changed, 14 insertions, 5 deletions
diff --git a/test/end-to-end/just-mr/just-mr.test.sh b/test/end-to-end/just-mr/just-mr.test.sh index 3532f8a7..cdd0ace4 100644 --- a/test/end-to-end/just-mr/just-mr.test.sh +++ b/test/end-to-end/just-mr/just-mr.test.sh @@ -88,10 +88,14 @@ readonly GIT_TREE_ID="$(cd "${GIT_ROOT}" && git ls-tree "${GIT_REPO_COMMIT}" foo echo "Publish remote repos to HTTP server" # start Python server as remote repos location port_file="$(mktemp -t port_XXXXXX -p "${TEST_TMPDIR}")" -python3 -u "${ROOT}/utils/run_test_server.py" >${port_file} & server_pid=$! -sleep 1s # give some time to set up properly +python3 -u "${ROOT}/utils/run_test_server.py" "${port_file}" & server_pid=$! # set up cleanup of http server trap "server_cleanup ${server_pid}" INT TERM EXIT +# wait for the server to be available +while [ -z "$(cat "${port_file}")" ] +do + sleep 1s +done # get port number as variable port_num="$(cat ${port_file})" diff --git a/test/other_tools/utils/curl_usage_test.sh b/test/other_tools/utils/curl_usage_test.sh index 4da397de..8db9e675 100644 --- a/test/other_tools/utils/curl_usage_test.sh +++ b/test/other_tools/utils/curl_usage_test.sh @@ -39,10 +39,14 @@ echo "Publish test file as local HTTP server" # define location to store port number port_file="${ROOT}/port.txt" # start Python server as remote -python3 -u "${ROOT}/utils/run_test_server.py" >"${port_file}" & server_pid=$! -sleep 1s # give some time to set up properly +python3 -u "${ROOT}/utils/run_test_server.py" "${port_file}" & server_pid=$! # set up cleanup of http server trap "server_cleanup ${server_pid}" INT TERM EXIT +# wait for the server to be available +while [ -z "$(cat "${port_file}")" ] +do + sleep 1s +done cd "${ROOT}" diff --git a/test/utils/run_test_server.py b/test/utils/run_test_server.py index 23bfb523..a23207fe 100644 --- a/test/utils/run_test_server.py +++ b/test/utils/run_test_server.py @@ -41,6 +41,7 @@ if __name__ == "__main__": with HTTPServer((hostname, 0), HTTPHandler) as httpd: # print port number socket_info = httpd.socket.getsockname() - print(socket_info[1]) + with open(sys.argv[1], "w") as f: + f.write("%d" % (socket_info[1],)) # run server httpd.serve_forever() |