From 726e148a527cfc4005414ddbece54aff2bbb51c0 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 14:18:16 +0800 Subject: [PATCH 01/13] downstream testing scratch --- .github/workflows/downstream.yaml | 159 ++++++++++++++++++++++++++++++ CHANGES.md | 4 + 2 files changed, 163 insertions(+) create mode 100644 .github/workflows/downstream.yaml diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml new file mode 100644 index 000000000..13acee1aa --- /dev/null +++ b/.github/workflows/downstream.yaml @@ -0,0 +1,159 @@ +name: Downstream Integration Tests + +on: + pull_request: + branches: [main] + push: + branches: [main] + tags: + - "*" + workflow_dispatch: + +env: + DOWNSTREAM_PY_VERSION: '3.13' + +jobs: + downstream-pgstac: + name: Test stac-fastapi-pgstac + runs-on: ubuntu-latest + timeout-minutes: 20 + + services: + pgstac: + image: ghcr.io/stac-utils/pgstac:v0.8.5 + ports: + - 5432:5432 + env: + POSTGRES_USER: username + POSTGRES_PASSWORD: password + POSTGRES_DB: postgis + options: >- + --health-cmd "pg_isready -U username -d postgis" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + steps: + - name: Check out stac-fastapi + uses: actions/checkout@v4 + + - name: Check out stac-fastapi-pgstac + uses: actions/checkout@v4 + with: + repository: stac-utils/stac-fastapi-pgstac + path: stac-fastapi-pgstac + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + version: "0.9.*" + enable-cache: true + python-version: ${{ env.DOWNSTREAM_PY_VERSION }} + + - name: Create and activate virtual environment + run: | + uv venv + echo "VIRTUAL_ENV=${{ github.workspace }}/.venv" >> $GITHUB_ENV + echo "${{ github.workspace }}/.venv/bin" >> $GITHUB_PATH + + - name: Install stac-fastapi-pgstac dependencies + run: | + uv pip install -e "./stac-fastapi-pgstac[dev,test]" + + - name: Force-install local stac-fastapi subpackages + run: | + uv pip install --no-deps \ + -e ./stac_fastapi/types \ + -e ./stac_fastapi/api \ + -e ./stac_fastapi/extensions + + - name: Verify local link + run: | + python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" + + - name: Run PgSTAC downstream tests + run: | + cd stac-fastapi-pgstac + pytest -svvv + env: + PGUSER: username + PGPASSWORD: password + PGDATABASE: postgis + PGHOST: localhost + PGPORT: 5432 + + + downstream-opensearch: + name: Test stac-fastapi-elasticsearch-opensearch + runs-on: ubuntu-latest + timeout-minutes: 20 + + services: + opensearch: + image: opensearchproject/opensearch:2.11.0 + ports: + - 9200:9200 + env: + discovery.type: single-node + "plugins.security.disabled": "true" + OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m + options: >- + --health-cmd "sh -c 'curl -f http://localhost:9200/_cluster/health || exit 1'" + --health-interval 10s + --health-timeout 5s + --health-retries 10 + + steps: + - name: Check out stac-fastapi + uses: actions/checkout@v4 + + - name: Check out stac-fastapi-elasticsearch-opensearch + uses: actions/checkout@v4 + with: + repository: stac-utils/stac-fastapi-elasticsearch-opensearch + path: stac-fastapi-elasticsearch-opensearch + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + version: "0.9.*" + enable-cache: true + python-version: ${{ env.DOWNSTREAM_PY_VERSION }} + + - name: Create and activate virtual environment + run: | + uv venv + echo "VIRTUAL_ENV=${{ github.workspace }}/.venv" >> $GITHUB_ENV + echo "${{ github.workspace }}/.venv/bin" >> $GITHUB_PATH + + - name: Install stac-fastapi-opensearch dependencies + run: | + uv pip install -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/core" \ + -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/opensearch[dev,test]" + + - name: Force-install local stac-fastapi subpackages + run: | + uv pip install --no-deps \ + -e ./stac_fastapi/types \ + -e ./stac_fastapi/api \ + -e ./stac_fastapi/extensions + + - name: Verify local link + run: | + python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" + + - name: Run OpenSearch downstream tests + run: | + cd stac-fastapi-elasticsearch-opensearch + pytest -svvv + env: + OPENSEARCH_HOST: localhost + OPENSEARCH_PORT: 9200 + OPENSEARCH_SCHEME: http + OPENSEARCH_USE_SSL: "false" + OPENSEARCH_VERIFY_CERTS: "false" + ES_HOST: localhost + ES_PORT: 9200 + ES_SCHEME: http + ES_USE_SSL: "false" + ES_VERIFY_CERTS: "false" \ No newline at end of file diff --git a/CHANGES.md b/CHANGES.md index 95ca14a5c..da27f493f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -6,6 +6,10 @@ - add back `SortConformanceClasses.{COLLECTIONS|ITEMS|SEARCH}` enum values to avoid breaking change and add deprecation warning for them +### Added + +- GitHub Actions workflow for downstream integration testing (`stac-fastapi-pgstac` and `stac-fastapi-opensearch`) to catch breaking changes on pull requests. + ## [6.4.0] - 2026-07-21 ### Added From c4d576c63666b9b647af8f820e3e5e5e068e4409 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 14:22:51 +0800 Subject: [PATCH 02/13] add pr numbers --- CHANGES.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index da27f493f..11e0e86c0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,11 +4,11 @@ ### Fixed -- add back `SortConformanceClasses.{COLLECTIONS|ITEMS|SEARCH}` enum values to avoid breaking change and add deprecation warning for them +- add back `SortConformanceClasses.{COLLECTIONS|ITEMS|SEARCH}` enum values to avoid breaking change and add deprecation warning for them ([#954](https://github.com/stac-utils/stac-fastapi/issues/954)) ### Added -- GitHub Actions workflow for downstream integration testing (`stac-fastapi-pgstac` and `stac-fastapi-opensearch`) to catch breaking changes on pull requests. +- GitHub Actions workflow for downstream integration testing (`stac-fastapi-pgstac` and `stac-fastapi-opensearch`) to catch breaking changes on pull requests. ([#957](https://github.com/stac-utils/stac-fastapi/issues/957)) ## [6.4.0] - 2026-07-21 From 5d44846733cc17219bb72dbc4cf33263e3a2c501 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 14:23:01 +0800 Subject: [PATCH 03/13] add missing env vars --- .github/workflows/downstream.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index 13acee1aa..d22e88223 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -27,6 +27,9 @@ jobs: POSTGRES_USER: username POSTGRES_PASSWORD: password POSTGRES_DB: postgis + PGUSER: username + PGPASSWORD: password + PGDATABASE: postgis options: >- --health-cmd "pg_isready -U username -d postgis" --health-interval 10s From 6f2993dce6da9fe842ef8c0b93dd34ef4a7c7e1e Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 14:27:23 +0800 Subject: [PATCH 04/13] install pytest --- .github/workflows/downstream.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index d22e88223..9527bcce3 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -61,7 +61,7 @@ jobs: - name: Install stac-fastapi-pgstac dependencies run: | - uv pip install -e "./stac-fastapi-pgstac[dev,test]" + uv pip install -e "./stac-fastapi-pgstac[dev,test]" pytest pytest-asyncio - name: Force-install local stac-fastapi subpackages run: | @@ -132,7 +132,8 @@ jobs: - name: Install stac-fastapi-opensearch dependencies run: | uv pip install -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/core" \ - -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/opensearch[dev,test]" + -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/opensearch[dev,test]" \ + pytest pytest-asyncio - name: Force-install local stac-fastapi subpackages run: | From bc6cdb20c0a419fbd4ad6510e5555a19f554bbda Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 14:35:56 +0800 Subject: [PATCH 05/13] update dependencies --- .github/workflows/downstream.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index 9527bcce3..d9f835f3e 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -61,7 +61,10 @@ jobs: - name: Install stac-fastapi-pgstac dependencies run: | - uv pip install -e "./stac-fastapi-pgstac[dev,test]" pytest pytest-asyncio + uv pip install -r ./stac-fastapi-pgstac/pyproject.toml \ + -e ./stac-fastapi-pgstac \ + --all-extras \ + --group dev - name: Force-install local stac-fastapi subpackages run: | @@ -133,6 +136,7 @@ jobs: run: | uv pip install -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/core" \ -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/opensearch[dev,test]" \ + -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/elasticsearch[dev,test]" \ pytest pytest-asyncio - name: Force-install local stac-fastapi subpackages From b808bb20874ee665fdc9a3d2e0cd70bd4e5bfcbd Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 14:53:56 +0800 Subject: [PATCH 06/13] update --- .github/workflows/downstream.yaml | 34 +++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index d9f835f3e..ee7051e90 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -63,6 +63,7 @@ jobs: run: | uv pip install -r ./stac-fastapi-pgstac/pyproject.toml \ -e ./stac-fastapi-pgstac \ + "psycopg[binary,pool]" \ --all-extras \ --group dev @@ -96,19 +97,30 @@ jobs: services: opensearch: - image: opensearchproject/opensearch:2.11.0 + image: opensearchproject/opensearch:3.5.0 ports: - 9200:9200 env: discovery.type: single-node "plugins.security.disabled": "true" OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m + action.destructive_requires_name: "false" options: >- --health-cmd "sh -c 'curl -f http://localhost:9200/_cluster/health || exit 1'" --health-interval 10s --health-timeout 5s --health-retries 10 + redis: + image: redis:7-alpine + ports: + - 6379:6379 + options: >- + --health-cmd "redis-cli ping" + --health-interval 5s + --health-timeout 3s + --health-retries 5 + steps: - name: Check out stac-fastapi uses: actions/checkout@v4 @@ -135,9 +147,9 @@ jobs: - name: Install stac-fastapi-opensearch dependencies run: | uv pip install -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/core" \ + -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/elasticsearch" \ -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/opensearch[dev,test]" \ - -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/elasticsearch[dev,test]" \ - pytest pytest-asyncio + pytest pytest-asyncio redis - name: Force-install local stac-fastapi subpackages run: | @@ -153,15 +165,19 @@ jobs: - name: Run OpenSearch downstream tests run: | cd stac-fastapi-elasticsearch-opensearch - pytest -svvv + uv run pytest -svvv env: + BACKEND: opensearch + ES_HOST: localhost + ES_PORT: 9200 + ES_USE_SSL: "false" + ES_VERIFY_CERTS: "false" OPENSEARCH_HOST: localhost OPENSEARCH_PORT: 9200 OPENSEARCH_SCHEME: http OPENSEARCH_USE_SSL: "false" OPENSEARCH_VERIFY_CERTS: "false" - ES_HOST: localhost - ES_PORT: 9200 - ES_SCHEME: http - ES_USE_SSL: "false" - ES_VERIFY_CERTS: "false" \ No newline at end of file + REDIS_ENABLE: "true" + REDIS_HOST: localhost + REDIS_PORT: 6379 + DATABASE_REFRESH: "true" \ No newline at end of file From 46c583d15f1132c1f41ff99b035fb82d76a5cea8 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 15:05:24 +0800 Subject: [PATCH 07/13] fix installation --- .github/workflows/downstream.yaml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index ee7051e90..fc0eabe4b 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -61,11 +61,8 @@ jobs: - name: Install stac-fastapi-pgstac dependencies run: | - uv pip install -r ./stac-fastapi-pgstac/pyproject.toml \ - -e ./stac-fastapi-pgstac \ - "psycopg[binary,pool]" \ - --all-extras \ - --group dev + cd stac-fastapi-pgstac + uv pip install -e . --all-extras --group dev - name: Force-install local stac-fastapi subpackages run: | @@ -81,7 +78,7 @@ jobs: - name: Run PgSTAC downstream tests run: | cd stac-fastapi-pgstac - pytest -svvv + uv run pytest -svvv env: PGUSER: username PGPASSWORD: password @@ -103,6 +100,7 @@ jobs: env: discovery.type: single-node "plugins.security.disabled": "true" + OPENSEARCH_INITIAL_ADMIN_PASSWORD: "StrongPassword123!" OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m action.destructive_requires_name: "false" options: >- From bf33b61558f208b95a6e7cd81a840f0988130ba0 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 15:16:14 +0800 Subject: [PATCH 08/13] more fixing --- .github/workflows/downstream.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index fc0eabe4b..554746f28 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -10,7 +10,7 @@ on: workflow_dispatch: env: - DOWNSTREAM_PY_VERSION: '3.13' + DOWNSTREAM_PY_VERSION: '3.11' jobs: downstream-pgstac: @@ -62,7 +62,7 @@ jobs: - name: Install stac-fastapi-pgstac dependencies run: | cd stac-fastapi-pgstac - uv pip install -e . --all-extras --group dev + uv pip install -r pyproject.toml --group dev -e . - name: Force-install local stac-fastapi subpackages run: | @@ -163,7 +163,7 @@ jobs: - name: Run OpenSearch downstream tests run: | cd stac-fastapi-elasticsearch-opensearch - uv run pytest -svvv + uv run pytest -svvv -o asyncio_mode=auto -o asyncio_default_fixture_loop_scope=session env: BACKEND: opensearch ES_HOST: localhost From 3038a00c2c58358b008eef9b78f70d834977fd04 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 15:34:44 +0800 Subject: [PATCH 09/13] overhaul --- .github/workflows/downstream.yaml | 156 ++++++++++++++---------------- 1 file changed, 72 insertions(+), 84 deletions(-) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index 554746f28..5f657e504 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -18,96 +18,90 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 20 - services: - pgstac: - image: ghcr.io/stac-utils/pgstac:v0.8.5 - ports: - - 5432:5432 - env: - POSTGRES_USER: username - POSTGRES_PASSWORD: password - POSTGRES_DB: postgis - PGUSER: username - PGPASSWORD: password - PGDATABASE: postgis - options: >- - --health-cmd "pg_isready -U username -d postgis" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - steps: - name: Check out stac-fastapi - uses: actions/checkout@v4 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 - name: Check out stac-fastapi-pgstac - uses: actions/checkout@v4 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6 with: repository: stac-utils/stac-fastapi-pgstac path: stac-fastapi-pgstac - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2 with: version: "0.9.*" enable-cache: true python-version: ${{ env.DOWNSTREAM_PY_VERSION }} - - name: Create and activate virtual environment - run: | - uv venv - echo "VIRTUAL_ENV=${{ github.workspace }}/.venv" >> $GITHUB_ENV - echo "${{ github.workspace }}/.venv/bin" >> $GITHUB_PATH + - name: install lib postgres + uses: nyurik/action-setup-postgis@228cfe4dd41aad01801a0bdc767040e5024fff1d # v2 - name: Install stac-fastapi-pgstac dependencies run: | cd stac-fastapi-pgstac - uv pip install -r pyproject.toml --group dev -e . + uv sync - name: Force-install local stac-fastapi subpackages run: | + cd stac-fastapi-pgstac uv pip install --no-deps \ - -e ./stac_fastapi/types \ - -e ./stac_fastapi/api \ - -e ./stac_fastapi/extensions + -e ../stac_fastapi/types \ + -e ../stac_fastapi/api \ + -e ../stac_fastapi/extensions - name: Verify local link run: | - python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" + cd stac-fastapi-pgstac + uv run python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" - name: Run PgSTAC downstream tests run: | cd stac-fastapi-pgstac - uv run pytest -svvv - env: - PGUSER: username - PGPASSWORD: password - PGDATABASE: postgis - PGHOST: localhost - PGPORT: 5432 + uv run pytest -svvv -o asyncio_mode=auto -o asyncio_default_fixture_loop_scope=session - downstream-opensearch: - name: Test stac-fastapi-elasticsearch-opensearch + downstream-sfeos: + name: Test SFEOS (${{ matrix.backend }}) runs-on: ubuntu-latest timeout-minutes: 20 + + strategy: + fail-fast: false + matrix: + backend: ["elasticsearch", "opensearch"] + include: + - backend: "elasticsearch" + port: "9200" + - backend: "opensearch" + port: "9202" services: - opensearch: - image: opensearchproject/opensearch:3.5.0 + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:9.3.2 + env: + discovery.type: single-node + xpack.security.enabled: false + ES_JAVA_OPTS: -Xms512m -Xmx1g + action.destructive_requires_name: false ports: - 9200:9200 + + opensearch: + image: opensearchproject/opensearch:3.5.0 env: discovery.type: single-node - "plugins.security.disabled": "true" - OPENSEARCH_INITIAL_ADMIN_PASSWORD: "StrongPassword123!" + DISABLE_SECURITY_PLUGIN: true OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m - action.destructive_requires_name: "false" + action.destructive_requires_name: false + ports: + - 9202:9202 options: >- - --health-cmd "sh -c 'curl -f http://localhost:9200/_cluster/health || exit 1'" - --health-interval 10s - --health-timeout 5s - --health-retries 10 + --health-cmd="curl -f http://localhost:9202/_cluster/health || exit 1" + --health-interval=10s + --health-timeout=5s + --health-retries=10 redis: image: redis:7-alpine @@ -115,67 +109,61 @@ jobs: - 6379:6379 options: >- --health-cmd "redis-cli ping" - --health-interval 5s - --health-timeout 3s + --health-interval 10s + --health-timeout 5s --health-retries 5 steps: - name: Check out stac-fastapi - uses: actions/checkout@v4 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6/v7 - name: Check out stac-fastapi-elasticsearch-opensearch - uses: actions/checkout@v4 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v6/v7 with: repository: stac-utils/stac-fastapi-elasticsearch-opensearch - path: stac-fastapi-elasticsearch-opensearch + path: sfeos - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2 with: version: "0.9.*" enable-cache: true python-version: ${{ env.DOWNSTREAM_PY_VERSION }} - - name: Create and activate virtual environment + - name: Install SFEOS dependencies run: | - uv venv - echo "VIRTUAL_ENV=${{ github.workspace }}/.venv" >> $GITHUB_ENV - echo "${{ github.workspace }}/.venv/bin" >> $GITHUB_PATH - - - name: Install stac-fastapi-opensearch dependencies - run: | - uv pip install -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/core" \ - -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/elasticsearch" \ - -e "./stac-fastapi-elasticsearch-opensearch/stac_fastapi/opensearch[dev,test]" \ - pytest pytest-asyncio redis + cd sfeos + uv pip install -e "./stac_fastapi/core" + uv pip install -e "./stac_fastapi/sfeos_helpers" + uv pip install -e "./stac_fastapi/elasticsearch[catalogs,dev,server,validator]" + uv pip install -e "./stac_fastapi/opensearch[catalogs,dev,server,validator]" + uv pip install pytest-timeout "pytest-asyncio<0.23.0" - name: Force-install local stac-fastapi subpackages run: | + cd sfeos uv pip install --no-deps \ - -e ./stac_fastapi/types \ - -e ./stac_fastapi/api \ - -e ./stac_fastapi/extensions + -e ../stac_fastapi/types \ + -e ../stac_fastapi/api \ + -e ../stac_fastapi/extensions - name: Verify local link run: | - python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" + cd sfeos + uv run python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" - - name: Run OpenSearch downstream tests + - name: Run SFEOS downstream tests run: | - cd stac-fastapi-elasticsearch-opensearch - uv run pytest -svvv -o asyncio_mode=auto -o asyncio_default_fixture_loop_scope=session + cd sfeos + uv run pytest -svvv --timeout=300 env: - BACKEND: opensearch + ENVIRONMENT: testing + ES_PORT: ${{ matrix.port }} ES_HOST: localhost - ES_PORT: 9200 - ES_USE_SSL: "false" - ES_VERIFY_CERTS: "false" - OPENSEARCH_HOST: localhost - OPENSEARCH_PORT: 9200 - OPENSEARCH_SCHEME: http - OPENSEARCH_USE_SSL: "false" - OPENSEARCH_VERIFY_CERTS: "false" - REDIS_ENABLE: "true" + ES_USE_SSL: false + DATABASE_REFRESH: true + ES_VERIFY_CERTS: false + REDIS_ENABLE: true REDIS_HOST: localhost REDIS_PORT: 6379 - DATABASE_REFRESH: "true" \ No newline at end of file + BACKEND: ${{ matrix.backend }} \ No newline at end of file From 2e4d2e600a728bf5e3289e483a77a4b444bde996 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 15:52:39 +0800 Subject: [PATCH 10/13] fix pytest command --- .github/workflows/downstream.yaml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index 5f657e504..88120b499 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -59,8 +59,7 @@ jobs: - name: Run PgSTAC downstream tests run: | cd stac-fastapi-pgstac - uv run pytest -svvv -o asyncio_mode=auto -o asyncio_default_fixture_loop_scope=session - + uv run pytest -svvv downstream-sfeos: name: Test SFEOS (${{ matrix.backend }}) @@ -92,16 +91,19 @@ jobs: image: opensearchproject/opensearch:3.5.0 env: discovery.type: single-node - DISABLE_SECURITY_PLUGIN: true + DISABLE_SECURITY_PLUGIN: "true" + "plugins.security.disabled": "true" + DISABLE_INSTALL_DEMO_CONFIG: "true" OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m - action.destructive_requires_name: false + action.destructive_requires_name: "false" + http.port: 9202 ports: - 9202:9202 options: >- - --health-cmd="curl -f http://localhost:9202/_cluster/health || exit 1" + --health-cmd="curl -f http://127.0.0.1:9202/_cluster/health || exit 1" --health-interval=10s --health-timeout=5s - --health-retries=10 + --health-retries=30 redis: image: redis:7-alpine From 74389680a78ac82904b8f316d185cfdf1270c801 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 16:09:32 +0800 Subject: [PATCH 11/13] use --no-sync --- .github/workflows/downstream.yaml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index 88120b499..1f46f5fbd 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -54,12 +54,12 @@ jobs: - name: Verify local link run: | cd stac-fastapi-pgstac - uv run python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" + uv run --no-sync python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" - name: Run PgSTAC downstream tests run: | cd stac-fastapi-pgstac - uv run pytest -svvv + uv run --no-sync pytest -svvv downstream-sfeos: name: Test SFEOS (${{ matrix.backend }}) @@ -92,7 +92,6 @@ jobs: env: discovery.type: single-node DISABLE_SECURITY_PLUGIN: "true" - "plugins.security.disabled": "true" DISABLE_INSTALL_DEMO_CONFIG: "true" OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m action.destructive_requires_name: "false" @@ -152,12 +151,12 @@ jobs: - name: Verify local link run: | cd sfeos - uv run python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" + uv run --no-sync python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" - name: Run SFEOS downstream tests run: | cd sfeos - uv run pytest -svvv --timeout=300 + uv run --no-sync pytest -svvv --timeout=300 env: ENVIRONMENT: testing ES_PORT: ${{ matrix.port }} From 2d5b869be9696e46230eeb7708197f867e31d051 Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Wed, 22 Jul 2026 16:23:21 +0800 Subject: [PATCH 12/13] bypass uv for tests? --- .github/workflows/downstream.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index 1f46f5fbd..dfc19d8ff 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -54,12 +54,12 @@ jobs: - name: Verify local link run: | cd stac-fastapi-pgstac - uv run --no-sync python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" + .venv/bin/python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" - name: Run PgSTAC downstream tests run: | cd stac-fastapi-pgstac - uv run --no-sync pytest -svvv + .venv/bin/pytest -svvv downstream-sfeos: name: Test SFEOS (${{ matrix.backend }}) @@ -134,6 +134,7 @@ jobs: - name: Install SFEOS dependencies run: | cd sfeos + uv venv uv pip install -e "./stac_fastapi/core" uv pip install -e "./stac_fastapi/sfeos_helpers" uv pip install -e "./stac_fastapi/elasticsearch[catalogs,dev,server,validator]" @@ -151,12 +152,12 @@ jobs: - name: Verify local link run: | cd sfeos - uv run --no-sync python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" + .venv/bin/python -c "import stac_fastapi.types; print('Using types from:', stac_fastapi.types.__file__)" - name: Run SFEOS downstream tests run: | cd sfeos - uv run --no-sync pytest -svvv --timeout=300 + .venv/bin/pytest -svvv --timeout=300 env: ENVIRONMENT: testing ES_PORT: ${{ matrix.port }} From 9c39d05c6b236dd0d3372f09770ef8dd95d5176d Mon Sep 17 00:00:00 2001 From: jonhealy1 Date: Thu, 23 Jul 2026 12:45:02 +0800 Subject: [PATCH 13/13] workflow_dispatch only --- .github/workflows/downstream.yaml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/downstream.yaml b/.github/workflows/downstream.yaml index dfc19d8ff..44c9ee071 100644 --- a/.github/workflows/downstream.yaml +++ b/.github/workflows/downstream.yaml @@ -1,12 +1,6 @@ name: Downstream Integration Tests on: - pull_request: - branches: [main] - push: - branches: [main] - tags: - - "*" workflow_dispatch: env: