diff --git a/grpc.kafka.fanout/README.md b/grpc.kafka.fanout/README.md index 58445a0a..1aa45fde 100644 --- a/grpc.kafka.fanout/README.md +++ b/grpc.kafka.fanout/README.md @@ -29,14 +29,20 @@ docker compose up -d Prepare protobuf message to send to Kafka topic. ```bash -echo 'message: "test"' | protoc --encode=example.FanoutMessage proto/fanout.proto > binary.data +echo 'message: "test"' | protoc --encode=example.FanoutMessage fanout.proto > binary.data +``` + +Copy the binary file into the `kafkacat` service. + +```bash +docker compose -p zilla-grpc-kafka-fanout cp binary.data kafkacat:/tmp/binary.data ``` Produce protobuf message to Kafka topic, repeat to produce multiple messages. ```bash docker compose -p zilla-grpc-kafka-fanout exec kafkacat \ - kafkacat -P -b kafka:29092 -t messages -k -e ./binary.data + kafkacat -P -b kafka:29092 -t messages -k -e /tmp/binary.data ``` Stream messages via server streaming rpc. @@ -95,7 +101,7 @@ Then produce another protobuf message to Kafka, repeat to produce multiple messa ```bash docker compose -p zilla-grpc-kafka-fanout exec kafkacat \ - kafkacat -P -b kafka:29092 -t messages -k -e ./binary.data + kafkacat -P -b kafka:29092 -t messages -k -e /tmp/binary.data ``` The reliable streaming client will recover and zilla deliver only the new message. diff --git a/grpc.kafka.fanout/compose.yaml b/grpc.kafka.fanout/compose.yaml index be0f5232..52b7036c 100644 --- a/grpc.kafka.fanout/compose.yaml +++ b/grpc.kafka.fanout/compose.yaml @@ -57,8 +57,7 @@ services: command: - | echo -e "Creating kafka topic"; - /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --create --if-not-exists --topic items-requests - /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --create --if-not-exists --topic items-responses --config cleanup.policy=compact + /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --create --if-not-exists --topic messages echo -e "Successfully created the following topics:"; /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --list; diff --git a/grpc.kafka.proxy/compose.yaml b/grpc.kafka.proxy/compose.yaml index 07bb4884..7ac30660 100644 --- a/grpc.kafka.proxy/compose.yaml +++ b/grpc.kafka.proxy/compose.yaml @@ -72,8 +72,8 @@ services: command: - | echo -e "Creating kafka topic"; - /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --create --if-not-exists --topic items-requests - /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --create --if-not-exists --topic items-responses --config cleanup.policy=compact + /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --create --if-not-exists --topic echo-requests + /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --create --if-not-exists --topic echo-responses echo -e "Successfully created the following topics:"; /opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server kafka:29092 --list; diff --git a/grpc.kafka.proxy/test.sh b/grpc.kafka.proxy/test.sh new file mode 100755 index 00000000..c41daad9 --- /dev/null +++ b/grpc.kafka.proxy/test.sh @@ -0,0 +1,115 @@ +#!/bin/sh +set -x + +EXIT=0 + +# GIVEN +PORT="7151" +INPUT='{"message":"Hello World"}' +EXPECTED='{ + "message": "Hello World" +}' +echo \# Testing grpc.kafka.proxy/grpc.examples.echo.Echo.UnaryEcho +echo PORT="$PORT" +echo INPUT="$INPUT" +echo EXPECTED="$EXPECTED" +echo + +# WHEN +OUTPUT=$(docker run --rm -v ./echo.proto:/echo.proto fullstorydev/grpcurl -plaintext -proto echo.proto -d "$INPUT" host.docker.internal:$PORT grpc.examples.echo.Echo.UnaryEcho) +RESULT=$? +echo RESULT="$RESULT" +# THEN +echo OUTPUT="$OUTPUT" +echo EXPECTED="$EXPECTED" +echo +if [ "$RESULT" -eq 0 ] && [ "$OUTPUT" = "$EXPECTED" ]; then + echo ✅ +else + echo ❌ + EXIT=1 +fi + +# GIVEN +PORT="7151" +INPUT='{"message":"Hello World"}' +EXPECTED='{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +}' +echo \# Testing grpc.kafka.proxy/grpc.examples.echo.Echo.ServerStreamingEcho +echo PORT="$PORT" +echo INPUT="$INPUT" +echo EXPECTED="$EXPECTED" +echo + +# WHEN +OUTPUT=$(docker run --rm -v ./echo.proto:/echo.proto fullstorydev/grpcurl -plaintext -proto echo.proto -d "$INPUT" host.docker.internal:$PORT grpc.examples.echo.Echo.ServerStreamingEcho) +RESULT=$? +echo RESULT="$RESULT" +# THEN +echo OUTPUT="$OUTPUT" +echo EXPECTED="$EXPECTED" +echo +if [ "$RESULT" -eq 0 ] && [ "$OUTPUT" = "$EXPECTED" ]; then + echo ✅ +else + echo ❌ + EXIT=1 +fi + + +# GIVEN +PORT="7151" +INPUT='{"message":"Hello World"}' +EXPECTED='{ + "message": "Hello World" +}' +echo \# Testing grpc.kafka.proxy/grpc.examples.echo.Echo.BidirectionalStreamingEcho +echo PORT="$PORT" +echo INPUT="$INPUT" +echo EXPECTED="$EXPECTED" +echo + +# WHEN +OUTPUT=$(docker run --rm -v ./echo.proto:/echo.proto fullstorydev/grpcurl -plaintext -proto echo.proto -d "$INPUT" host.docker.internal:$PORT grpc.examples.echo.Echo.BidirectionalStreamingEcho) +RESULT=$? +echo RESULT="$RESULT" +# THEN +echo OUTPUT="$OUTPUT" +echo EXPECTED="$EXPECTED" +echo +if [ "$RESULT" -eq 0 ] && [ "$OUTPUT" = "$EXPECTED" ]; then + echo ✅ +else + echo ❌ + EXIT=1 +fi + +exit $EXIT diff --git a/grpc.proxy/README.md b/grpc.proxy/README.md index 6a1aa5c4..6aa9b7a6 100644 --- a/grpc.proxy/README.md +++ b/grpc.proxy/README.md @@ -28,7 +28,7 @@ docker compose up -d Echo `{"message":"Hello World"}` message via unary rpc. ```bash -grpcurl -insecure -proto echo.proto -d '{"message":"Hello World"}' localhost:7151 grpc.examples.echo.Echo.UnaryEcho +grpcurl -insecure -proto echo.proto -d '{"message":"Hello World"}' localhost:7153 grpc.examples.echo.Echo.UnaryEcho ``` output: @@ -44,7 +44,7 @@ output: Echo messages via bidirectional streaming rpc. ```bash -grpcurl -insecure -proto echo.proto -d @ localhost:7151 grpc.examples.echo.Echo.BidirectionalStreamingEcho +grpcurl -insecure -proto echo.proto -d @ localhost:7153 grpc.examples.echo.Echo.BidirectionalStreamingEcho ``` Paste below message. diff --git a/grpc.proxy/test.sh b/grpc.proxy/test.sh new file mode 100755 index 00000000..a94a08ef --- /dev/null +++ b/grpc.proxy/test.sh @@ -0,0 +1,91 @@ +#!/bin/sh +set -x + +EXIT=0 + +# GIVEN +PORT="7153" +INPUT='{"message":"Hello World"}' +EXPECTED='{ + "message": "Hello World" +}' +echo \# Testing grpc.kafka.proxy/grpc.examples.echo.Echo.UnaryEcho +echo PORT="$PORT" +echo INPUT="$INPUT" +echo EXPECTED="$EXPECTED" +echo + +# WHEN +OUTPUT=$(docker run --rm -v ./echo.proto:/echo.proto fullstorydev/grpcurl -insecure -proto echo.proto -d "$INPUT" host.docker.internal:$PORT grpc.examples.echo.Echo.UnaryEcho) +RESULT=$? +echo RESULT="$RESULT" +# THEN +echo OUTPUT="$OUTPUT" +echo EXPECTED="$EXPECTED" +echo +if [ "$RESULT" -eq 0 ] && [ "$OUTPUT" = "$EXPECTED" ]; then + echo ✅ +else + echo ❌ + EXIT=1 +fi + +# GIVEN +PORT="7153" +INPUT='{"message":"Hello World"}' +EXPECTED='{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +} +{ + "message": "Hello World" +}' +echo \# Testing grpc.kafka.proxy/grpc.examples.echo.Echo.ServerStreamingEcho +echo PORT="$PORT" +echo INPUT="$INPUT" +echo EXPECTED="$EXPECTED" +echo + +# WHEN +OUTPUT=$(docker run --rm -v ./echo.proto:/echo.proto fullstorydev/grpcurl -insecure -proto echo.proto -d "$INPUT" host.docker.internal:$PORT grpc.examples.echo.Echo.ServerStreamingEcho) +RESULT=$? +echo RESULT="$RESULT" +# THEN +echo OUTPUT="$OUTPUT" +echo EXPECTED="$EXPECTED" +echo +if [ "$RESULT" -eq 0 ] && [ "$OUTPUT" = "$EXPECTED" ]; then + echo ✅ +else + echo ❌ + EXIT=1 +fi + +# TODO remove once fixed +echo '❌ Tested on main. and does not work with described instructions' +EXIT=1 + +exit $EXIT diff --git a/http.filesystem/README.md b/http.filesystem/README.md index 8cae602d..10f3ffa9 100644 --- a/http.filesystem/README.md +++ b/http.filesystem/README.md @@ -4,9 +4,7 @@ Listens on http port `7114` and serves files from the Zilla container's `/var/ww ## Requirements -- jq, nc - Compose compatible host -- curl ## Setup @@ -41,23 +39,6 @@ output: ``` -```bash -curl --cacert test-ca.crt http://localhost:7114/index.html -``` - -output: - -```html - - - Welcome to Zilla! - - -

Welcome to Zilla!

- - -``` - ## Teardown The `teardown.sh` script will remove any resources created. diff --git a/http.filesystem/test.sh b/http.filesystem/test.sh new file mode 100755 index 00000000..a4dab14c --- /dev/null +++ b/http.filesystem/test.sh @@ -0,0 +1,37 @@ +#!/bin/sh +set -x + +EXIT=0 + +# GIVEN +PORT="7114" +EXPECTED=' + +Welcome to Zilla! + + +

Welcome to Zilla!

+ +' +echo \# Testing http.filesystem/ +echo PORT="$PORT" +echo EXPECTED="$EXPECTED" +echo + +# WHEN +OUTPUT=$(curl http://localhost:$PORT/index.html) +RESULT=$? +echo RESULT="$RESULT" + +# THEN +echo OUTPUT="$OUTPUT" +echo EXPECTED="$EXPECTED" +echo +if [ "$RESULT" -eq 0 ] && [ "$OUTPUT" = "$EXPECTED" ]; then + echo ✅ +else + echo ❌ + EXIT=1 +fi + +exit $EXIT diff --git a/http.json.schema/test.sh b/http.json.schema/test.sh new file mode 100755 index 00000000..6a1be00e --- /dev/null +++ b/http.json.schema/test.sh @@ -0,0 +1,62 @@ +#!/bin/sh +set -x + +EXIT=0 + +# GIVEN +PORT="7114" +EXPECTED='{ + "id": 42, + "status": "Active" +}' +echo \# Testing http.json.schema/valid.json +echo PORT="$PORT" +echo EXPECTED="$EXPECTED" +echo + +# WHEN +OUTPUT=$(curl http://localhost:$PORT/valid.json) +RESULT=$? +echo RESULT="$RESULT" + +# THEN +echo OUTPUT="$OUTPUT" +echo EXPECTED="$EXPECTED" +echo +if [ "$RESULT" -eq 0 ] && [ "$OUTPUT" = "$EXPECTED" ]; then + echo ✅ +else + echo ❌ + EXIT=1 +fi + + +# GIVEN +PORT="7114" +EXPECTED="curl: (18) transfer closed with 37 bytes remaining to read" +echo \# Testing http.json.schema/invalid.json +echo PORT="$PORT" +echo EXPECTED="$EXPECTED" +echo + +# WHEN +OUTPUT=$(curl http://localhost:$PORT/invalid.json) +RESULT=$? +echo RESULT="$RESULT" + +# THEN +echo OUTPUT="$OUTPUT" +echo EXPECTED="$EXPECTED" +echo +if [ "$RESULT" -eq 0 ] && [ "$OUTPUT" = "$EXPECTED" ]; then + echo ✅ +else + echo ❌ + EXIT=1 +fi + +# TODO remove once fixed +echo '❌ Tested on main. and does not work with described instructions' +EXIT=1 + +exit $EXIT