Test framework improvement (#1128)
This commit is contained in:
committed by
Ta-Ching Chen
parent
1e8dfa38da
commit
c3177f9ebd
@@ -7,49 +7,63 @@
|
||||
|
||||
set -euo pipefail
|
||||
set +x
|
||||
source $(dirname $0)/../../utils.sh
|
||||
|
||||
ROOT=$(dirname $0)/../..
|
||||
TEST_ID=$(generate_test_id)
|
||||
echo "TEST_ID = $TEST_ID"
|
||||
|
||||
cleanup() {
|
||||
log "Cleaning up..."
|
||||
clean_resource_by_id $TEST_ID
|
||||
}
|
||||
|
||||
if [ -z "${TEST_NOCLEANUP:-}" ]; then
|
||||
trap cleanup EXIT
|
||||
else
|
||||
log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards."
|
||||
fi
|
||||
|
||||
ROOT=$(dirname $0)/../../..
|
||||
DIR=$(dirname $0)
|
||||
|
||||
echo "Pre-test cleanup"
|
||||
fission env delete --name python || true
|
||||
env=python-$TEST_ID
|
||||
fn=greetings-$TEST_ID
|
||||
recName=rec-$TEST_ID
|
||||
|
||||
echo "Creating python env"
|
||||
fission env create --name python --image fission/python-env
|
||||
# trap "fission env delete --name python" EXIT
|
||||
fission env create --name $env --image $PYTHON_RUNTIME_IMAGE
|
||||
|
||||
echo "Creating function"
|
||||
fn=greetings-$(date +%s)
|
||||
fission fn create --name $fn --env python --code $DIR/greetings.py --method GET
|
||||
# trap "fission function delete --name $fn" EXIT
|
||||
fission fn create --name $fn --env $env --code $DIR/greetings.py --method GET
|
||||
|
||||
echo "Creating http trigger"
|
||||
generated=$(fission route create --function $fn --method POST --url greetings | awk '{print $2}'| tr -d "'")
|
||||
generated=$(fission route create --function $fn --method POST --url /$fn | awk '{print $2}'| tr -d "'")
|
||||
|
||||
# Wait until trigger is created
|
||||
sleep 5
|
||||
|
||||
echo "Creating recorder"
|
||||
recName="gacrux"
|
||||
fission recorder create --name $recName --function $fn
|
||||
fission recorder get --name $recName
|
||||
# trap "fission recorder delete --name $recName" EXIT
|
||||
|
||||
# Wait until recorder is created
|
||||
sleep 5
|
||||
|
||||
echo "Issuing cURL request:"
|
||||
resp=$(curl -X POST "http://$FISSION_ROUTER/greetings" -d "{\"title\":\"Madam\",\"name\":\"Thanh\",\"item\":\"coat\"}")
|
||||
resp=$(curl -X POST "http://$FISSION_ROUTER/$fn" -d "{\"title\":\"Madam\",\"name\":\"Thanh\",\"item\":\"coat\"}")
|
||||
expectedR="Greetings, Madam Thanh. May I take your coat?"
|
||||
recordedStatus="$(fission records view --from 15s --to 0s -v | awk 'FNR == 2 {print $4$5}')"
|
||||
expectedS="200OK"
|
||||
|
||||
trap "fission recorder delete --name $recName && fission ht delete --name $generated && fission function delete --name $fn && fission env delete --name python" EXIT
|
||||
set +o pipefail
|
||||
recordedStatus="$(fission records view --from 15s --to 0s -v | grep $fn | awk '{print $4$5}')"
|
||||
set -o pipefail
|
||||
expectedS="200OK"
|
||||
|
||||
if [ "$resp" != "$expectedR" ] || [ "$recordedStatus" != "$expectedS" ]; then
|
||||
echo "Response is not equal to expected response."
|
||||
log "expected: status = '$expectedS' resp = '$expectedR'"
|
||||
log "result: status = '$recordedStatus' resp = '$resp'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Passed."
|
||||
exit 0
|
||||
exit 0
|
||||
|
||||
@@ -9,87 +9,109 @@
|
||||
|
||||
set -euo pipefail
|
||||
set +x
|
||||
source $(dirname $0)/../../utils.sh
|
||||
|
||||
ROOT=$(dirname $0)/../..
|
||||
TEST_ID=$(generate_test_id)
|
||||
echo "TEST_ID = $TEST_ID"
|
||||
|
||||
cleanup() {
|
||||
log "Cleaning up..."
|
||||
clean_resource_by_id $TEST_ID
|
||||
}
|
||||
|
||||
if [ -z "${TEST_NOCLEANUP:-}" ]; then
|
||||
trap cleanup EXIT
|
||||
else
|
||||
log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards."
|
||||
fi
|
||||
|
||||
ROOT=$(dirname $0)/../../..
|
||||
DIR=$(dirname $0)
|
||||
expectedR="We'll meet at 9 on Tuesday."
|
||||
|
||||
echo "Pre-test cleanup"
|
||||
fission env delete --name python || true
|
||||
env=python-$TEST_ID
|
||||
fn=rv-$TEST_ID
|
||||
recName1=rec1-$TEST_ID
|
||||
recName2=rec2-$TEST_ID
|
||||
|
||||
echo "Creating python env"
|
||||
fission env create --name python --image fission/python-env
|
||||
fission env create --name $env --image $PYTHON_RUNTIME_IMAGE
|
||||
|
||||
echo "Creating function"
|
||||
fn=rv-$(date +%s)
|
||||
fission fn create --name $fn --env python --code $DIR/rendezvous.py --method GET
|
||||
fission fn create --name $fn --env $env --code $DIR/rendezvous.py --method GET
|
||||
|
||||
echo "Creating trigger A"
|
||||
generatedA=$(fission route create --function $fn --method GET --url rvA | awk '{print $2}'| tr -d "'")
|
||||
triggerA=$(fission route create --function $fn --method GET --url /$fn-A | awk '{print $2}'| tr -d "'")
|
||||
log "triggerA = $triggerA"
|
||||
|
||||
echo "Creating trigger B"
|
||||
generatedB=$(fission route create --function $fn --method GET --url rvB | awk '{print $2}'| tr -d "'")
|
||||
triggerB=$(fission route create --function $fn --method GET --url /$fn-B | awk '{print $2}'| tr -d "'")
|
||||
log "triggerB = $triggerB"
|
||||
|
||||
# Wait until triggers are created
|
||||
sleep 5
|
||||
|
||||
echo "Creating recorder by function"
|
||||
recName="regulus"
|
||||
fission recorder create --name $recName --function $fn
|
||||
fission recorder get --name $recName
|
||||
fission recorder create --name $recName1 --function $fn
|
||||
fission recorder get --name $recName1
|
||||
|
||||
# Wait until recorder is created
|
||||
sleep 5
|
||||
|
||||
echo "Issuing cURL request to urlA:"
|
||||
respA=$(curl -X GET "http://$FISSION_ROUTER/rvA?time=9&date=Tuesday")
|
||||
recordedStatusA="$(fission records view --from 5s --to 0s -v | awk 'FNR == 2 {print $4$5}')"
|
||||
respA=$(curl -X GET "http://$FISSION_ROUTER/$fn-A?time=9&date=Tuesday")
|
||||
recordedStatusA="$(fission records view --from 5s --to 0s -v | grep $triggerA | awk '{print $4$5}')"
|
||||
expectedSA="200OK"
|
||||
|
||||
# Separate records
|
||||
sleep 5
|
||||
|
||||
echo "Issuing cURL request to urlB:"
|
||||
respB=$(curl -X GET "http://$FISSION_ROUTER/rvB?time=9&date=Tuesday")
|
||||
recordedStatusB="$(fission records view --from 5s --to 0s -v | awk 'FNR == 2 {print $4$5}')"
|
||||
respB=$(curl -X GET "http://$FISSION_ROUTER/$fn-B?time=9&date=Tuesday")
|
||||
recordedStatusB="$(fission records view --from 5s --to 0s -v | grep $triggerB | awk '{print $4$5}')"
|
||||
expectedSB="200OK"
|
||||
|
||||
if [ "$respA" != "$expectedR" ] || [ "$recordedStatusA" != "$expectedSA" ] || [ "$recordedStatusB" != "$expectedSB" ]; then
|
||||
echo "Failed at test case 1."
|
||||
log "expected: statusA = '$expectedSA' statusB = '$statusB' respA = '$expectedR'"
|
||||
log "result: statusA = '$recordedStatusA' statusB = '$recordedStatusB' respA = '$respA'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Test case 1) Passed."
|
||||
|
||||
# Delete first recorder
|
||||
fission recorder delete --name $recName
|
||||
fission recorder delete --name $recName1
|
||||
|
||||
sleep 5
|
||||
|
||||
echo "Creating recorder by trigger"
|
||||
recName2="regulus2"
|
||||
fission recorder create --name $recName2 --trigger $generatedB
|
||||
fission recorder create --name $recName2 --trigger $triggerB
|
||||
fission recorder get --name $recName2
|
||||
|
||||
echo "Issuing cURL request to urlA:"
|
||||
respA=$(curl -X GET "http://$FISSION_ROUTER/rvA?time=9&date=Tuesday")
|
||||
recordedStatusA="$(fission records view --from 5s --to 0s -v | awk 'FNR == 2 {print $4$5}')"
|
||||
respA=$(curl -X GET "http://$FISSION_ROUTER/$fn-A?time=9&date=Tuesday")
|
||||
# We except there is no records here -> grep will exit 1 -> this script exit 1 because 'pipefail' is set
|
||||
# Temporary disable 'pipefail' here
|
||||
set +o pipefail
|
||||
recordedStatusA="$(fission records view --from 5s --to 0s -v | grep $triggerA | awk '{print $4$5}')"
|
||||
set -o pipefail
|
||||
expectedSA=""
|
||||
|
||||
# Separate records
|
||||
sleep 5
|
||||
|
||||
echo "Issuing cURL request to urlB:"
|
||||
respB=$(curl -X GET "http://$FISSION_ROUTER/rvB?time=9&date=Tuesday")
|
||||
recordedStatusB="$(fission records view --from 5s --to 0s -v | awk 'FNR == 2 {print $4$5}')"
|
||||
respB=$(curl -X GET "http://$FISSION_ROUTER/$fn-B?time=9&date=Tuesday")
|
||||
recordedStatusB="$(fission records view --from 5s --to 0s -v | grep $triggerB | awk '{print $4$5}')"
|
||||
expectedSB="200OK"
|
||||
|
||||
if [ "$respA" != "$expectedR" ] || [ "$recordedStatusA" != "$expectedSA" ] || [ "$recordedStatusB" != "$expectedSB" ]; then
|
||||
echo "Failed at test case 2."
|
||||
log "expected: statusA = '$expectedSA' statusB = '$expectedSB' respA = '$expectedR'"
|
||||
log "result: statusA = '$recordedStatusA' statusB = '$recordedStatusB' respA = '$respA'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
trap "fission recorder delete --name $recName2 && fission ht delete --name $generatedA && fission ht delete --name $generatedB && fission fn delete --name $fn && fission env delete --name python" EXIT
|
||||
|
||||
echo "All passed."
|
||||
exit 0
|
||||
exit 0
|
||||
|
||||
@@ -11,28 +11,42 @@
|
||||
|
||||
set -euo pipefail
|
||||
set +x
|
||||
source $(dirname $0)/../../utils.sh
|
||||
|
||||
ROOT=$(dirname $0)/../..
|
||||
TEST_ID=$(generate_test_id)
|
||||
echo "TEST_ID = $TEST_ID"
|
||||
|
||||
cleanup() {
|
||||
log "Cleaning up..."
|
||||
clean_resource_by_id $TEST_ID
|
||||
}
|
||||
|
||||
if [ -z "${TEST_NOCLEANUP:-}" ]; then
|
||||
trap cleanup EXIT
|
||||
else
|
||||
log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards."
|
||||
fi
|
||||
|
||||
ROOT=$(dirname $0)/../../..
|
||||
DIR=$(dirname $0)
|
||||
|
||||
echo "Pre-test cleanup"
|
||||
fission env delete --name python || true
|
||||
env=python-$TEST_ID
|
||||
fn=rv-$TEST_ID
|
||||
recName=rec-$TEST_ID
|
||||
|
||||
echo "Creating python env"
|
||||
fission env create --name python --image fission/python-env
|
||||
fission env create --name $env --image $PYTHON_RUNTIME_IMAGE
|
||||
|
||||
echo "Creating function"
|
||||
fn=rv-$(date +%s)
|
||||
fission fn create --name $fn --env python --code $DIR/rendezvous.py --method GET
|
||||
fission fn create --name $fn --env $env --code $DIR/rendezvous.py --method GET
|
||||
|
||||
echo "Creating http trigger"
|
||||
generated=$(fission route create --function $fn --method GET --url rv | awk '{print $2}'| tr -d "'")
|
||||
generated=$(fission route create --function $fn --method GET --url /$fn | awk '{print $2}'| tr -d "'")
|
||||
|
||||
# Wait until trigger is created
|
||||
sleep 5
|
||||
|
||||
echo "Creating recorder"
|
||||
recName="regulus"
|
||||
fission recorder create --name $recName --function $fn
|
||||
fission recorder get --name $recName
|
||||
|
||||
@@ -44,13 +58,17 @@ fission recorder update --name $recName --disable
|
||||
sleep 5
|
||||
|
||||
echo "Issuing cURL request that should not be recorded:"
|
||||
resp=$(curl -X GET "http://$FISSION_ROUTER/rv?time=9&date=Tuesday")
|
||||
recordedStatus="$(fission records view --from 15s --to 0s -v | awk 'FNR == 2 {print $4$5}')"
|
||||
resp=$(curl -X GET "http://$FISSION_ROUTER/$fn?time=9&date=Tuesday")
|
||||
set +o pipefail
|
||||
recordedStatus="$(fission records view --from 5s --to 0s -v | grep $fn | awk '{print $4$5}')"
|
||||
set -o pipefail
|
||||
expectedR="We'll meet at 9 on Tuesday."
|
||||
expectedS=""
|
||||
|
||||
if [ "$resp" != "$expectedR" ] || [ "$recordedStatus" != "$expectedS" ]; then
|
||||
echo "Response is not equal to expected response."
|
||||
log "expected: status = '$expectedS' resp = '$expectedR'"
|
||||
log "result: status = '$recordedStatus' resp = '$resp'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -61,20 +79,24 @@ fission recorder update --name $recName --enable
|
||||
sleep 5
|
||||
|
||||
echo "Issuing cURL request that should be recorded:"
|
||||
resp=$(curl -X GET "http://$FISSION_ROUTER/rv?time=9&date=Tuesday")
|
||||
resp=$(curl -X GET "http://$FISSION_ROUTER/$fn?time=9&date=Tuesday")
|
||||
expectedR="We'll meet at 9 on Tuesday."
|
||||
recordedStatus="$(fission records view --from 15s --to 0s -v | awk 'FNR == 2 {print $4$5}')"
|
||||
set +o pipefail
|
||||
recordedStatus="$(fission records view --from 5s --to 0s -v | grep $fn | awk '{print $4$5}')"
|
||||
set -o pipefail
|
||||
expectedS="200OK"
|
||||
|
||||
if [ "$resp" != "$expectedR" ] || [ "$recordedStatus" != "$expectedS" ]; then
|
||||
echo "Response is not equal to expected response."
|
||||
log "expected: status = '$expectedS' resp = '$expectedR'"
|
||||
log "result: status = '$recordedStatus' resp = '$resp'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Test case 2) Passed."
|
||||
|
||||
# Create new trigger for same function recorded w/ different url
|
||||
generated2=$(fission route create --function $fn --method GET --url rv2 | awk '{print $2}'| tr -d "'")
|
||||
generated2=$(fission route create --function $fn --method GET --url $fn-2 | awk '{print $2}'| tr -d "'")
|
||||
echo "New trigger: $generated2"
|
||||
|
||||
# Update recorder to observe new trigger
|
||||
@@ -82,19 +104,21 @@ fission recorder update --name $recName --trigger $generated2
|
||||
fission recorder list
|
||||
|
||||
echo "Issuing cURL request that should be recorded:"
|
||||
resp=$(curl -X GET "http://$FISSION_ROUTER/rv2?time=9&date=Tuesday")
|
||||
resp=$(curl -X GET "http://$FISSION_ROUTER/$fn-2?time=9&date=Tuesday")
|
||||
expectedR="We'll meet at 9 on Tuesday."
|
||||
recordedStatus="$(fission records view --from 15s --to 0s -v | awk 'FNR == 2 {print $4$5}')"
|
||||
set +o pipefail
|
||||
recordedStatus="$(fission records view --from 5s --to 0s -v | grep $generated2 | awk '{print $4$5}')"
|
||||
set -o pipefail
|
||||
expectedS="200OK"
|
||||
|
||||
if [ "$resp" != "$expectedR" ] || [ "$recordedStatus" != "$expectedS" ]; then
|
||||
echo "Response is not equal to expected response."
|
||||
log "expected: status = '$expectedS' resp = '$expectedR'"
|
||||
log "result: status = '$recordedStatus' resp = '$resp'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Test case 3) Passed."
|
||||
|
||||
trap "fission recorder delete --name $recName && fission ht delete --name $generated && fission ht delete --name $generated2 && fission function delete --name $fn && fission env delete --name python" EXIT
|
||||
|
||||
echo "All passed."
|
||||
exit 0
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user