#!/bin/bash set -eu -o pipefail readonly GO=${GO:-go} log() { local now now=$(date '+%Y/%m/%d %H:%M:%S') echo "[${now}]" "$@" } determine_flux_revision() { local version revision version=$("$GO" list -m -f '{{.Version}}' github.com/influxdata/flux) revision=$(printf "%s" "${version}" | cut -d- -f 3) if [[ ${revision} != "" ]]; then printf "%s\n" "${revision}" else printf "%s\n" "${version}" fi } download_flux_archive() { local revision revision=$(determine_flux_revision) log "Downloading flux archive (${revision})..." curl -sLo flux.zip "https://github.com/influxdata/flux/archive/${revision}.zip" } build_test_harness() { log "Building test harness..." "$GO" build -o fluxtest ./internal/cmd/fluxtest-harness-influxdb } # Many tests targeting 3rd party databases are not yet supported in CI and should be filtered out. DB_INTEGRATION_WRITE_TESTS=integration_mqtt_pub,integration_sqlite_write_to,integration_vertica_write_to,integration_mssql_write_to,integration_mysql_write_to,integration_mariadb_write_to,integration_pg_write_to,integration_hdb_write_to DB_INTEGRATION_READ_TESTS=integration_sqlite_read_from_seed,integration_sqlite_read_from_nonseed,integration_vertica_read_from_seed,integration_vertica_read_from_nonseed,integration_mssql_read_from_seed,integration_mssql_read_from_nonseed,integration_mariadb_read_from_seed,integration_mariadb_read_from_nonseed,integration_mysql_read_from_seed,integration_mysql_read_from_nonseed,integration_pg_read_from_seed,integration_pg_read_from_nonseed,integration_hdb_read_from_seed,integration_hdb_read_from_nonseed DB_INTEGRATION_INJECTION_TESTS="integration_sqlite_injection,integration_hdb_injection,integration_pg_injection,integration_mysql_injection,integration_mariadb_injection,integration_mssql_injection" DB_TESTS="${DB_INTEGRATION_WRITE_TESTS},${DB_INTEGRATION_READ_TESTS},${DB_INTEGRATION_INJECTION_TESTS}" run_integration_tests() { log "Running integration tests..." ./fluxtest -v -p flux.zip -p flux/stdlib --skip "$DB_TESTS" } cleanup() { rm -f flux.zip fluxtest } main() { build_test_harness download_flux_archive run_integration_tests cleanup } main