diff --git a/test/tests/mqtrigger/test_mqtrigger.sh b/test/tests/mqtrigger/test_mqtrigger.sh new file mode 100755 index 00000000..5f5113e7 --- /dev/null +++ b/test/tests/mqtrigger/test_mqtrigger.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +# +# Create a function and trigger it using NATS +# + +set -euo pipefail +set +x + +ROOT=$(dirname $0)/../.. +DIR=$(dirname $0) + +clusterID="fissionMQTrigger" +topic="foo.bar" +resptopic="foo.foo" +expectedRespOutput="[foo.foo]: 'Hello, World!'" + +cleanup() { + log "Cleaning up..." + fission env delete --name nodejs || true + fission fn delete --name $fn || true + fission mqtrigger delete --name $mqt || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + +log "Pre-test cleanup" +fission env delete --name nodejs || true + +log "Creating nodejs env" +fission env create --name nodejs --image fission/node-env + +log "Creating function" +fn=hello-$(date +%s) +fission fn create --name $fn --env nodejs --code $DIR/main.js --method GET + +log "Creating message queue trigger" +mqt=mqt-$(date +%s) +fission mqtrigger create --name $mqt --function $fn --mqtype "nats-streaming" --topic $topic --resptopic $resptopic + +# wait until nats trigger is created +sleep 5 + +# +# Send a message +# +log "Sending message" +go run $DIR/stan-pub.go -s $FISSION_NATS_STREAMING_URL -c $clusterID -id clientPub $topic "" + +# +# Wait for message on response topic +# +log "Waiting for response" +TIMEOUT=timeout +if [ $(uname -s) == 'Darwin' ] +then + # If this fails on mac os, do "brew install coreutils". + TIMEOUT=gtimeout +fi +response=$($TIMEOUT 120s go run $DIR/stan-sub.go --last -s $FISSION_NATS_STREAMING_URL -c $clusterID -id clientSub $resptopic 2>&1) + +if [[ "$response" != "$expectedRespOutput" ]]; then + log "$response is not equal to $expectedRespOutput" + exit 1 +fi + +log "Subscriber received expected response: $response" diff --git a/test/tests/mqtrigger/test_mqtrigger_error.sh b/test/tests/mqtrigger/test_mqtrigger_error.sh index e3fbca80..e4274498 100755 --- a/test/tests/mqtrigger/test_mqtrigger_error.sh +++ b/test/tests/mqtrigger/test_mqtrigger_error.sh @@ -18,24 +18,34 @@ maxretries=1 # FISSION_NATS_STREAMING_URL="http://defaultFissionAuthToken@$(minikube ip):4222" expectedRespOutput="[foo.error]: 'Hello, World!'" +cleanup() { + log "Cleaning up..." + fission env delete --name nodejs || true + fission fn delete --name $fn || true + fission mqtrigger delete --name $mqt || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + log "Pre-test cleanup" fission env delete --name nodejs || true log "Creating nodejs env" fission env create --name nodejs --image fission/node-env -#trap "fission env delete --name nodejs" EXIT log "Creating function" fn=hello-$(date +%s) fission fn create --name $fn --env nodejs --code $DIR/main_error.js --method GET -##trap "fission fn delete --name $fn" EXIT log "Creating message queue trigger" mqt=mqt-$(date +%s) fission mqtrigger create --name $mqt --function $fn --mqtype "nats-streaming" --topic $topic --resptopic $resptopic --errortopic $errortopic --maxretries $maxretries log "Updated mqtrigger list" fission mqtrigger list -#trap "fission mqtrigger delete --name $mqt" EXIT # wait until nats trigger is created sleep 5 @@ -68,4 +78,4 @@ if [[ "$response" != "$expectedRespOutput" ]]; then exit 1 else log "Responses match." -fi \ No newline at end of file +fi diff --git a/test/tests/test_backend_newdeploy.sh b/test/tests/test_backend_newdeploy.sh index d889386a..97bae6eb 100755 --- a/test/tests/test_backend_newdeploy.sh +++ b/test/tests/test_backend_newdeploy.sh @@ -4,20 +4,32 @@ set -euo pipefail ROOT=$(dirname $0)/../.. +cleanup() { + log "Cleaning up..." + fission env delete --name nodejs || true + fission fn delete --name $fn1 || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + # Create a hello world function in nodejs, test it with an http trigger log "NewDeploy ExecutorType: Pre-test cleanup" fission env delete --name nodejs || true log "Creating nodejs env" fission env create --name nodejs --image fission/node-env --mincpu 20 --maxcpu 100 --minmemory 128 --maxmemory 256 -trap "fission env delete --name nodejs" EXIT +#trap "fission env delete --name nodejs" EXIT # TODO Imporve test code by reusing common blocks log "Creating function, testing for cold start with MinScale 0" fn0=nodejs-hello-$(date +%N) fission fn create --name $fn0 --env nodejs --code $ROOT/examples/nodejs/hello.js --minscale 0 --maxscale 4 --executortype newdeploy -trap "fission fn delete --name $fn0" EXIT +#trap "fission fn delete --name $fn0" EXIT log "Creating route" fission route create --function $fn0 --url /$fn0 --method GET @@ -35,7 +47,7 @@ echo $response0 | grep -i hello log "Creating function, testing for warm start with MinScale 1" fn1=nodejs-hello-$(date +%N) fission fn create --name $fn1 --env nodejs --code $ROOT/examples/nodejs/hello.js --minscale 1 --maxscale 4 --executortype newdeploy -trap "fission fn delete --name $fn1" EXIT +#trap "fission fn delete --name $fn1" EXIT log "Creating route" fission route create --function $fn1 --url /$fn1 --method GET @@ -52,4 +64,4 @@ echo $response1 | grep -i hello # crappy cleanup, improve this later kubectl get httptrigger -o name | tail -1 | cut -f2 -d'/' | xargs kubectl delete httptrigger -log "NewDeploy ExecutorType: All done." \ No newline at end of file +log "NewDeploy ExecutorType: All done." diff --git a/test/tests/test_backend_poolmgr.sh b/test/tests/test_backend_poolmgr.sh index 7f018c13..40dd9f14 100755 --- a/test/tests/test_backend_poolmgr.sh +++ b/test/tests/test_backend_poolmgr.sh @@ -4,6 +4,18 @@ set -euo pipefail ROOT=$(dirname $0)/../.. +cleanup() { + log "Cleaning up..." + fission env delete --name nodejs || true + fission fn delete --name $fn || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + fn=nodejs-hello-$(date +%N) # Create a hello world function in nodejs, test it with an http trigger @@ -12,11 +24,9 @@ fission env delete --name nodejs || true log "Creating nodejs env" fission env create --name nodejs --image fission/node-env --mincpu 20 --maxcpu 100 --minmemory 128 --maxmemory 256 -trap "fission env delete --name nodejs" EXIT log "Creating function" fission fn create --name $fn --env nodejs --code $ROOT/examples/nodejs/hello.js --executortype poolmgr -trap "fission fn delete --name $fn" EXIT log "Creating route" fission route create --function $fn --url /$fn --method GET @@ -33,4 +43,4 @@ echo $response | grep -i hello # crappy cleanup, improve this later kubectl get httptrigger -o name | tail -1 | cut -f2 -d'/' | xargs kubectl delete httptrigger -log "Poolmgr ExecutorType: All done." \ No newline at end of file +log "Poolmgr ExecutorType: All done." diff --git a/test/tests/test_buildermgr.sh b/test/tests/test_buildermgr.sh index 911341c7..ac397b69 100755 --- a/test/tests/test_buildermgr.sh +++ b/test/tests/test_buildermgr.sh @@ -51,13 +51,24 @@ waitEnvBuilder() { } export -f waitEnvBuilder +cleanup() { + log "Cleaning up..." + fission env delete --name python || true + fission fn delete --name $fn || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + log "Pre-test cleanup" fission env delete --name python || true kubectl --namespace default get packages|grep -v NAME|awk '{print $1}'|xargs -I@ bash -c 'kubectl --namespace default delete packages @' || true log "Creating python env" fission env create --name python --image $PYTHON_RUNTIME_IMAGE --builder $PYTHON_BUILDER_IMAGE -trap "fission env delete --name python" EXIT timeout 180s bash -c "waitEnvBuilder python" @@ -66,7 +77,6 @@ zip -jr demo-src-pkg.zip $ROOT/examples/python/sourcepkg/ log "Creating function " $fn fission fn create --name $fn --env python --src demo-src-pkg.zip --entrypoint "user.main" --buildcmd "./build.sh" -trap "fission fn delete --name $fn" EXIT log "Creating route" fission route create --function $fn --url /$fn --method GET @@ -83,7 +93,6 @@ checkFunctionResponse $fn log "Updating function " $fn fission fn update --name $fn --src demo-src-pkg.zip -trap "fission fn delete --name $fn" EXIT pkg=$(kubectl --namespace default get functions $fn -o jsonpath='{.spec.package.packageref.name}') diff --git a/test/tests/test_environments/test_java_builder.sh b/test/tests/test_environments/test_java_builder.sh index ffbdaf32..558bcb9c 100755 --- a/test/tests/test_environments/test_java_builder.sh +++ b/test/tests/test_environments/test_java_builder.sh @@ -5,9 +5,9 @@ set -euo pipefail ROOT=$(dirname $0)/../../.. cleanup() { - fission fn delete --name pbuilderhello - fission fn delete --name nbuilderhello - fission env delete --name java + fission fn delete --name pbuilderhello || true + fission fn delete --name nbuilderhello || true + fission env delete --name java || true } test_fn() { diff --git a/test/tests/test_environments/test_java_env.sh b/test/tests/test_environments/test_java_env.sh index 9f53b8e0..e9f617c0 100755 --- a/test/tests/test_environments/test_java_env.sh +++ b/test/tests/test_environments/test_java_env.sh @@ -5,9 +5,9 @@ set -euo pipefail ROOT=$(dirname $0)/../../.. cleanup() { - fission fn delete --name hellon - fission fn delete --name hellop - fission env delete --name jvm + fission fn delete --name hellon || true + fission fn delete --name hellop || true + fission env delete --name jvm || true } test_fn() { diff --git a/test/tests/test_fn_update/test_configmap_update.sh b/test/tests/test_fn_update/test_configmap_update.sh index e356bf32..67a1ac41 100755 --- a/test/tests/test_fn_update/test_configmap_update.sh +++ b/test/tests/test_fn_update/test_configmap_update.sh @@ -12,23 +12,34 @@ fn_name=hellopy-$(date +%N) old_cfgmap=old-cfgmap-$(date +%N) new_cfgmap=new-cfgmap-$(date +%N) +cleanup() { + log "Cleaning up..." + fission env delete --name $env || true + kubectl delete configmap ${old_cfgmap} -n default || true + kubectl delete configmap ${new_cfgmap} -n default || true + fission spec destroy || true + rm -rf specs || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + cp ../test_secret_cfgmap/cfgmap.py.template cfgmap.py sed -i "s/{{ FN_CFGMAP }}/${old_cfgmap}/g" cfgmap.py log "Creating env $env" fission env create --name $env --image fission/python-env -trap "fission env delete --name $env" EXIT log "Creating configmap $old_cfgmap" kubectl create configmap ${old_cfgmap} --from-literal=TEST_KEY="TESTVALUE" -n default -trap "kubectl delete configmap ${old_cfgmap} -n default" EXIT log "Creating NewDeploy function spec: $fn_name" fission spec init -trap "rm -rf specs" EXIT fission fn create --spec --name $fn_name --env $env --code cfgmap.py --configmap $old_cfgmap --minscale 1 --maxscale 4 --executortype newdeploy fission spec apply ./specs/ -trap "fission spec destroy" EXIT log "Creating route" fission route create --function ${fn_name} --url /${fn_name} --method GET @@ -41,7 +52,6 @@ timeout 60 bash -c "test_fn $fn_name 'TESTVALUE'" log "Creating a new cfgmap" kubectl create configmap ${new_cfgmap} --from-literal=TEST_KEY="TESTVALUE_NEW" -n default -trap "kubectl delete configmap ${new_cfgmap} -n default" EXIT log "Updating cfgmap and code for the function" sed -i "s/${old_cfgmap}/${new_cfgmap}/g" cfgmap.py @@ -49,10 +59,9 @@ sed -i "s/${old_cfgmap}/${new_cfgmap}/g" specs/function-$fn_name.yaml log "Applying function changes" fission spec apply ./specs/ -trap "fission spec destroy" EXIT log "Waiting for changes to take effect" sleep 5 log "Testing function for cfgmap value" -timeout 60 bash -c "test_fn $fn_name 'TESTVALUE_NEW'" \ No newline at end of file +timeout 60 bash -c "test_fn $fn_name 'TESTVALUE_NEW'" diff --git a/test/tests/test_fn_update/test_env_update.sh b/test/tests/test_fn_update/test_env_update.sh index 308a794e..406c4cab 100755 --- a/test/tests/test_fn_update/test_env_update.sh +++ b/test/tests/test_fn_update/test_env_update.sh @@ -10,13 +10,25 @@ env_old=python-$(date +%N) env_new=python-$(date +%N) fn=hellopy-$(date +%N) +cleanup() { + log "Cleaning up..." + fission env delete --name $env_old || true + fission fn delete --name $fn || true + fission env delete --name $env_old || true +} + +cleanup +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + log "Creating env $env_old" fission env create --name $env_old --image fission/python-env -trap "fission env delete --name $env_old" EXIT log "Creating function $fn" fission fn create --name $fn --env $env_old --code $ROOT/examples/python/hello.py --minscale 1 --maxscale 4 --executortype newdeploy --mincpu 20 --maxcpu 100 --minmemory 128 --maxmemory 256 -trap "fission fn delete --name $fn" EXIT log "Creating route for function $fn" fission route create --function ${fn} --url /${fn} --method GET @@ -28,7 +40,6 @@ timeout 60 bash -c "test_fn $fn 'world'" log "Creating a new env $env_new" fission env create --name $env_new --image fission/python-env -trap "fission env delete --name $env_old" EXIT log "Updating function with a new environment" fission fn update --name $fn --env $env_new --code $ROOT/examples/python/hello.py --minscale 1 --maxscale 4 --executortype newdeploy --mincpu 20 --maxcpu 100 --minmemory 128 --maxmemory 256 @@ -36,4 +47,4 @@ fission fn update --name $fn --env $env_new --code $ROOT/examples/python/hello.p log "Waiting for update to catch up" sleep 5 -timeout 60 bash -c "test_fn $fn 'world'" \ No newline at end of file +timeout 60 bash -c "test_fn $fn 'world'" diff --git a/test/tests/test_fn_update/test_nd_pkg_update.sh b/test/tests/test_fn_update/test_nd_pkg_update.sh index ce47928a..1920dcde 100755 --- a/test/tests/test_fn_update/test_nd_pkg_update.sh +++ b/test/tests/test_fn_update/test_nd_pkg_update.sh @@ -10,20 +10,29 @@ url="" source $(dirname $0)/fnupdate_utils.sh cleanup() { + log "Cleaning up..." + if [ -e "test-deploy-pkg.zip" ]; then - rm -rf test-deploy-pkg.zip test_dir + rm -rf test-deploy-pkg.zip test_dir || true fi if [ -e "/tmp/file" ]; then - rm -rf /tmp/file + rm -rf /tmp/file || true fi + + fission env delete --name $env || true + fission fn delete --name $fn_name || true } +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + # This test tests updating package and checking results of function, it does: # Creates a archive, env. with builder and a function and tests for response # Then updates archive with a different word and udpates functions to check for new string in response -trap cleanup EXIT - env=python-$(date +%N) fn_name=hellopython-$(date +%N) @@ -58,4 +67,4 @@ sleep 5 timeout 60 bash -c "test_fn $fn_name 'fission'" -log "Update function for new deployment executor passed" \ No newline at end of file +log "Update function for new deployment executor passed" diff --git a/test/tests/test_fn_update/test_poolmgr_nd.sh b/test/tests/test_fn_update/test_poolmgr_nd.sh index de1cf22a..cc9c0057 100755 --- a/test/tests/test_fn_update/test_poolmgr_nd.sh +++ b/test/tests/test_fn_update/test_poolmgr_nd.sh @@ -9,9 +9,20 @@ ROOT=$(dirname $0)/../../.. env=python-$(date +%N) fn=hellopython-$(date +%N) +cleanup() { + log "Cleaning up..." + fission env delete --name $env || true + fission fn delete --name $fn || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + log "Creating Python env $env" fission env create --name $env --image fission/python-env --mincpu 20 --maxcpu 100 --minmemory 128 --maxmemory 256 -trap "fission env delete --name $env" EXIT log "Creating function $fn" fission fn create --name $fn --env $env --code $ROOT/examples/python/hello.py @@ -38,4 +49,4 @@ fission fn update --name $fn --code $ROOT/examples/python/hello.py --executortyp log "Waiting for router to catch up" sleep 5 -timeout 60 bash -c "test_fn $fn 'world'" \ No newline at end of file +timeout 60 bash -c "test_fn $fn 'world'" diff --git a/test/tests/test_fn_update/test_resource_change.sh b/test/tests/test_fn_update/test_resource_change.sh index 2e7f51d2..018db50e 100755 --- a/test/tests/test_fn_update/test_resource_change.sh +++ b/test/tests/test_fn_update/test_resource_change.sh @@ -19,9 +19,21 @@ maxcpu2=200 minmem2=512 maxmem2=768 +cleanup() { + log "Cleaning up..." + fission env delete --name $env || true + fission fn delete --name $fn || true +} + +cleanup +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + log "Creating Python env $env" fission env create --name $env --image fission/python-env --mincpu 20 --maxcpu 100 --minmemory 128 --maxmemory 256 -trap "fission env delete --name $env" EXIT log "Creating function $fn" fission fn create --name $fn --env $env --code $ROOT/examples/python/hello.py --minscale 1 --maxscale 4 --executortype newdeploy --mincpu $mincpu1 --maxcpu $maxcpu1 --minmemory $minmem1 --maxmemory $maxmem1 @@ -74,4 +86,4 @@ then exit 1 fi -timeout 60 bash -c "test_fn $fn 'world'" \ No newline at end of file +timeout 60 bash -c "test_fn $fn 'world'" diff --git a/test/tests/test_fn_update/test_scale_change.sh b/test/tests/test_fn_update/test_scale_change.sh index 4282fcb6..847de676 100755 --- a/test/tests/test_fn_update/test_scale_change.sh +++ b/test/tests/test_fn_update/test_scale_change.sh @@ -12,9 +12,21 @@ targetMinScale=2 targetMaxScale=6 targetCpuPercent=60 +cleanup() { + log "Cleaning up..." + fission env delete --name $env || true + fission fn delete --name $fn || true +} + +cleanup +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + log "Creating Python env $env" fission env create --name $env --image fission/python-env --mincpu 20 --maxcpu 100 --minmemory 128 --maxmemory 256 -trap "fission env delete --name $env" EXIT log "Creating function $fn" fission fn create --name $fn --env $env --code $ROOT/examples/python/hello.py --minscale 1 --maxscale 4 --executortype newdeploy --mincpu 20 --maxcpu 100 --minmemory 128 --maxmemory 256 diff --git a/test/tests/test_fn_update/test_secret_update.sh b/test/tests/test_fn_update/test_secret_update.sh index 3dd5f778..e7b8cd01 100755 --- a/test/tests/test_fn_update/test_secret_update.sh +++ b/test/tests/test_fn_update/test_secret_update.sh @@ -12,23 +12,35 @@ fn_name=hellopython-$(date +%N) old_secret=old-secret-$(date +%N) new_secret=new-secret-$(date +%N) +cleanup() { + log "Cleaning up..." + fission env delete --name $env || true + kubectl delete secret ${old_secret} -n default || true + kubectl delete secret ${new_secret} -n default || true + fission spec destroy || true + rm -rf specs || true +} + +cleanup +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + cp ../test_secret_cfgmap/secret.py.template secret.py sed -i "s/{{ FN_SECRET }}/${old_secret}/g" secret.py log "Creating env $env" fission env create --name $env --image fission/python-env -trap "fission env delete --name $env" EXIT log "Creating secret $old_secret" kubectl create secret generic ${old_secret} --from-literal=TEST_KEY="TESTVALUE" -n default -trap "kubectl delete secret ${old_secret} -n default" EXIT log "Creating NewDeploy function spec: $fn_name" fission spec init -trap "rm -rf specs" EXIT fission fn create --spec --name $fn_name --env $env --code secret.py --secret $old_secret --minscale 1 --maxscale 4 --executortype newdeploy fission spec apply ./specs/ -trap "fission spec destroy" EXIT log "Creating route" fission route create --function ${fn_name} --url /${fn_name} --method GET @@ -41,7 +53,6 @@ timeout 60 bash -c "test_fn $fn_name 'TESTVALUE'" log "Creating a new secret" kubectl create secret generic ${new_secret} --from-literal=TEST_KEY="TESTVALUE_NEW" -n default -trap "kubectl delete secret ${new_secret} -n default" EXIT log "Updating secret and code for the function" sed -i "s/${old_secret}/${new_secret}/g" secret.py @@ -49,10 +60,9 @@ sed -i "s/${old_secret}/${new_secret}/g" specs/function-$fn_name.yaml log "Applying function changes" fission spec apply ./specs/ -trap "fission spec destroy" EXIT log "Waiting for changes to take effect" sleep 5 log "Testing function for secret value" -timeout 60 bash -c "test_fn $fn_name 'TESTVALUE_NEW'" \ No newline at end of file +timeout 60 bash -c "test_fn $fn_name 'TESTVALUE_NEW'" diff --git a/test/tests/test_function_test/test_fn_test.sh b/test/tests/test_function_test/test_fn_test.sh index 518f145a..39de87a6 100755 --- a/test/tests/test_function_test/test_fn_test.sh +++ b/test/tests/test_function_test/test_fn_test.sh @@ -9,16 +9,21 @@ env=nodejs-$(date +%N) valid_fn_name=hello-$(date +%N) invalid_fn_name=errhello-$(date +%N) -function cleanup { - log "Cleaning up" - fission env delete --name $env - fission fn delete --name $valid_fn_name - fission fn delete --name $invalid_fn_name +cleanup() { + log "Cleaning up..." + fission env delete --name $env || true + fission fn delete --name $valid_fn_name || true + fission fn delete --name $invalid_fn_name || true } +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + log "Creating env $env" fission env create --name $env --image fission/node-env -trap cleanup EXIT log "Creating valid function $valid_fn_name" fission fn create --name $valid_fn_name --env $env --code hello.js @@ -65,4 +70,4 @@ then exit 1 fi -log "All tests passed" \ No newline at end of file +log "All tests passed" diff --git a/test/tests/test_function_update.sh b/test/tests/test_function_update.sh index 7e1adc4d..1f20b997 100755 --- a/test/tests/test_function_update.sh +++ b/test/tests/test_function_update.sh @@ -5,6 +5,18 @@ ROOT=$(dirname $0)/../.. fn=nodejs-hello-$(date +%s) +cleanup() { + log "Cleaning up..." + fission env delete --name nodejs || true + fission fn delete --name $fn || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + # Create a function in nodejs, test it with an HTTP trigger. # Update it and check it's output, the output should be # different from the previous one. @@ -14,12 +26,10 @@ fission env delete --name nodejs || true log "Creating nodejs env" fission env create --name nodejs --image fission/node-env -trap "fission env delete --name nodejs" EXIT log "Creating function" echo 'module.exports = function(context, callback) { callback(200, "foo!\n"); }' > foo.js fission fn create --name $fn --env nodejs --code foo.js -trap "fission fn delete --name $fn" EXIT log "Creating route" fission route create --function $fn --url /$fn --method GET @@ -42,7 +52,6 @@ pid=$! log "Updating function" echo 'module.exports = function(context, callback) { callback(200, "bar!\n"); }' > bar.js fission fn update --name $fn --code bar.js -trap "fission fn delete --name $fn" EXIT log "Waiting for router to update cache" sleep 10 diff --git a/test/tests/test_internal_routes.sh b/test/tests/test_internal_routes.sh index 7f489a78..59df0886 100755 --- a/test/tests/test_internal_routes.sh +++ b/test/tests/test_internal_routes.sh @@ -9,12 +9,24 @@ set -euo pipefail ROOT=$(dirname $0)/../.. +cleanup() { + log "Cleaning up..." + fission env delete --name nodejs || true + fission fn delete --name $f1 || true + fission fn delete --name $f2 || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + log "Pre-test cleanup" fission env delete --name nodejs || true log "Creating nodejs env" fission env create --name nodejs --image fission/node-env -trap "fission env delete --name nodejs" EXIT log "Writing functions" f1=f1-$(date +%s) @@ -30,7 +42,6 @@ log "Creating functions" for f in $f1 $f2 do fission fn create --name $f --env nodejs --code $f.js - trap "fission fn delete --name $f" EXIT done log "Waiting for router to catch up" diff --git a/test/tests/test_logging/test_function_logs.sh b/test/tests/test_logging/test_function_logs.sh index fe5bc25c..762ad52d 100755 --- a/test/tests/test_logging/test_function_logs.sh +++ b/test/tests/test_logging/test_function_logs.sh @@ -7,29 +7,30 @@ ROOT=$(dirname $0)/../.. fn=nodejs-logtest-$(date +%N) -function cleanup { - log "Cleanup route" +cleanup() { + log "Cleaning up..." var=$(fission route list | grep $fn | awk '{print $1;}') - fission route delete --name $var - log "delete logfile" - rm "/tmp/logfile" + fission fn delete --name $fn || true + fission env delete --name nodejs || true + log "delete logfile" || true + rm "/tmp/logfile" || true } -# Create a hello world function in nodejs, test it with an http trigger -log "Pre-test cleanup" -fission env delete --name nodejs || true +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi +# Create a hello world function in nodejs, test it with an http trigger log "Creating nodejs env" fission env create --name nodejs --image fission/node-env -trap "fission env delete --name nodejs" EXIT log "Creating function" fission fn create --name $fn --env nodejs --code log.js -trap "fission fn delete --name $fn" EXIT log "Creating route" fission route create --function $fn --url /$fn --method GET -trap cleanup EXIT log "Waiting for router to catch up" sleep 15 diff --git a/test/tests/test_node_hello_http.sh b/test/tests/test_node_hello_http.sh index cda19717..4ac357c9 100755 --- a/test/tests/test_node_hello_http.sh +++ b/test/tests/test_node_hello_http.sh @@ -6,17 +6,27 @@ ROOT=$(dirname $0)/../.. fn=nodejs-hello-$(date +%N) +cleanup() { + log "Cleaning up..." + fission env delete --name nodejs || true + fission fn delete --name $fn || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + # Create a hello world function in nodejs, test it with an http trigger log "Pre-test cleanup" fission env delete --name nodejs || true log "Creating nodejs env" fission env create --name nodejs --image fission/node-env -trap "fission env delete --name nodejs" EXIT log "Creating function" fission fn create --name $fn --env nodejs --code $ROOT/examples/nodejs/hello.js -trap "fission fn delete --name $fn" EXIT log "Creating route" fission route create --function $fn --url /$fn --method GET diff --git a/test/tests/test_package_command.sh b/test/tests/test_package_command.sh index 1a88408c..38c7107b 100755 --- a/test/tests/test_package_command.sh +++ b/test/tests/test_package_command.sh @@ -50,12 +50,23 @@ waitEnvBuilder() { } export -f waitEnvBuilder +cleanup() { + log "Cleaning up..." + fission env delete --name python || true + fission fn delete --name $fn || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + log "Pre-test cleanup" fission env delete --name python || true log "Creating python env" fission env create --name python --image $PYTHON_RUNTIME_IMAGE --builder $PYTHON_BUILDER_IMAGE -trap "fission env delete --name python" EXIT timeout 180s bash -c "waitEnvBuilder python" @@ -68,7 +79,6 @@ timeout 60s bash -c "waitBuild $pkgName" log "Creating function " $fn fission fn create --name $fn --pkg $pkgName --entrypoint "user.main" -trap "fission fn delete --name $fn" EXIT log "Creating route" fission route create --function $fn --url /$fn --method GET @@ -87,7 +97,6 @@ pkgName=$(fission package create --deploy demo-deploy-pkg.zip --env python| cut log "Updating function " $fn fission fn update --name $fn --pkg $pkgName --entrypoint "hello.main" -trap "fission fn delete --name $fn" EXIT log "Waiting for router to update cache" sleep 3 diff --git a/test/tests/test_router_cache_invalidation.sh b/test/tests/test_router_cache_invalidation.sh index 2c71a05f..45624d2f 100755 --- a/test/tests/test_router_cache_invalidation.sh +++ b/test/tests/test_router_cache_invalidation.sh @@ -1,6 +1,20 @@ #!/bin/bash set -euo pipefail + +cleanup() { + log "Cleaning up..." + fission env delete --name python || true + fission fn delete --name $fn || true + rm -rf testDir-$fn || true +} + +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + # 1. This test first creates a python function with a route # 2. Makes a curl request to the route and verifies http.StatusOK is received. # This step ensures the pod address is cached in router. @@ -18,16 +32,13 @@ fission env delete --name python || true log "Creating python env" fission env create --name python --image $PYTHON_RUNTIME_IMAGE -trap "fission env delete --name python" EXIT log "Creating hello.py" mkdir testDir-$fn printf 'def main():\n return "Hello, world!"' > testDir-$fn/hello.py -trap "rm -rf testDir-$fn" EXIT log "Creating function " $fn fission fn create --name $fn --env python --code testDir-$fn/hello.py -trap "fission fn delete --name $fn" EXIT log "rm testDir-$fn" rm -rf testDir-$fn @@ -57,4 +68,4 @@ log "http_status: $http_status" if [ "$http_status" -ne "200" ]; then log "Something went wrong, http status after deleting function pod is $http_status" exit 1 -fi \ No newline at end of file +fi diff --git a/test/tests/test_secret_cfgmap/test_secret_cfgmap.sh b/test/tests/test_secret_cfgmap/test_secret_cfgmap.sh index 7a3b308a..92b3b058 100755 --- a/test/tests/test_secret_cfgmap/test_secret_cfgmap.sh +++ b/test/tests/test_secret_cfgmap/test_secret_cfgmap.sh @@ -8,16 +8,11 @@ fn=testnormal-$(date +%s) fn_secret=testsecret-$(date +%s) fn_cfgmap=testcfgmap-$(date +%s) -cp secret.py.template secret.py -sed -i "s/{{ FN_SECRET }}/${fn_secret}/g" secret.py - -cp cfgmap.py.template cfgmap.py -sed -i "s/{{ FN_CFGMAP }}/${fn_cfgmap}/g" cfgmap.py - -function cleanup { - log "Cleanup everything" - kubectl delete secret -n default ${fn_secret} - kubectl delete configmap -n default ${fn_cfgmap} +cleanup() { + log "Cleaning up..." + fission env delete --name python || true + kubectl delete secret -n default ${fn_secret} || true + kubectl delete configmap -n default ${fn_cfgmap} || true # delete functions for f in ${fn_secret} ${fn_cfgmap} ${fn} do @@ -30,6 +25,18 @@ function cleanup { done } +if [ -z "${TEST_NOCLEANUP:-}" ]; then + trap cleanup EXIT +else + log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards." +fi + +cp secret.py.template secret.py +sed -i "s/{{ FN_SECRET }}/${fn_secret}/g" secret.py + +cp cfgmap.py.template cfgmap.py +sed -i "s/{{ FN_CFGMAP }}/${fn_cfgmap}/g" cfgmap.py + checkFunctionResponse() { log "Doing an HTTP GET on the function's route" response=$(curl http://$FISSION_ROUTER/${1}) @@ -54,15 +61,12 @@ fission env delete --name python || true log "Creating python env" fission env create --name python --image fission/python-env -trap "fission env delete --name python" EXIT log "Creating secret" kubectl create secret generic ${fn_secret} --from-literal=TEST_KEY="TESTVALUE" -n default -trap "kubectl delete secret ${fn_secret} -n default" EXIT log "Creating function with secret" fission fn create --name ${fn_secret} --env python --code secret.py --secret ${fn_secret} -trap "fission fn delete --name ${fn_secret}" EXIT log "Creating route" fission route create --function ${fn_secret} --url /${fn_secret} --method GET @@ -75,7 +79,6 @@ checkFunctionResponse ${fn_secret} 'TESTVALUE' 'secret' log "Creating function with newdeploy executorType and new secret value" kubectl patch secrets ${fn_secret} -p '{"data":{"TEST_KEY":"TkVXVkFMCg=="}}' -n default fission fn create --name ${fn_secret}-1 --env python --code secret.py --secret ${fn_secret} --executortype newdeploy -trap "fission fn delete --name ${fn_secret}-1" EXIT log "Creating route" fission route create --function ${fn_secret}-1 --url /${fn_secret}-1 --method GET @@ -87,11 +90,9 @@ checkFunctionResponse ${fn_secret}-1 'NEWVAL' 'secret' log "Creating configmap" kubectl create configmap ${fn_cfgmap} --from-literal=TEST_KEY="TESTVALUE" -n default -trap "kubectl delete configmap ${fn_cfgmap} -n default" EXIT log "creating function with configmap" fission fn create --name ${fn_cfgmap} --env python --code cfgmap.py --configmap ${fn_cfgmap} -trap "fission fn delete --name ${fn_cfgmap}" EXIT log "Creating route" fission route create --function ${fn_cfgmap} --url /${fn_cfgmap} --method GET @@ -104,7 +105,6 @@ checkFunctionResponse ${fn_cfgmap} 'TESTVALUE' 'configmap' log "Creating function with newdeploy executorType and new configmap value" kubectl patch configmap ${fn_cfgmap} -p '{"data":{"TEST_KEY":"NEWVAL"}}' -n default fission fn create --name ${fn_cfgmap}-1 --env python --code cfgmap.py --configmap ${fn_cfgmap} --executortype newdeploy -trap "fission fn delete --name ${fn_cfgmap}-1" EXIT log "Creating route" fission route create --function ${fn_cfgmap}-1 --url /${fn_cfgmap}-1 --method GET @@ -116,7 +116,6 @@ checkFunctionResponse ${fn_cfgmap}-1 'NEWVAL' 'configmap' log "testing creating a function without a secret or configmap" fission function create --name ${fn} --env python --code empty.py -trap "fission fn delete --name ${fn}" EXIT log "Creating route" fission route create --function ${fn} --url /${fn} --method GET @@ -135,4 +134,3 @@ fi log "test empty passed" log "All done." -trap "cleanup" EXIT