From b000267d866559d4bffca635a3f24969f539fd8d Mon Sep 17 00:00:00 2001 From: Antoine Cotten Date: Wed, 4 Mar 2020 22:47:21 +0100 Subject: [PATCH] travis: Move reusable functions to bash lib --- .travis.yml | 6 +-- .travis/lib/testing.sh | 50 +++++++++++++++++++ .travis/{run-tests.sh => run-tests-core.sh} | 53 ++------------------- README.md | 4 +- 4 files changed, 59 insertions(+), 54 deletions(-) create mode 100755 .travis/lib/testing.sh rename .travis/{run-tests.sh => run-tests-core.sh} (62%) diff --git a/.travis.yml b/.travis.yml index 7c07ffd15f..1825628504 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,12 +24,12 @@ before_script: - sed -i 's/\(password =>\) "changeme"/\1 "testpasswd"/g' logstash/pipeline/logstash.conf script: - # Compose + # Core Elastic Stack - docker-compose up -d elasticsearch - sleep 30 - .travis/elasticsearch-setup-passwords.exp - docker-compose up -d - - .travis/run-tests.sh + - .travis/run-tests-core.sh - docker-compose ps - docker-compose logs elasticsearch - docker-compose logs kibana @@ -45,7 +45,7 @@ script: - .travis/elasticsearch-setup-passwords.exp swarm - docker service scale elk_kibana=1 --detach=false - docker service scale elk_logstash=1 --detach=false - - .travis/run-tests.sh swarm + - .travis/run-tests-core.sh swarm - docker stack services elk - docker service logs elk_elasticsearch - docker service logs elk_kibana diff --git a/.travis/lib/testing.sh b/.travis/lib/testing.sh new file mode 100755 index 0000000000..1900868e6c --- /dev/null +++ b/.travis/lib/testing.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + +function log { + echo -e "\n[+] $1\n" +} + +function poll_ready { + local svc=$1 + local url=$2 + + local -a args=( '-s' '-D-' '-w' '%{http_code}' "$url" ) + if [ "$#" -ge 3 ]; then + args+=( '-u' "$3" ) + fi + + local label + if [ "$MODE" == "swarm" ]; then + label="com.docker.swarm.service.name=elk_${svc}" + else + label="com.docker.compose.service=${svc}" + fi + + local -i result=1 + local cid + local output + + # retry for max 120s (24*5s) + for _ in $(seq 1 24); do + cid="$(docker ps -q -f label="$label")" + if [ -z "${cid:-}" ]; then + echo "Container exited" + return 1 + fi + + set +e + output="$(curl "${args[@]}")" + set -e + if [ "${output: -3}" -eq 200 ]; then + result=0 + break + fi + + echo -n '.' + sleep 5 + done + + echo -e "\n${output::-3}" + + return $result +} diff --git a/.travis/run-tests.sh b/.travis/run-tests-core.sh similarity index 62% rename from .travis/run-tests.sh rename to .travis/run-tests-core.sh index b1d39587bb..c68cf9415f 100755 --- a/.travis/run-tests.sh +++ b/.travis/run-tests-core.sh @@ -3,67 +3,22 @@ set -eu set -o pipefail -function log { - echo -e "\n[+] $1\n" -} -function poll_ready { - local svc=$1 - local url=$2 +source "$(dirname ${BASH_SOURCE[0]})/lib/testing.sh" - local -a args=( '-s' '-D-' '-w' '%{http_code}' "$url" ) - if [ "$#" -ge 3 ]; then - args+=( '-u' "$3" ) - fi - - local label - if [ "$MODE" == "swarm" ]; then - label="com.docker.swarm.service.name=elk_${svc}" - else - label="com.docker.compose.service=${svc}" - fi - - local -i result=1 - local cid - local output - - # retry for max 120s (24*5s) - for _ in $(seq 1 24); do - cid="$(docker ps -q -f label="$label")" - if [ -z "${cid:-}" ]; then - echo "Container exited" - return 1 - fi - - set +e - output="$(curl "${args[@]}")" - set -e - if [ "${output: -3}" -eq 200 ]; then - result=0 - break - fi - - echo -n '.' - sleep 5 - done - - echo -e "\n${output::-3}" - - return $result -} declare MODE="" if [ "$#" -ge 1 ]; then MODE=$1 fi -log 'Waiting for Elasticsearch readiness' +log 'Waiting for readiness of Elasticsearch' poll_ready elasticsearch 'http://localhost:9200/' 'elastic:testpasswd' -log 'Waiting for Kibana readiness' +log 'Waiting for readiness of Kibana' poll_ready kibana 'http://localhost:5601/api/status' 'kibana:testpasswd' -log 'Waiting for Logstash readiness' +log 'Waiting for readiness of Logstash' poll_ready logstash 'http://localhost:9600/_node/pipelines/main?pretty' log 'Creating Logstash index pattern in Kibana' diff --git a/README.md b/README.md index 9312e88ddc..9c01c73098 100644 --- a/README.md +++ b/README.md @@ -59,8 +59,8 @@ Other available stack variants: ### Host setup -* [Docker Engine](https://docs.docker.com/install/) version **17.05+** or newer -* [Docker Compose](https://docs.docker.com/compose/install/) version **1.20.0+** or newer +* [Docker Engine](https://docs.docker.com/install/) version **17.05** or newer +* [Docker Compose](https://docs.docker.com/compose/install/) version **1.20.0** or newer * 1.5 GB of RAM > :information_source: Especially on Linux, make sure your user has the [required permissions][linux-postinstall] to