Add huge response body test (#1437)

This commit is contained in:
Ta-Ching Chen
2019-11-26 12:50:41 +08:00
committed by GitHub
parent ca28f962d4
commit e38baeec36
4 changed files with 8058 additions and 1 deletions
+2 -1
View File
@@ -536,7 +536,8 @@ run_all_tests() {
$ROOT/test/tests/test_environments/test_tensorflow_serving_env.sh \
$ROOT/test/tests/test_environments/test_go_env.sh \
$ROOT/test/tests/mqtrigger/nats/test_mqtrigger.sh \
$ROOT/test/tests/mqtrigger/nats/test_mqtrigger_error.sh
$ROOT/test/tests/mqtrigger/nats/test_mqtrigger_error.sh \
$ROOT/test/tests/test_huge_response/test_huge_response.sh
FAILURES=$?
# FIXME: run tests with newdeploy one by one.
File diff suppressed because it is too large Load Diff
+16
View File
@@ -0,0 +1,16 @@
package main
import (
"io/ioutil"
"net/http"
)
// Handler is the entry point for this fission function
func Handler(w http.ResponseWriter, r *http.Request) {
bytes, err := ioutil.ReadAll(r.Body)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Write(bytes)
}
+73
View File
@@ -0,0 +1,73 @@
#!/bin/bash
set -euo pipefail
source $(dirname $0)/../../utils.sh
TEST_ID=$(generate_test_id)
echo "TEST_ID = $TEST_ID"
ROOT=$(dirname $0)/../../..
pushd $ROOT/test/tests/test_huge_response
cleanup() {
clean_resource_by_id $TEST_ID
rm -rf response.json
popd
}
retryPost() {
local fn=$1
log "Send huge JSON request body"
set +e
while true; do
curl -X POST http://$FISSION_ROUTER/$fn \
-H "Content-Type: application/json" \
--data-binary "@generated.json" > response.json
difftext=$(diff generated.json response.json)
if [ -z "$difftext" ]; then
break
else
echo "Receive truncated body"
sleep 1
fi
done
set -e
}
export -f retryPost
if [ -z "${TEST_NOCLEANUP:-}" ]; then
trap cleanup EXIT
else
log "TEST_NOCLEANUP is set; not cleaning up test artifacts afterwards."
fi
env=go-$TEST_ID
fn_poolmgr=hello-go-poolmgr-$TEST_ID
log "Creating environment for Golang"
fission env create --name $env --image $GO_RUNTIME_IMAGE --builder $GO_BUILDER_IMAGE --period 5
timeout 90 bash -c "wait_for_builder $env"
pkgName=$(generate_test_id)
fission package create --name $pkgName --src hello.go --env $env
# wait for build to finish at most 90s
timeout 90 bash -c "waitBuild $pkgName"
log "Creating function for Golang"
fission fn create --name $fn_poolmgr --env $env --pkg $pkgName --entrypoint Handler
log "Creating route for function"
fission route create --name $fn_poolmgr --function $fn_poolmgr --url /$fn_poolmgr --method POST
log "Waiting for router & pools to catch up"
sleep 5
log "Testing function"
timeout 20 bash -c "retryPost $fn_poolmgr"
log "Test PASSED"