39 lines
1.2 KiB
Bash
Executable File
39 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
service_name="${UCE_TEST_SERVICE:-uce.service}"
|
|
socket_name="${UCE_TEST_SOCKET_SERVICE:-uce.socket}"
|
|
http_host="${UCE_TEST_HTTP_HOST:-uce.openfu.com}"
|
|
http_path="${UCE_TEST_HTTP_PATH:-/info/}"
|
|
requests="${UCE_TEST_RESTART_REQUESTS:-100}"
|
|
statuses=$(mktemp)
|
|
trap 'rm -f "$statuses"' EXIT
|
|
|
|
systemctl is-active --quiet "$socket_name"
|
|
systemctl is-active --quiet "$service_name"
|
|
socket_path=$(systemctl show -p Listen --value "$socket_name" | sed -n 's/ \+(Stream)$//p')
|
|
[[ -S "$socket_path" ]]
|
|
inode_before=$(stat -c %i "$socket_path")
|
|
|
|
(
|
|
for ((i = 0; i < requests; i++)); do
|
|
curl -sS --max-time 15 -o /dev/null -w '%{http_code}\n' \
|
|
-H "Host: $http_host" "http://127.0.0.1${http_path}"
|
|
done
|
|
) >"$statuses" &
|
|
load_pid=$!
|
|
sleep 0.05
|
|
systemctl restart "$service_name"
|
|
wait "$load_pid"
|
|
|
|
inode_after=$(stat -c %i "$socket_path")
|
|
[[ "$inode_after" = "$inode_before" ]]
|
|
[[ $(wc -l <"$statuses") -eq "$requests" ]]
|
|
if [[ $(grep -c '^200$' "$statuses") -ne "$requests" ]]; then
|
|
sort "$statuses" | uniq -c >&2
|
|
exit 1
|
|
fi
|
|
systemctl is-active --quiet "$socket_name"
|
|
systemctl is-active --quiet "$service_name"
|
|
echo "socket activation restart passed across $requests HTTP requests"
|