summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2023-07-24 17:25:25 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2023-07-25 11:04:00 +0200
commit46046066c6004c6cca363c1c11e13de650e9e101 (patch)
tree2e053876f64b76ee1c486c5feb5d5252da2be997 /test
parent90ddcb1722c07aba3b92652fb407c4cae3c0cfa6 (diff)
downloadjustbuild-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.sh8
-rw-r--r--test/other_tools/utils/curl_usage_test.sh8
-rw-r--r--test/utils/run_test_server.py3
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()