emqx/scripts/test/emqx-smoke-test.sh

44 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
[ $# -ne 2 ] && { echo "Usage: $0 ip port"; exit 1; }
IP=$1
PORT=$2
URL="http://$IP:$PORT/status"
## Check if EMQX is responding
ATTEMPTS=10
while ! curl "$URL" >/dev/null 2>&1; do
if [ $ATTEMPTS -eq 0 ]; then
echo "emqx is not responding on $URL"
exit 1
fi
sleep 5
ATTEMPTS=$((ATTEMPTS-1))
done
## Check if the API docs are available
API_DOCS_URL="http://$IP:$PORT/api-docs/index.html"
API_DOCS_STATUS="$(curl -s -o /dev/null -w "%{http_code}" "$API_DOCS_URL")"
if [ "$API_DOCS_STATUS" != "200" ]; then
echo "emqx is not responding on $API_DOCS_URL"
exit 1
fi
## Check if the swagger.json contains hidden fields
## fail if it does
SWAGGER_JSON_URL="http://$IP:$PORT/api-docs/swagger.json"
## assert swagger.json is valid json
JSON="$(curl -s "$SWAGGER_JSON_URL")"
echo "$JSON" | jq . >/dev/null
if [ "${EMQX_SMOKE_TEST_CHECK_HIDDEN_FIELDS:-yes}" = 'yes' ]; then
## assert swagger.json does not contain trie_compaction (which is a hidden field)
if echo "$JSON" | grep -q trie_compaction; then
echo "swagger.json contains hidden fields"
exit 1
fi
fi