run.sh 969 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/env bash
  2. set -Eeuo pipefail
  3. # https://www.rabbitmq.com/tutorials/tutorial-one-python.html
  4. dir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
  5. serverImage="$1"
  6. clientImage="$("$dir/../image-name.sh" librarytest/rabbitmq-basics "$serverImage")"
  7. "$dir/../docker-build.sh" "$dir" "$clientImage" <<EOD
  8. FROM python:3.6-slim
  9. RUN pip install pika==0.11.0
  10. COPY dir/*.py /usr/local/bin/
  11. EOD
  12. cname="rabbitmq-container-$RANDOM-$RANDOM"
  13. cid="$(docker run -d --name "$cname" "$serverImage")"
  14. trap "docker rm -vf $cid > /dev/null" EXIT
  15. client() {
  16. docker run -i --rm --link "$cname":rabbitmq "$clientImage" "$@"
  17. }
  18. . "$dir/../../retry.sh" 'client testconn.py'
  19. test-send-recv() {
  20. local payload="$1"; shift
  21. client send.py "$payload"
  22. response="$(client receive.py)"
  23. if [ "$payload" != "$response" ]; then
  24. echo >&2 "error: expected '$payload' but got '$response' instead"
  25. return 1
  26. fi
  27. }
  28. test-send-recv 'hello'
  29. test-send-recv "$RANDOM"
  30. test-send-recv $'a\nb\nc\td'