| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| name: Integration |
| |
| on: |
| pull_request: |
| branches: |
| - main |
| paths: |
| - "adbc.h" |
| - "c/**" |
| - "ci/**" |
| - "go/**" |
| - "python/**" |
| - ".github/workflows/integration.yml" |
| push: |
| paths: |
| - "adbc.h" |
| - "c/**" |
| - "ci/**" |
| - "go/**" |
| - "python/**" |
| - ".github/workflows/integration.yml" |
| |
| concurrency: |
| group: ${{ github.repository }}-${{ github.ref }}-${{ github.workflow }} |
| cancel-in-progress: true |
| |
| permissions: |
| contents: read |
| |
| env: |
| # Increment this to reset cache manually |
| CACHE_NUMBER: "0" |
| |
| jobs: |
| flightsql: |
| name: "FlightSQL Integration Tests (Dremio and SQLite)" |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v3 |
| with: |
| fetch-depth: 0 |
| persist-credentials: false |
| - name: Get Date |
| id: get-date |
| shell: bash |
| run: | |
| echo "today=$(/bin/date -u '+%Y%m%d')" >> $GITHUB_OUTPUT |
| - name: Cache Conda |
| uses: actions/cache/restore@v3 |
| with: |
| path: ~/conda_pkgs_dir |
| key: conda-${{ runner.os }}-${{ steps.get-date.outputs.today }}-${{ env.CACHE_NUMBER }}-${{ hashFiles('ci/**') }} |
| - uses: conda-incubator/setup-miniconda@v2 |
| with: |
| miniforge-variant: Mambaforge |
| miniforge-version: latest |
| use-only-tar-bz2: false |
| use-mamba: true |
| - name: Install Dependencies |
| shell: bash -l {0} |
| run: | |
| mamba install -c conda-forge \ |
| --file ci/conda_env_cpp.txt \ |
| --file ci/conda_env_python.txt |
| - uses: actions/setup-go@v3 |
| with: |
| go-version: 1.18.6 |
| check-latest: true |
| cache: true |
| cache-dependency-path: go/adbc/go.sum |
| - name: Start SQLite server and Dremio |
| shell: bash -l {0} |
| run: | |
| docker-compose up -d golang-sqlite-flightsql dremio dremio-init |
| |
| - name: Build FlightSQL Driver |
| shell: bash -l {0} |
| env: |
| BUILD_ALL: "0" |
| BUILD_DRIVER_FLIGHTSQL: "1" |
| run: | |
| ./ci/scripts/cpp_build.sh "$(pwd)" "$(pwd)/build" |
| - name: Test FlightSQL Driver against Dremio and SQLite |
| shell: bash -l {0} |
| env: |
| BUILD_ALL: "0" |
| BUILD_DRIVER_FLIGHTSQL: "1" |
| ADBC_DREMIO_FLIGHTSQL_URI: "grpc+tcp://localhost:32010" |
| ADBC_DREMIO_FLIGHTSQL_USER: "dremio" |
| ADBC_DREMIO_FLIGHTSQL_PASS: "dremio123" |
| ADBC_SQLITE_FLIGHTSQL_URI: "grpc+tcp://localhost:8080" |
| run: | |
| ./ci/scripts/cpp_build.sh "$(pwd)" "$(pwd)/build" |
| ./ci/scripts/cpp_test.sh "$(pwd)/build" |
| - name: Build Python Flight SQL driver |
| shell: bash -l {0} |
| env: |
| BUILD_ALL: "0" |
| BUILD_DRIVER_FLIGHTSQL: "1" |
| BUILD_DRIVER_MANAGER: "1" |
| run: | |
| ./ci/scripts/python_build.sh "$(pwd)" "$(pwd)/build" |
| - name: Test Python Flight SQL driver against Dremio |
| shell: bash -l {0} |
| env: |
| BUILD_ALL: "0" |
| BUILD_DRIVER_FLIGHTSQL: "1" |
| ADBC_DREMIO_FLIGHTSQL_URI: "grpc+tcp://localhost:32010" |
| ADBC_DREMIO_FLIGHTSQL_USER: "dremio" |
| ADBC_DREMIO_FLIGHTSQL_PASS: "dremio123" |
| run: | |
| ./ci/scripts/python_test.sh "$(pwd)" "$(pwd)/build" |
| - name: Stop SQLite server and Dremio |
| shell: bash -l {0} |
| run: | |
| docker-compose down |
| |
| postgresql: |
| name: "PostgreSQL Integration Tests" |
| runs-on: ubuntu-latest |
| services: |
| postgres: |
| image: postgres |
| env: |
| POSTGRES_DB: tempdb |
| POSTGRES_PASSWORD: password |
| options: >- |
| --health-cmd pg_isready |
| --health-interval 10s |
| --health-timeout 5s |
| --health-retries 5 |
| ports: |
| - 5432:5432 |
| steps: |
| - uses: actions/checkout@v3 |
| with: |
| fetch-depth: 0 |
| persist-credentials: false |
| - name: Get Date |
| id: get-date |
| shell: bash |
| run: | |
| echo "today=$(/bin/date -u '+%Y%m%d')" >> $GITHUB_OUTPUT |
| - name: Cache Conda |
| uses: actions/cache/restore@v3 |
| with: |
| path: ~/conda_pkgs_dir |
| key: conda-${{ runner.os }}-${{ steps.get-date.outputs.today }}-${{ env.CACHE_NUMBER }}-${{ hashFiles('ci/**') }} |
| - uses: conda-incubator/setup-miniconda@v2 |
| with: |
| miniforge-variant: Mambaforge |
| miniforge-version: latest |
| use-only-tar-bz2: false |
| use-mamba: true |
| - name: Install Dependencies |
| shell: bash -l {0} |
| run: | |
| mamba install -c conda-forge \ |
| --file ci/conda_env_cpp.txt \ |
| --file ci/conda_env_python.txt |
| - name: Build PostgreSQL Driver |
| shell: bash -l {0} |
| env: |
| BUILD_ALL: "0" |
| BUILD_DRIVER_POSTGRESQL: "1" |
| ADBC_USE_ASAN: "OFF" |
| ADBC_USE_UBSAN: "OFF" |
| run: | |
| ./ci/scripts/cpp_build.sh "$(pwd)" "$(pwd)/build" |
| - name: Test PostgreSQL Driver |
| shell: bash -l {0} |
| env: |
| BUILD_ALL: "0" |
| BUILD_DRIVER_POSTGRESQL: "1" |
| ADBC_POSTGRESQL_TEST_URI: "postgres://localhost:5432/postgres?user=postgres&password=password" |
| run: | |
| ./ci/scripts/cpp_test.sh "$(pwd)/build" |
| |
| - name: Build Python PostgreSQL Driver |
| shell: bash -l {0} |
| env: |
| BUILD_ALL: "0" |
| BUILD_DRIVER_POSTGRESQL: "1" |
| run: | |
| ./ci/scripts/python_build.sh "$(pwd)" "$(pwd)/build" |
| - name: Test Python PostgreSQL Driver |
| shell: bash -l {0} |
| env: |
| BUILD_ALL: "0" |
| BUILD_DRIVER_POSTGRESQL: "1" |
| ADBC_POSTGRESQL_TEST_URI: "postgres://localhost:5432/postgres?user=postgres&password=password" |
| run: | |
| ./ci/scripts/python_test.sh "$(pwd)" "$(pwd)/build" |
| |
| snowflake: |
| name: "Snowflake Integration Tests" |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v3 |
| with: |
| fetch-depth: 0 |
| persist-credentials: false |
| - name: Get Date |
| id: get-date |
| shell: bash |
| run: | |
| echo "today=$(/bin/date -u '+%Y%m%d')" >> $GITHUB_OUTPUT |
| - name: Cache Conda |
| uses: actions/cache/restore@v3 |
| with: |
| path: ~/conda_pkgs_dir |
| key: conda-${{ runner.os }}-${{ steps.get-date.outputs.today }}-${{ env.CACHE_NUMBER }}-${{ hashFiles('ci/**') }} |
| - uses: conda-incubator/setup-miniconda@v2 |
| with: |
| miniforge-variant: Mambaforge |
| miniforge-version: latest |
| use-only-tar-bz2: false |
| use-mamba: true |
| - name: Install Dependencies |
| shell: bash -l {0} |
| run: | |
| mamba install -c conda-forge \ |
| --file ci/conda_env_cpp.txt \ |
| --file ci/conda_env_python.txt |
| - uses: actions/setup-go@v3 |
| with: |
| go-version: 1.18.6 |
| check-latest: true |
| cache: true |
| cache-dependency-path: go/adbc/go.sum |
| - name: Build and Test Snowflake Driver |
| shell: bash -l {0} |
| env: |
| BUILD_ALL: "0" |
| BUILD_DRIVER_SNOWFLAKE: "1" |
| ADBC_SNOWFLAKE_URI: ${{ secrets.SNOWFLAKE_URI }} |
| run: | |
| ./ci/scripts/cpp_build.sh "$(pwd)" "$(pwd)/build" |
| ./ci/scripts/cpp_test.sh "$(pwd)/build" |
| - name: Build and Test Snowflake Driver (Python) |
| shell: bash -l {0} |
| env: |
| BUILD_ALL: "0" |
| BUILD_DRIVER_SNOWFLAKE: "1" |
| ADBC_SNOWFLAKE_URI: ${{ secrets.SNOWFLAKE_URI }} |
| run: | |
| ./ci/scripts/python_build.sh "$(pwd)" "$(pwd)/build" |
| ./ci/scripts/python_test.sh "$(pwd)" "$(pwd)/build" |