diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..58b2e77 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,32 @@ +sudo: false + +services: + - docker + +# Docker-compose setup +# https://docs.travis-ci.com/user/docker/ +env: + global: + - DOCKER_COMPOSE_VERSION=1.9.0 + - INTEGRATION_TEST_SCRIPT=test_metrics_up.sh + +before_install: + - sudo rm /usr/local/bin/docker-compose + - curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose + - chmod +x docker-compose + - sudo mv docker-compose /usr/local/bin + - chmod +x tests/test_metrics_up.sh + + +script: + # Test Airflow 1.8 with Python 2 + - cd tests/airflow1.8-py2 && docker-compose up -d + - ${TRAVIS_BUILD_DIR}/tests/${INTEGRATION_TEST_SCRIPT} + - docker-compose down + + # Test Airflow 1.9 with Python 3 + - mkdir ${TRAVIS_BUILD_DIR}/tests/airflow1.9-py3/airflow/logs + - chmod -R 777 ${TRAVIS_BUILD_DIR}/tests/airflow1.9-py3/airflow/logs + - cd ${TRAVIS_BUILD_DIR}/tests/airflow1.9-py3 && docker-compose up -d + - ${TRAVIS_BUILD_DIR}/tests/${INTEGRATION_TEST_SCRIPT} + - docker-compose down diff --git a/CHANGELOG.md b/CHANGELOG.md index 4457108..9179e73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog All notable changes to this project will be documented in this file. +## 0.4.2 - 2018-11-13 + +- [#13](https://github.com/epoch8/airflow-exporter/pull/20): Added test script and travis file by @hydrosquall +- [#13](https://github.com/epoch8/airflow-exporter/pull/27): fix run test in travis @cleverCat + ## 0.4.1 - 2018-11-13 - Fix [#24](https://github.com/epoch8/airflow-exporter/issues/24): Unsupported mime-type by @szyn diff --git a/tests/airflow1.8-py2/docker-compose.yml b/tests/airflow1.8-py2/docker-compose.yml index d8ae9ac..e99eaaa 100644 --- a/tests/airflow1.8-py2/docker-compose.yml +++ b/tests/airflow1.8-py2/docker-compose.yml @@ -1,6 +1,5 @@ version: '2' - services: exporter_postgresql: diff --git a/tests/test_metrics_up.sh b/tests/test_metrics_up.sh new file mode 100644 index 0000000..4c88b95 --- /dev/null +++ b/tests/test_metrics_up.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# Integration test that +# 1. Waits for Airflow to come up within 60 seconds +# 2. Ensures the Metrics endpoint returned a valid response +# Depends on Curl + +AIRFLOW_SLEEP_DURATION=90 # Number of seconds to wait for airflow to start +ADMIN_ENDPOINT="http://localhost:8080/admin/" +METRICS_ENDPOINT="http://localhost:8080/admin/metrics/" + +# Return nonzero status code if endpoint does not return 200 +CURL_FLAGS="--show-error --fail" + +echo "Waiting ${AIRFLOW_SLEEP_DURATION} seconds for Airflow to start before pinging" +sleep ${AIRFLOW_SLEEP_DURATION} +curl ${CURL_FLAGS} --silent --output /dev/null ${ADMIN_ENDPOINT} && echo 'Admin console is up' +curl ${CURL_FLAGS} ${METRICS_ENDPOINT} + +# TODO: validate the contents of the CURLed data