#!/bin/ksh # # depends on jq - https://stedolan.github.io/jq/ PROTOCOL=http FQDN=127.0.0.1 #vm1-message-router #FQDN=10.208.128.229 PORT=3904 URL=$PROTOCOL://$FQDN:$PORT rm -f out/* mkdir -p out results() { # echo "[debug] compare $1 to $2" if [ $1 == $2 ] then echo -n "SUCCESS " else echo -n "FAIL ($1) " fi echo " :TEST $3 ($4)" } SUITE=0 SUITE=$((SUITE + 1)) echo "SUITE $SUITE: List topics" TN=0 TN=$((TN + 1)) TC=$SUITE.$TN expect=200 rc=`curl -s -w "%{http_code}" -o out/$TC.out $URL/topics` results $rc $expect $TC "list" StartTopicCount=`cat out/$TC.out | wc -l` SUITE=$((SUITE + 1)) echo echo "SUITE $SUITE: APIKEY authenticated topic" TOPIC=Topic-$$-$SUITE TN=0 TN=$((TN + 1)) TC=$SUITE.$TN OUT=out/$TC.out echo '{ "email": "no.email", "description": "request for direct response KEY" }' > key.req rc=`curl -s -w "%{http_code}" -o out/$TC.out -X POST -H "Content-Type: application/json" -d @key.req $URL/apiKeys/create` results $rc $expect $SUITE.$TN "gen apikey " TN=$((TN + 1)) TC=$SUITE.$TN SECRET=$(jq ".secret" $OUT | cut -f 2 -d \") KEY=$(jq ".key" $OUT | cut -f 2 -d \") TIME=`date --iso-8601=seconds` SIG=$(echo -n "$TIME" | openssl sha1 -hmac $SECRET -binary | openssl base64) xAUTH=$KEY:$SIG #echo "[debug] $SECRET $KEY $TIME $SIG $xAUTH" DATA=data.$TC.json echo "{ \"topicName\": \"$TOPIC\", \"topicDescription\": \"topic for test $TC\", \"partitionCount\": \"1\", \"replicationCount\": \"1\", \"transactionEnabled\": \"true\" }" > $DATA rc=`curl -s -w "%{http_code}" -o out/$TC.out -X POST -H "Content-Type: application/json" -H "X-CambriaAuth: $xAUTH" -H "X-CambriaDate: $TIME" -d @$DATA $URL/topics/create` results $rc $expect $SUITE.$TN "create topic" TN=$((TN + 1)) TC=$SUITE.$TN expect=200 rc=`curl -s -w "%{http_code}" -o out/$TC.out $URL/topics` results $rc $expect $TC "list " TopicCnt=`cat out/$TC.out | wc -l` results $TopicCnt $((StartTopicCount + 1)) $TC "topic count" TN=$((TN + 1)) TC=$SUITE.$TN expect=200 rc=`curl -s -w "%{http_code}" -o out/$TC.out $URL/topics/$TOPIC` results $rc $expect $TC "list $TOPIC" TN=$((TN + 1)) TC=$SUITE.$TN DATA=data.$TC.json echo "{ \"datestamp\": \"`date`\", \"appkey\": \"x100\", \"appval\": \"some value\" }" > $DATA rc=`curl -s -w "%{http_code}" -o out/$TC.out -X POST -H "Content-Type: application/json" -H "X-CambriaAuth: $xAUTH" -H "X-CambriaDate: $TIME" -d @$DATA $URL/events/$TOPIC` results $rc $expect $SUITE.$TN "pub APIKEY topic" TN=$((TN + 1)) TC=$SUITE.$TN rc=`curl -s -w "%{http_code}" -o out/$TC.out -X GET -H "Content-Type: application/json" -H "X-CambriaAuth: $xAUTH" -H "X-CambriaDate: $TIME" $URL/events/$TOPIC/g0/u1` results $rc $expect $SUITE.$TN "sub APIKEY topic" SUITE=$((SUITE + 1)) echo echo "SUITE $SUITE: anonymous topic" TOPIC=$$.$SUITE TN=0 TN=$((TN + 1)) TC=$SUITE.$TN DATA=data.$TC.txt echo "datestamp: `date`, key: $TC, value: this is a test " > $DATA expect=200 rc=`curl -s -w "%{http_code}" -o out/$TC.out -X POST -H "Content-Type: text/plain" -d @$DATA $URL/events/$TOPIC` results $rc $expect $SUITE.$TN "pub text/plain" TN=$((TN + 1)) TC=$SUITE.$TN expect=200 rc=`curl -s -w "%{http_code}" -o out/$TC.out $URL/events/$TOPIC/group1/u$$?timeout=1000` results $rc $expect $SUITE.$TN "sub text/plain" TN=$((TN + 1)) TC=$SUITE.$TN DATA=data.$TC.json echo "{ \"datestamp\": \"`date`\", \"key\": \"$TC\", \"value\": \"this is a test\" }" > $DATA expect=200 rc=`curl -s -w "%{http_code}" -o out/$TC.out -X POST -H "Content-Type: application/json" -d @$DATA $URL/events/$TOPIC` results $rc $expect $SUITE.$TN "pub json" TN=$((TN + 1)) TC=$SUITE.$TN expect=200 rc=`curl -s -w "%{http_code}" -o out/$TC.out $URL/events/$TOPIC/group1/u$$?timeout=1000` results $rc $expect $SUITE.$TN "sub json"