run-emqx.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #!/bin/bash
  2. set -euxo pipefail
  3. # _EMQX_DOCKER_IMAGE_TAG is shared with docker-compose file
  4. export _EMQX_DOCKER_IMAGE_TAG="$1"
  5. _EMQX_TEST_DB_BACKEND="${2:-${_EMQX_TEST_DB_BACKEND:-mnesia}}"
  6. case "$_EMQX_TEST_DB_BACKEND" in
  7. rlog)
  8. CLUSTER_OVERRIDES=".ci/docker-compose-file/docker-compose-emqx-cluster-rlog.override.yaml"
  9. ;;
  10. mnesia)
  11. CLUSTER_OVERRIDES=".ci/docker-compose-file/docker-compose-emqx-cluster-mnesia.override.yaml"
  12. ;;
  13. *)
  14. echo "ERROR: Unknown DB backend: ${_EMQX_TEST_DB_BACKEND}"
  15. exit 1
  16. ;;
  17. esac
  18. {
  19. echo "HOCON_ENV_OVERRIDE_PREFIX=EMQX_"
  20. echo "EMQX_MQTT__RETRY_INTERVAL=2s"
  21. echo "EMQX_MQTT__MAX_TOPIC_ALIAS=10"
  22. echo "EMQX_AUTHORIZATION__SOURCES=[]"
  23. echo "EMQX_AUTHORIZATION__NO_MATCH=allow"
  24. } >> .ci/docker-compose-file/conf.cluster.env
  25. is_node_up() {
  26. local node="$1"
  27. docker exec -i "$node" \
  28. bash -c "emqx eval \"['emqx@node1.emqx.io','emqx@node2.emqx.io'] = maps:get(running_nodes, ekka_cluster:info()).\"" > /dev/null 2>&1
  29. }
  30. is_node_listening() {
  31. local node="$1"
  32. docker exec -i "$node" \
  33. emqx ctl listeners | \
  34. grep -A6 'tcp:default' | \
  35. grep -qE 'running *: true'
  36. }
  37. is_cluster_up() {
  38. is_node_up node1.emqx.io && \
  39. is_node_up node2.emqx.io && \
  40. is_node_listening node1.emqx.io && \
  41. is_node_listening node2.emqx.io
  42. }
  43. docker-compose \
  44. -f .ci/docker-compose-file/docker-compose-emqx-cluster.yaml \
  45. -f "$CLUSTER_OVERRIDES" \
  46. -f .ci/docker-compose-file/docker-compose-python.yaml \
  47. up -d
  48. while ! is_cluster_up; do
  49. echo "['$(date -u +"%Y-%m-%dT%H:%M:%SZ")']:waiting emqx";
  50. sleep 5;
  51. done