blob: cbab40355f246a6944adefce47944c8b7299e4a7 [file] [log] [blame]
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Set environment variables
E2E_TEST=""
HOST="127.0.0.1"
PORT="8030"
LOGIN_URL="/streampipes-backend/api/v2/auth/login"
SP_USERNAME="admin@streampipes.apache.org"
SP_PASSWORD="admin"
while true; do
case "$1" in
-u)
SP_USERNAME="$2"
shift 2
;;
-pw)
SP_PASSWORD="$2"
shift 2
;;
-h)
HOST="$2"
shift 2
;;
-p)
PORT="$2"
shift 2
;;
-t)
E2E_TEST="$2"
shift 2
;;
--help)
echo "Usage: $0 [-h <ip>] [-p <port>] [-u <username>] [-pw <password>] [-t <E2E_TEST>]"
exit 0
;;
"")
#skip directly
break
;;
*)
#skip directly
shift
;;
esac
done
if [ E2E_TEST == "" ]; then
echo "-t is empty"
exit 1
fi
API_KEY_URL="/streampipes-backend/api/v2/users/$SP_USERNAME/tokens"
API_KEY_USER_NAME="$SP_USERNAME"
loginRequestBody='{
"username": "'"$SP_USERNAME"'",
"password": "'"$SP_PASSWORD"'"
}'
if nc -zv localhost 8030; then
echo "Port 8030 is open and listening."
else
echo "Port 8030 is not open or not listening."
exit 1
fi
echo "start login"
max_attempts=60
attempt=1
while [ $attempt -le $max_attempts ]
do
response=$(curl -s -X POST "http://$HOST:$PORT$LOGIN_URL" \
-H "Content-Type: application/json" \
-d "$loginRequestBody")
if [ $? -eq 0 ]; then
echo "Login successful"
break
else
echo "$response"
echo "Error: Login request failed on attempt $attempt"
if [ $attempt -eq $max_attempts ]; then
echo "Max attempts reached. Exiting."
exit 0
else
echo "Retrying in 1 second..."
sleep 1
fi
fi
attempt=$((attempt+1))
done
echo "get token"
accessToken=$(echo "$response" | sed -n 's/.*"accessToken":"\([^"]*\)".*/\1/p')
if [ -z "$accessToken" ]; then
echo "Error: Failed to retrieve access token"
exit 1
fi
apiKeyRequestBody='{
"tokenName": "'"$API_KEY_USER_NAME"'"
}'
echo "install element"
chmod +x ./install-element.sh
./install-element.sh -host "$HOST" -port "$PORT" -token "$accessToken"
echo "get apikey"
# Get APIKEY
APIKEYRESP=$(curl -s -X POST "http://$HOST:$PORT$API_KEY_URL" \
-H "Content-Type: application/json" \
-H "authorization: Bearer $accessToken" \
-d "$apiKeyRequestBody")
if [ $? -ne 0 ]; then
echo "Error: API Key request failed"
exit 1
fi
APIKEY=$(echo "$APIKEYRESP" | sed 's/.*"rawToken":"\([^"]*\)".*/\1/')
if [ -z "$APIKEY" ]; then
echo "Error: Failed to retrieve API key"
exit 1
fi
echo "start e2e test"
chmod +x ./"$E2E_TEST"
./"$E2E_TEST" -h "$HOST" -p "$PORT" -u "$API_KEY_USER_NAME" -k "$APIKEY"
if [ $? -ne 0 ]; then
echo "start $E2E_TEST failed"
exit 1
fi
echo "All tests passed successfully"