From 74a3bf431028374d201203cea50b8425401ba5f6 Mon Sep 17 00:00:00 2001 From: Dave Date: Tue, 3 Sep 2024 13:11:26 +0200 Subject: [PATCH] move sources tests to dedicated file --- .github/workflows/test_common.yml | 4 +- .github/workflows/test_local_destinations.yml | 3 - .github/workflows/test_local_sources.yml | 99 +++++++++++++++++++ 3 files changed, 101 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/test_local_sources.yml diff --git a/.github/workflows/test_common.yml b/.github/workflows/test_common.yml index 6b79060f07..18c7e4bfde 100644 --- a/.github/workflows/test_common.yml +++ b/.github/workflows/test_common.yml @@ -87,11 +87,11 @@ jobs: run: poetry install --no-interaction --with sentry-sdk - run: | - poetry run pytest tests/common tests/normalize tests/reflection tests/sources tests/load/test_dummy_client.py tests/extract/test_extract.py tests/extract/test_sources.py tests/pipeline/test_pipeline_state.py + poetry run pytest tests/common tests/normalize tests/reflection tests/load/test_dummy_client.py tests/extract/test_extract.py tests/extract/test_sources.py tests/pipeline/test_pipeline_state.py if: runner.os != 'Windows' name: Run common tests with minimum dependencies Linux/MAC - run: | - poetry run pytest tests/common tests/normalize tests/reflection tests/sources tests/load/test_dummy_client.py tests/extract/test_extract.py tests/extract/test_sources.py tests/pipeline/test_pipeline_state.py -m "not forked" + poetry run pytest tests/common tests/normalize tests/reflection tests/load/test_dummy_client.py tests/extract/test_extract.py tests/extract/test_sources.py tests/pipeline/test_pipeline_state.py -m "not forked" if: runner.os == 'Windows' name: Run common tests with minimum dependencies Windows shell: cmd diff --git a/.github/workflows/test_local_destinations.yml b/.github/workflows/test_local_destinations.yml index 78ea23ec1c..2404377f7e 100644 --- a/.github/workflows/test_local_destinations.yml +++ b/.github/workflows/test_local_destinations.yml @@ -97,9 +97,6 @@ jobs: - name: Install dependencies run: poetry install --no-interaction -E postgres -E duckdb -E parquet -E filesystem -E cli -E weaviate -E qdrant --with sentry-sdk --with pipeline -E deltalake - - name: create secrets.toml - run: pwd && echo "$DLT_SECRETS_TOML" > tests/.dlt/secrets.toml - # always run full suite, also on branches - run: poetry run pytest tests/load && poetry run pytest tests/cli name: Run tests Linux diff --git a/.github/workflows/test_local_sources.yml b/.github/workflows/test_local_sources.yml new file mode 100644 index 0000000000..6b236661f6 --- /dev/null +++ b/.github/workflows/test_local_sources.yml @@ -0,0 +1,99 @@ +# Tests destinations that can run without credentials. +# i.e. local postgres, duckdb, filesystem (with local fs/memory bucket) + +name: src | rest_api, sql_database, filesystem + +on: + pull_request: + branches: + - master + - devel + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +env: + + RUNTIME__SENTRY_DSN: https://6f6f7b6f8e0f458a89be4187603b55fe@o1061158.ingest.sentry.io/4504819859914752 + RUNTIME__LOG_LEVEL: ERROR + RUNTIME__DLTHUB_TELEMETRY_ENDPOINT: ${{ secrets.RUNTIME__DLTHUB_TELEMETRY_ENDPOINT }} + + ACTIVE_DESTINATIONS: "[\"duckdb\", \"postgres\", \"filesystem\"]" + ALL_FILESYSTEM_DRIVERS: "[\"memory\", \"file\"]" + +jobs: + get_docs_changes: + name: docs changes + uses: ./.github/workflows/get_docs_changes.yml + + run_loader: + name: src | rest_api, sql_database, filesystem + needs: get_docs_changes + if: needs.get_docs_changes.outputs.changes_outside_docs == 'true' + strategy: + fail-fast: false + defaults: + run: + shell: bash + runs-on: "ubuntu-latest" + + # Service containers to run with `container-job` + services: + # Label used to access the service container + postgres: + # Docker Hub image + image: postgres + # Provide the password for postgres + env: + POSTGRES_DB: dlt_data + POSTGRES_USER: loader + POSTGRES_PASSWORD: loader + ports: + - 5432:5432 + # Set health checks to wait until postgres has started + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + steps: + - name: Check out + uses: actions/checkout@master + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10.x" + + - name: Install Poetry + uses: snok/install-poetry@v1.3.2 + with: + virtualenvs-create: true + virtualenvs-in-project: true + installer-parallel: true + + - name: Load cached venv + id: cached-poetry-dependencies + uses: actions/cache@v3 + with: + path: .venv + key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}-local-sources + + # TODO: which deps should we enable? + - name: Install dependencies + run: poetry install --no-interaction -E postgres -E duckdb -E parquet -E filesystem -E cli -E weaviate -E qdrant --with sentry-sdk --with pipeline -E deltalake + + # run sources tests + - run: poetry run pytest tests/sources + name: Run tests Linux + env: + DESTINATION__POSTGRES__CREDENTIALS: postgresql://loader:loader@localhost:5432/dlt_data + + # run sources tests in load against configured destinations + - run: poetry run pytest tests/load/sources + name: Run tests Linux + env: + DESTINATION__POSTGRES__CREDENTIALS: postgresql://loader:loader@localhost:5432/dlt_data \ No newline at end of file