71 lines
1.8 KiB
Bash
Executable File
71 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#
|
|
# Create a function and trigger it using NATS
|
|
# To run this on Minikube, uncomment line 18
|
|
|
|
set -euo pipefail
|
|
set +x
|
|
|
|
ROOT=$(dirname $0)/../..
|
|
DIR=$(dirname $0)
|
|
|
|
clusterID="fissionMQTrigger"
|
|
topic="foo.bar"
|
|
resptopic="foo.foo"
|
|
errortopic="foo.error"
|
|
maxretries=1
|
|
# FISSION_NATS_STREAMING_URL="http://defaultFissionAuthToken@$(minikube ip):4222"
|
|
expectedRespOutput="[foo.error]: 'Hello, World!'"
|
|
|
|
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
|
|
|
|
#
|
|
# 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 error 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=$(go run $DIR/stan-sub.go --last -s $FISSION_NATS_STREAMING_URL -c $clusterID -id clientSub $errortopic 2>&1)
|
|
|
|
log "Subscriber received response: $response"
|
|
|
|
fission mqtrigger delete --name $mqt
|
|
# kubectl delete functions --all
|
|
|
|
if [[ "$response" != "$expectedRespOutput" ]]; then
|
|
log "$response is not equal to $expectedRespOutput"
|
|
exit 1
|
|
else
|
|
log "Responses match."
|
|
fi |