name: Integration Tests

on:
  push:
    branches:
      - main
      - 'support/*'
  pull_request: {}
  schedule:
    - cron: '57 3 * * *'

jobs:
  integration-tests:
    strategy:
      fail-fast: false
      matrix:
        database:
          - name: mysql
            pretty_name: MySQL
          - name: pgsql
            pretty_name: PostgreSQL

    name: ${{ matrix.database.pretty_name }}
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Setup Go
        uses: actions/setup-go@v4
        with:
          go-version: 1.x
      - name: Build Icinga DB
        run: go build ./cmd/icingadb
        env:
          CGO_ENABLED: 0
      - name: Build Integration Tests
        run: go test -o ../icingadb-test -c .
        working-directory: tests/
      - name: Run Integration Tests
        run: ./icingadb-test -icingatesting.debuglog debug.log -test.v
        env:
          ICINGADB_TESTS_DATABASE_TYPE: ${{ matrix.database.name }}
          ICINGA_TESTING_ICINGADB_BINARY: ${{ github.workspace }}/icingadb
          ICINGA_TESTING_ICINGADB_SCHEMA_MYSQL: ${{ github.workspace }}/schema/mysql/schema.sql
          ICINGA_TESTING_ICINGADB_SCHEMA_PGSQL: ${{ github.workspace }}/schema/pgsql/schema.sql
      - name: Compress Debug Log
        if: ${{ always() }}
        run: xz -9 debug.log
      - name: Upload Debug Log
        if: ${{ always() }}
        uses: actions/upload-artifact@v2
        with:
          name: ${{ matrix.database.name }}-debug.log.xz
          path: debug.log.xz
          retention-days: 1
