End to end test runner (#281)
Build fission-bundle and fission cli. Install the fission-bundle using the fission-all helm chart. Run all files matching test_*.sh from the tests/ directory. This change doesn't contain any real tests, just the build and test runner scripts. Skips the tests when there are no cluster credentials available.
This commit is contained in:
@@ -23,3 +23,4 @@ script:
|
|||||||
- ./fission-bundle/build.sh
|
- ./fission-bundle/build.sh
|
||||||
- hack/verify-gofmt.sh
|
- hack/verify-gofmt.sh
|
||||||
- hack/runtests.sh
|
- hack/runtests.sh
|
||||||
|
- test/build_and_test.sh
|
||||||
|
|||||||
Executable
+20
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if [ ! -f ${HOME}/.kube/config ]
|
||||||
|
then
|
||||||
|
echo "Skipping end to end tests, no cluster credentials"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
source $(dirname $0)/test_utils.sh
|
||||||
|
|
||||||
|
IMAGE=gcr.io/fission-ci/fission-bundle
|
||||||
|
TAG=test
|
||||||
|
|
||||||
|
build_and_push_fission_bundle $IMAGE:$TAG
|
||||||
|
|
||||||
|
build_fission_cli
|
||||||
|
|
||||||
|
install_and_test $IMAGE $TAG
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
generate_test_id() {
|
|
||||||
echo $(date|md5|cut -c1-6)
|
|
||||||
}
|
|
||||||
|
|
||||||
helm_install_fission() {
|
|
||||||
id=$1
|
|
||||||
image=$2
|
|
||||||
imageTag=$3
|
|
||||||
controllerNodeport=$4
|
|
||||||
routerNodeport=$5
|
|
||||||
|
|
||||||
ns=f-$id
|
|
||||||
fns=f-func-$id
|
|
||||||
|
|
||||||
helmVars=image=$image,imageTag=$imageTag,namespace=$ns,functionNamespace=$fns,controllerPort=$controllerNodeport,routerPort=$routerNodeport
|
|
||||||
|
|
||||||
echo "Installing fission"
|
|
||||||
helm install \
|
|
||||||
--wait \
|
|
||||||
--name $id \
|
|
||||||
--set $helmVars \
|
|
||||||
../charts/fission
|
|
||||||
}
|
|
||||||
|
|
||||||
helm_uninstall_fission() {
|
|
||||||
echo "Uninstalling fission"
|
|
||||||
helm delete $1
|
|
||||||
}
|
|
||||||
|
|
||||||
run_all_tests() {
|
|
||||||
echo "Here is where our tests will go"
|
|
||||||
}
|
|
||||||
|
|
||||||
install_and_test() {
|
|
||||||
image=$1
|
|
||||||
imageTag=$2
|
|
||||||
|
|
||||||
controllerPort=31234
|
|
||||||
routerPort=31235
|
|
||||||
|
|
||||||
id=$(generate_test_id)
|
|
||||||
trap "helm_uninstall_fission $id" EXIT
|
|
||||||
helm_install_fission $id $image $imageTag $controllerPort $routerPort
|
|
||||||
|
|
||||||
run_all_tests $controllerPort $routerPort
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if [ $# -lt 2 ]
|
|
||||||
then
|
|
||||||
echo "Usage: test.sh [image] [imageTag]"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
install_and_test $1 $2
|
|
||||||
Executable
+130
@@ -0,0 +1,130 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test runner. Shell scripts that build fission CLI and server, push a
|
||||||
|
# docker image to GCR, deploy it on a cluster, and run tests against
|
||||||
|
# that deployment.
|
||||||
|
#
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ROOT=$(dirname $0)/..
|
||||||
|
|
||||||
|
build_and_push_fission_bundle() {
|
||||||
|
image_tag=$1
|
||||||
|
|
||||||
|
pushd $ROOT/fission-bundle
|
||||||
|
./build.sh
|
||||||
|
docker build -t $image_tag .
|
||||||
|
gcloud docker -- push $image_tag
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
|
build_fission_cli() {
|
||||||
|
pushd $ROOT/fission
|
||||||
|
go build .
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
|
generate_test_id() {
|
||||||
|
echo $(date|md5|cut -c1-6)
|
||||||
|
}
|
||||||
|
|
||||||
|
helm_install_fission() {
|
||||||
|
id=$1
|
||||||
|
image=$2
|
||||||
|
imageTag=$3
|
||||||
|
controllerNodeport=$4
|
||||||
|
routerNodeport=$5
|
||||||
|
|
||||||
|
ns=f-$id
|
||||||
|
fns=f-func-$id
|
||||||
|
|
||||||
|
helmVars=image=$image,imageTag=$imageTag,functionNamespace=$fns,controllerPort=$controllerNodeport,routerPort=$routerNodeport,pullPolicy=alwaysPull
|
||||||
|
|
||||||
|
echo "Installing fission"
|
||||||
|
helm install \
|
||||||
|
--wait \
|
||||||
|
--name $id \
|
||||||
|
--set $helmVars \
|
||||||
|
--namespace $ns \
|
||||||
|
../charts/fission-all
|
||||||
|
}
|
||||||
|
|
||||||
|
wait_for_service() {
|
||||||
|
id=$1
|
||||||
|
svc=$2
|
||||||
|
|
||||||
|
ns=f-$id
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
ip=$(kubectl -n $ns get svc $svc -o jsonpath='{...ip}')
|
||||||
|
if [ ! -z $ip ]
|
||||||
|
then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo Waiting for service $svc...
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
wait_for_services() {
|
||||||
|
id=$1
|
||||||
|
|
||||||
|
wait_for_service $id controller
|
||||||
|
wait_for_service $id router
|
||||||
|
}
|
||||||
|
|
||||||
|
helm_uninstall_fission() {
|
||||||
|
if [ ! -z ${FISSION_TEST_SKIP_DELETE:+} ]
|
||||||
|
then
|
||||||
|
echo "Fission uninstallation skipped"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
echo "Uninstalling fission"
|
||||||
|
helm delete --purge $1
|
||||||
|
}
|
||||||
|
|
||||||
|
set_environment() {
|
||||||
|
id=$1
|
||||||
|
ns=f-$id
|
||||||
|
|
||||||
|
export FISSION_URL=http://$(kubectl -n $ns get svc controller -o jsonpath='{...ip}')
|
||||||
|
export FISSION_ROUTER=$(kubectl -n $ns get svc router -o jsonpath='{...ip}')
|
||||||
|
|
||||||
|
# set path to include cli
|
||||||
|
export PATH=$ROOT/fission:$PATH
|
||||||
|
}
|
||||||
|
|
||||||
|
run_all_tests() {
|
||||||
|
for file in $ROOT/test/tests/test_*.sh
|
||||||
|
do
|
||||||
|
echo ------- Running $file -------
|
||||||
|
$file
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
install_and_test() {
|
||||||
|
image=$1
|
||||||
|
imageTag=$2
|
||||||
|
|
||||||
|
controllerPort=31234
|
||||||
|
routerPort=31235
|
||||||
|
|
||||||
|
id=$(generate_test_id)
|
||||||
|
trap "helm_uninstall_fission $id" EXIT
|
||||||
|
helm_install_fission $id $image $imageTag $controllerPort $routerPort
|
||||||
|
|
||||||
|
wait_for_services $id
|
||||||
|
set_environment $id
|
||||||
|
|
||||||
|
run_all_tests
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# if [ $# -lt 2 ]
|
||||||
|
# then
|
||||||
|
# echo "Usage: test.sh [image] [imageTag]"
|
||||||
|
# exit 1
|
||||||
|
# fi
|
||||||
|
# install_and_test $1 $2
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# This doesn't test fission, just the test framework. It ensures we
|
||||||
|
# have the right environment, that's all.
|
||||||
|
|
||||||
|
echo "Test test, please ignore."
|
||||||
|
|
||||||
|
echo $FISSION_URL
|
||||||
|
echo $FISSION_ROUTER
|
||||||
|
which fission
|
||||||
Reference in New Issue
Block a user