diff --git a/.travis.yml b/.travis.yml index b052eb83..0d272803 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,10 +14,8 @@ install: - sudo echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list - curl https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg | sudo apt-key add - - sudo apt-get update && sudo apt-get install -y bazel - - sudo pip install cpp-coveralls + - wget https://dl.influxdata.com/telegraf/releases/telegraf_1.0.1_amd64.deb + - sudo dpkg -i telegraf_1.0.1_amd64.deb script: - - bazel build tests:prometheus_test --collect_code_coverage - - mkdir gcov - - cd gcov - - ../bazel-bin/tests/prometheus_test - - cpp-coveralls --exclude external --exclude tests --exclude /usr -b ../bazel-build --gcov . -t ${COVERALLS_TOKEN} + - bazel test --test_output=all //tests:prometheus_test + - bazel test --test_output=all //tests/integration:scrape_test diff --git a/tests/BUILD b/tests/BUILD index 7cbed192..7060041d 100644 --- a/tests/BUILD +++ b/tests/BUILD @@ -6,9 +6,3 @@ cc_test( "//lib:prometheus-cpp"], linkstatic = 1, ) - -cc_binary( - name = "sample_server", - srcs = ["sample_server.cc"], - deps = ["//lib:prometheus-cpp"], -) diff --git a/tests/integration/BUILD b/tests/integration/BUILD new file mode 100644 index 00000000..bcd04a1e --- /dev/null +++ b/tests/integration/BUILD @@ -0,0 +1,12 @@ +cc_binary( + name = "sample_server", + srcs = ["sample_server.cc"], + deps = ["//lib:prometheus-cpp"], +) + +sh_test( + name = "scrape_test", + srcs = ["scrape.sh"], + size = "small", + data = ["scrape.conf", "sample_server"], +) diff --git a/tests/sample_server.cc b/tests/integration/sample_server.cc similarity index 100% rename from tests/sample_server.cc rename to tests/integration/sample_server.cc diff --git a/tests/integration/scrape.conf b/tests/integration/scrape.conf new file mode 100644 index 00000000..2acc7be5 --- /dev/null +++ b/tests/integration/scrape.conf @@ -0,0 +1,5 @@ +[[inputs.prometheus]] + # An array of urls to scrape metrics from. + urls = ["http://localhost:8080/metrics"] +[[outputs.file]] + files = ["stdout"] diff --git a/tests/integration/scrape.sh b/tests/integration/scrape.sh new file mode 100755 index 00000000..b5103eac --- /dev/null +++ b/tests/integration/scrape.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +telegraf=$(which telegraf) +if [ ! -x "$telegraf" ] ; then + echo "telegraf must be in path for this test to run" + exit 1 +fi + +tests/integration/sample_server& +sample_server_pid=$! +sleep 1 +telegraf_output="$(telegraf -test -config tests/integration/scrape.conf)" +telegraf_run_result=$? +kill -9 $sample_server_pid + +if [ $telegraf_run_result -ne 0 ] ; then + exit $telegraf_run_result +fi + +if [[ ! $telegraf_output == *"time_running_seconds"* ]] ; then + echo "Could not find time_running_seconds in exposed metrics:" + echo "${telegraf_run_output}" + exit 1 +fi + +exit 0