Drop unreleased features (record & replay) (#1406)

1. The records are stored in redis which is not migratable to another cluster for the testing purposes.
2. Some of the requests fields are not recorded.
3. People should consider using https://github.com/buger/goreplay which is an existing mature and well-tested solution for testing purposes.
This commit is contained in:
Ta-Ching Chen
2019-11-13 15:10:32 +08:00
committed by GitHub
parent 1cda7e051b
commit cf2d35291e
51 changed files with 10 additions and 3544 deletions
-3
View File
@@ -513,9 +513,6 @@ run_all_tests() {
$ROOT/test/run_test.sh \
$ROOT/test/tests/test_canary.sh \
$ROOT/test/tests/mqtrigger/kafka/test_kafka.sh \
$ROOT/test/tests/recordreplay/test_record_greetings.sh \
$ROOT/test/tests/recordreplay/test_record_rv.sh \
$ROOT/test/tests/recordreplay/test_recorder_update.sh \
$ROOT/test/tests/test_annotations.sh \
$ROOT/test/tests/test_archive_pruner.sh \
$ROOT/test/tests/test_backend_poolmgr.sh \
-9
View File
@@ -1,9 +0,0 @@
from flask import request
def main():
content = request.get_json(force=True)
title = content['title']
name = content['name']
item = content['item']
g = "Greetings, {} {}. May I take your {}?\n".format(title, name, item)
return g
-7
View File
@@ -1,7 +0,0 @@
from flask import request
def main():
time = request.args.get('time')
date = request.args.get('date')
r = "We'll meet at {} on {}.\n".format(time, date)
return r
@@ -1,70 +0,0 @@
#!/bin/bash
#test:disabled
#
# Simple end-to-end test of record with POST
# Two recorders tested: by function, by trigger (TODO)
#
set -euo pipefail
set +x
source $(dirname $0)/../../utils.sh
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)
env=python-$TEST_ID
fn=greetings-$TEST_ID
recName=rec-$TEST_ID
echo "Creating python env"
fission env create --name $env --image $PYTHON_RUNTIME_IMAGE
echo "Creating function"
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 /$fn | awk '{print $2}'| tr -d "'")
# Wait until trigger is created
sleep 5
echo "Creating recorder"
fission recorder create --name $recName --function $fn
fission recorder get --name $recName
# Wait until recorder is created
sleep 5
echo "Issuing cURL request:"
resp=$(curl -X POST "http://$FISSION_ROUTER/$fn" -d "{\"title\":\"Madam\",\"name\":\"Thanh\",\"item\":\"coat\"}")
expectedR="Greetings, Madam Thanh. May I take your coat?"
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
-118
View File
@@ -1,118 +0,0 @@
#!/bin/bash
#test:disabled
#
# Simple end-to-end test of record with GET
# 0) Setup: Two triggers created for a function (different urls, urlA and urlB)
# 1) One recorder created for that function, two cURL requests made to both urls, check both are recorded
# 2) One recorder created for a particular trigger (urlB), both requests repeated, check only the one for urlB was recorded
#
set -euo pipefail
set +x
source $(dirname $0)/../../utils.sh
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."
env=python-$TEST_ID
fn=rv-$TEST_ID
recName1=rec1-$TEST_ID
recName2=rec2-$TEST_ID
echo "Creating python env"
fission env create --name $env --image $PYTHON_RUNTIME_IMAGE
echo "Creating function"
fission fn create --name $fn --env $env --code $DIR/rendezvous.py --method GET
echo "Creating trigger A"
triggerA=$(fission route create --function $fn --method GET --url /$fn-A | awk '{print $2}'| tr -d "'")
log "triggerA = $triggerA"
echo "Creating trigger B"
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"
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/$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/$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 $recName1
sleep 5
echo "Creating recorder by trigger"
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/$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/$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
echo "All passed."
exit 0
@@ -1,125 +0,0 @@
#!/bin/bash
#test:disabled
#
# Simple test of recorder updates
# 0) Setup: One recorder created for function with trigger
# 1) Recorder disabled, cURL request made, check not saved.
# 2) Recorder re-enabled, request repeated, check now saved.
# 3) New trigger created for same function recorded w/ different url, recorder updated to observe requests for this trigger
# Request repeated at new url, check saved.
#
set -euo pipefail
set +x
source $(dirname $0)/../../utils.sh
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)
env=python-$TEST_ID
fn=rv-$TEST_ID
recName=rec-$TEST_ID
echo "Creating python env"
fission env create --name $env --image $PYTHON_RUNTIME_IMAGE
echo "Creating function"
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 /$fn | awk '{print $2}'| tr -d "'")
# Wait until trigger is created
sleep 5
echo "Creating recorder"
fission recorder create --name $recName --function $fn
fission recorder get --name $recName
# Wait until recorder is created
sleep 5
# Disable recorder
fission recorder update --name $recName --disable
sleep 5
echo "Issuing cURL request that should not be recorded:"
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
echo "Test case 1) Passed."
# Reenable recorder
fission recorder update --name $recName --enable
sleep 5
echo "Issuing cURL request that should be recorded:"
resp=$(curl -X GET "http://$FISSION_ROUTER/$fn?time=9&date=Tuesday")
expectedR="We'll meet at 9 on Tuesday."
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 $fn-2 | awk '{print $2}'| tr -d "'")
echo "New trigger: $generated2"
# Update recorder to observe new trigger
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/$fn-2?time=9&date=Tuesday")
expectedR="We'll meet at 9 on Tuesday."
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."
echo "All passed."
exit 0