kopia lustrzana https://github.com/simonw/datasette
65 wiersze
1.6 KiB
Bash
Executable File
65 wiersze
1.6 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Generate certificates
|
||
python -m trustme
|
||
# This creates server.pem, server.key, client.pem
|
||
|
||
cleanup () {
|
||
rm server.pem server.key client.pem
|
||
}
|
||
|
||
# Start the server in the background
|
||
datasette --memory \
|
||
--ssl-keyfile=server.key \
|
||
--ssl-certfile=server.pem \
|
||
-p 8152 &
|
||
|
||
# Store the background process ID in a variable
|
||
server_pid=$!
|
||
|
||
test_url='https://localhost:8152/_memory.json'
|
||
|
||
# Wait for the server to start
|
||
|
||
# h/t https://github.com/pouchdb/pouchdb/blob/25db22fb0ff025b8d2c698da30c6c409066baa0c/bin/run-test.sh#L102-L113
|
||
waiting=0
|
||
until $(curl --output /dev/null --silent --insecure --head --fail --max-time 2 $test_url); do
|
||
if [ $waiting -eq 4 ]; then
|
||
echo "$test_url can not be reached, server failed to start"
|
||
cleanup
|
||
exit 1
|
||
fi
|
||
let waiting=waiting+1
|
||
sleep 1
|
||
done
|
||
|
||
# Make a test request using curl
|
||
curl -f --cacert client.pem $test_url
|
||
|
||
# Save curl's exit code (-f option causes it to return one on HTTP errors)
|
||
curl_exit_code=$?
|
||
|
||
# Shut down the server
|
||
kill $server_pid
|
||
waiting=0
|
||
# show all pids
|
||
# | find just the $server_pid
|
||
# | | don’t match on the previous grep
|
||
# | | | we don’t need the output
|
||
# | | | |
|
||
until ( ! ps ax | grep $server_pid | grep -v grep > /dev/null ); do
|
||
if [ $waiting -eq 4 ]; then
|
||
echo "$server_pid does still exist, server failed to stop"
|
||
cleanup
|
||
exit 1
|
||
fi
|
||
let waiting=waiting+1
|
||
sleep 1
|
||
done
|
||
|
||
# Clean up the certificates
|
||
cleanup
|
||
|
||
echo $curl_exit_code
|
||
exit $curl_exit_code
|