Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
260 changes: 197 additions & 63 deletions .github/workflows/integration_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,21 @@ on:
MCP_VENUE_TEST_OGC_PROCESSES_API_ENDPOINT:
description: "Base URL for the OGC endpoint in MCP Venue Test (i.e. https://abcdef12345.execute-api.us-west-2.amazonaws.com/test/ogc/api)"
type: string
# TODO: add MCP_VENUE_OPS inputs
MCP_VENUE_OPS_AIRFLOW_API_ENDPOINT:
description: "Base URL for the Airflow API endpoint in MCP Venue Ops (i.e. https://abcdef12345.execute-api.us-west-2.amazonaws.com/test/sps/api/v1)"
type: string
MCP_VENUE_OPS_OGC_PROCESSES_API_ENDPOINT:
description: "Base URL for the OGC endpoint in MCP Venue Ops (i.e. https://abcdef12345.execute-api.us-west-2.amazonaws.com/test/ogc/api)"
type: string

jobs:

Dev-Venue-Airflow-API:
runs-on: ubuntu-latest
env:
UNITY_USER: ${{ secrets.MCP_VENUE_DEV_UNITY_USERNAME }}
UNITY_PASSWORD: ${{ secrets.MCP_VENUE_DEV_UNITY_PASSWORD }}
UNITY_CLIENT_ID: ${{ secrets.MCP_VENUE_DEV_UNITY_CLIENTID }}

steps:
- name: Checkout
Expand All @@ -35,32 +45,47 @@ jobs:
uses: ./.github/actions/setup-action
continue-on-error: false

- name: MCP Venue Dev - Integration tests with Airflow API
id: mcp_venue_dev_integration_tests_with_airflow_api
- name: MCP Venue Dev - Karpenter Integration tests with Airflow API
id: mcp_venue_dev_karpenter_integration_tests_with_airflow_api
continue-on-error: true
run: |
pytest -vv -s --gherkin-terminal-reporter \
unity-test/system/integration/step_defs/test_karpenter_test_workflow_with_airflow_api.py \
--venue="dev" \
--airflow-endpoint=${{ github.event.inputs.MCP_VENUE_DEV_AIRFLOW_API_ENDPOINT || vars.MCP_VENUE_DEV_AIRFLOW_API_ENDPOINT }}

- name: MCP Venue Dev - CWL Integration tests with Airflow API
id: mcp_venue_dev_cwl_integration_tests_with_airflow_api
continue-on-error: true
env:
UNITY_USER: ${{ secrets.MCP_VENUE_DEV_UNITY_USERNAME }}
UNITY_PASSWORD: ${{ secrets.MCP_VENUE_DEV_UNITY_PASSWORD }}
UNITY_CLIENT_ID: ${{ secrets.MCP_VENUE_DEV_UNITY_CLIENTID }}
run: |
pytest -vv -s --gherkin-terminal-reporter \
unity-test/system/integration/step_defs/test_cwl_workflows_with_airflow_api.py \
--venue="dev" \
--airflow-endpoint=${{ github.event.inputs.MCP_VENUE_DEV_AIRFLOW_API_ENDPOINT || vars.MCP_VENUE_DEV_AIRFLOW_API_ENDPOINT }} \
--ogc-processes-endpoint=${{ github.event.inputs.MCP_VENUE_DEV_OGC_PROCESSES_API_ENDPOINT || vars.MCP_VENUE_DEV_OGC_PROCESSES_API_ENDPOINT }}
--airflow-endpoint=${{ github.event.inputs.MCP_VENUE_DEV_AIRFLOW_API_ENDPOINT || vars.MCP_VENUE_DEV_AIRFLOW_API_ENDPOINT }}

- name: Check Tests Results
if: always()
run: |
tests_status=${{ steps.mcp_venue_dev_integration_tests_with_airflow_api.outcome }}
echo "Tests Status: $tests_status"
if [ "$tests_status" != "success" ]; then
echo "Integration Tests with Airflow API on MCP Venue Dev failed."
cwl_tests_status=${{ steps.mcp_venue_dev_cwl_integration_tests_with_airflow_api.outcome }}
echo "CWL Tests Status: $tests_status"
if [ "$cwl_tests_status" != "success" ]; then
echo "CWL Integration Tests with Airflow API on MCP Venue Dev failed."
fi
karpenter_tests_status=${{ steps.mcp_venue_dev_karpenter_integration_tests_with_airflow_api.outcome }}
echo "Karpenter Tests Status: $karpenter_tests_status"
if [ "$karpenter_tests_status" != "success" ]; then
echo "Karpenter Integration Tests with Airflow API on MCP Venue Dev failed."
fi
if [ "$karpenter_tests_status" != "success" || "$cwl_tests_status" != "success" ]; then
exit 1
fi

Test-Venue-Airflow-API:
Dev-Venue-OGC-API:
runs-on: ubuntu-latest
env:
UNITY_USER: ${{ secrets.MCP_VENUE_DEV_UNITY_USERNAME }}
UNITY_PASSWORD: ${{ secrets.MCP_VENUE_DEV_UNITY_PASSWORD }}
UNITY_CLIENT_ID: ${{ secrets.MCP_VENUE_DEV_UNITY_CLIENTID }}

steps:
- name: Checkout
Expand All @@ -70,32 +95,97 @@ jobs:
uses: ./.github/actions/setup-action
continue-on-error: false

- name: MCP Venue Test - Integration tests with Airflow API
id: mcp_venue_test_integration_tests_with_airflow_api
- name: MCP Venue Dev - Karpenter Integration tests with OGC API
id: mcp_venue_dev_karpenter_integration_tests_with_ogc_api
continue-on-error: true
env:
UNITY_USER: ${{ secrets.MCP_VENUE_TEST_UNITY_USERNAME }}
UNITY_PASSWORD: ${{ secrets.MCP_VENUE_TEST_UNITY_PASSWORD }}
UNITY_CLIENT_ID: ${{ secrets.MCP_VENUE_TEST_UNITY_CLIENTID }}
run: |
pytest -vv -s --gherkin-terminal-reporter \
unity-test/system/integration/step_defs/test_cwl_workflows_with_airflow_api.py \
--venue="test" \
--airflow-endpoint=${{ github.event.inputs.MCP_VENUE_TEST_AIRFLOW_API_ENDPOINT || vars.MCP_VENUE_TEST_AIRFLOW_API_ENDPOINT }} \
--ogc-processes-endpoint=${{ github.event.inputs.MCP_VENUE_TEST_OGC_PROCESSES_API_ENDPOINT || vars.MCP_VENUE_TEST_OGC_PROCESSES_API_ENDPOINT }}
--venue="dev" \
unity-test/system/integration/step_defs/test_karpenter_test_workflow_with_ogc_api.py \
--ogc-processes-endpoint=${{ github.event.inputs.MCP_VENUE_DEV_OGC_PROCESSES_API_ENDPOINT || vars.MCP_VENUE_DEV_OGC_PROCESSES_API_ENDPOINT }}

- name: MCP Venue Dev - CWL Integration tests with OGC API
id: mcp_venue_dev_cwl_integration_tests_with_ogc_api
continue-on-error: true
run: |
pytest -vv -s --gherkin-terminal-reporter \
unity-test/system/integration/step_defs/test_cwl_workflows_with_ogc_api.py \
--venue="dev" \
--ogc-processes-endpoint=${{ github.event.inputs.MCP_VENUE_DEV_OGC_PROCESSES_API_ENDPOINT || vars.MCP_VENUE_DEV_OGC_PROCESSES_API_ENDPOINT }}

- name: Check Tests Results
if: always()
run: |
tests_status=${{ steps.mcp_venue_test_integration_tests_with_airflow_api.outcome }}
echo "Tests Status: $tests_status"
if [ "$tests_status" != "success" ]; then
echo "Integration Tests with Airflow API on MCP Venue Test failed."
exit 1
fi
cwl_tests_status=${{ steps.mcp_venue_dev_cwl_integration_tests_with_ogc_api.outcome }}
echo "CWL Tests Status: $tests_status"
if [ "$cwl_tests_status" != "success" ]; then
echo "CWL Integration Tests with OGC API on MCP Venue Dev failed."
fi
karpenter_tests_status=${{ steps.mcp_venue_dev_karpenter_integration_tests_with_ogc_api.outcome }}
echo "Karpenter Tests Status: $karpenter_tests_status"
if [ "$karpenter_tests_status" != "success" ]; then
echo "Karpenter Integration Tests with OGC API on MCP Venue Dev failed."
fi
if [ "$karpenter_tests_status" != "success" || "$cwl_tests_status" != "success" ]; then
exit 1
fi

Dev-Venue-OGC-API:
Test-Venue-Airflow-API:
runs-on: ubuntu-latest
env:
UNITY_USER: ${{ secrets.MCP_VENUE_TEST_UNITY_USERNAME }}
UNITY_PASSWORD: ${{ secrets.MCP_VENUE_TEST_UNITY_PASSWORD }}
UNITY_CLIENT_ID: ${{ secrets.MCP_VENUE_TEST_UNITY_CLIENTID }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup
uses: ./.github/actions/setup-action
continue-on-error: false

- name: MCP Venue Test - Karpenter Integration tests with Airflow API
id: mcp_venue_test_karpenter_integration_tests_with_airflow_api
continue-on-error: true
run: |
pytest -vv -s --gherkin-terminal-reporter \
unity-test/system/integration/step_defs/test_karpenter_test_workflow_with_airflow_api.py \
--venue="test" \
--airflow-endpoint=${{ github.event.inputs.MCP_VENUE_TEST_AIRFLOW_API_ENDPOINT || vars.MCP_VENUE_TEST_AIRFLOW_API_ENDPOINT }}

- name: MCP Venue Test - CWL Integration tests with Airflow API
id: mcp_venue_test_cwl_integration_tests_with_airflow_api
continue-on-error: true
run: |
pytest -vv -s --gherkin-terminal-reporter \
unity-test/system/integration/step_defs/test_cwl_workflows_with_airflow_api.py \
--venue="test" \
--airflow-endpoint=${{ github.event.inputs.MCP_VENUE_TEST_AIRFLOW_API_ENDPOINT || vars.MCP_VENUE_TEST_AIRFLOW_API_ENDPOINT }}

- name: Check Tests Results
if: always()
run: |
cwl_tests_status=${{ steps.mcp_venue_test_cwl_integration_tests_with_airflow_api.outcome }}
echo "CWL Tests Status: $tests_status"
if [ "$cwl_tests_status" != "success" ]; then
echo "CWL Integration Tests with Airflow API on MCP Venue Test failed."
fi
karpenter_tests_status=${{ steps.mcp_venue_test_karpenter_integration_tests_with_airflow_api.outcome }}
echo "Karpenter Tests Status: $karpenter_tests_status"
if [ "$karpenter_tests_status" != "success" ]; then
echo "Karpenter Integration Tests with Airflow API on MCP Venue Test failed."
fi
if [ "$karpenter_tests_status" != "success" || "$cwl_tests_status" != "success" ]; then
exit 1
fi

Test-Venue-OGC-API:
runs-on: ubuntu-latest
env:
UNITY_USER: ${{ secrets.MCP_VENUE_TEST_UNITY_USERNAME }}
UNITY_PASSWORD: ${{ secrets.MCP_VENUE_TEST_UNITY_PASSWORD }}
UNITY_CLIENT_ID: ${{ secrets.MCP_VENUE_TEST_UNITY_CLIENTID }}

steps:
- name: Checkout
Expand All @@ -105,32 +195,81 @@ jobs:
uses: ./.github/actions/setup-action
continue-on-error: false

- name: MCP Venue Dev - Integration tests with OGC API
id: mcp_venue_dev_integration_tests_with_ogc_api
- name: MCP Venue Test - Karpenter Integration tests with OGC API
id: mcp_venue_test_karpenter_integration_tests_with_ogc_api
continue-on-error: true
run: |
pytest -vv -s --gherkin-terminal-reporter \
--venue="test" \
unity-test/system/integration/step_defs/test_karpenter_test_workflow_with_ogc_api.py \
--ogc-processes-endpoint=${{ github.event.inputs.MCP_VENUE_TEST_OGC_PROCESSES_API_ENDPOINT || vars.MCP_VENUE_TEST_OGC_PROCESSES_API_ENDPOINT }}

- name: MCP Venue Test - CWL Integration tests with OGC API
id: mcp_venue_test_cwl_integration_tests_with_ogc_api
continue-on-error: true
env:
UNITY_USER: ${{ secrets.MCP_VENUE_DEV_UNITY_USERNAME }}
UNITY_PASSWORD: ${{ secrets.MCP_VENUE_DEV_UNITY_PASSWORD }}
UNITY_CLIENT_ID: ${{ secrets.MCP_VENUE_DEV_UNITY_CLIENTID }}
run: |
pytest -vv -s --gherkin-terminal-reporter \
unity-test/system/integration/step_defs/test_cwl_workflows_with_ogc_api.py \
--venue="dev" \
--airflow-endpoint=${{ github.event.inputs.MCP_VENUE_DEV_AIRFLOW_API_ENDPOINT || vars.MCP_VENUE_DEV_AIRFLOW_API_ENDPOINT }} \
--ogc-processes-endpoint=${{ github.event.inputs.MCP_VENUE_DEV_OGC_PROCESSES_API_ENDPOINT || vars.MCP_VENUE_DEV_OGC_PROCESSES_API_ENDPOINT }}
--venue="test" \
--ogc-processes-endpoint=${{ github.event.inputs.MCP_VENUE_TEST_OGC_PROCESSES_API_ENDPOINT || vars.MCP_VENUE_TEST_OGC_PROCESSES_API_ENDPOINT }}

- name: Check Tests Results
if: always()
run: |
tests_status=${{ steps.mcp_venue_dev_integration_tests_with_ogc_api.outcome }}
echo "Tests Status: $tests_status"
if [ "$tests_status" != "success" ]; then
echo "Integration Tests with OGC API on MCP Venue Dev failed."
exit 1
fi
cwl_tests_status=${{ steps.mcp_venue_test_cwl_integration_tests_with_ogc_api.outcome }}
echo "CWL Tests Status: $tests_status"
if [ "$cwl_tests_status" != "success" ]; then
echo "CWL Integration Tests with OGC API on MCP Venue Test failed."
fi
karpenter_tests_status=${{ steps.mcp_venue_test_karpenter_integration_tests_with_ogc_api.outcome }}
echo "Karpenter Tests Status: $karpenter_tests_status"
if [ "$karpenter_tests_status" != "success" ]; then
echo "Karpenter Integration Tests with OGC API on MCP Venue Test failed."
fi
if [ "$karpenter_tests_status" != "success" || "$cwl_tests_status" != "success" ]; then
exit 1
fi

Test-Venue-OGC-API:
Ops-Venue-Airflow-API:
runs-on: ubuntu-latest
env:
UNITY_USER: ${{ secrets.MCP_VENUE_OPS_UNITY_USERNAME }}
UNITY_PASSWORD: ${{ secrets.MCP_VENUE_OPS_UNITY_PASSWORD }}
UNITY_CLIENT_ID: ${{ secrets.MCP_VENUE_OPS_UNITY_CLIENTID }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup
uses: ./.github/actions/setup-action
continue-on-error: false

- name: MCP Venue Ops - Karpenter Integration tests with Airflow API
id: mcp_venue_ops_karpenter_integration_tests_with_airflow_api
continue-on-error: true
run: |
pytest -vv -s --gherkin-terminal-reporter \
unity-test/system/integration/step_defs/test_karpenter_test_workflow_with_airflow_api.py \
--venue="prod" \
--airflow-endpoint=${{ github.event.inputs.MCP_VENUE_OPS_AIRFLOW_API_ENDPOINT || vars.MCP_VENUE_OPS_AIRFLOW_API_ENDPOINT }}

- name: Check Tests Results
if: always()
run: |
karpenter_tests_status=${{ steps.mcp_venue_ops_karpenter_integration_tests_with_airflow_api.outcome }}
echo "Karpenter Tests Status: $karpenter_tests_status"
if [ "$karpenter_tests_status" != "success" ]; then
echo "Karpenter Integration Tests with Airflow API on MCP Ops Test failed."
exit 1
fi

Ops-Venue-OGC-API:
runs-on: ubuntu-latest
env:
UNITY_USER: ${{ secrets.MCP_VENUE_OPS_UNITY_USERNAME }}
UNITY_PASSWORD: ${{ secrets.MCP_VENUE_OPS_UNITY_PASSWORD }}
UNITY_CLIENT_ID: ${{ secrets.MCP_VENUE_OPS_UNITY_CLIENTID }}

steps:
- name: Checkout
Expand All @@ -140,26 +279,21 @@ jobs:
uses: ./.github/actions/setup-action
continue-on-error: false

- name: MCP Venue Test - Integration tests with OGC API
id: mcp_venue_test_integration_tests_with_ogc_api
- name: MCP Venue Ops - Karpenter Integration tests with OGC API
id: mcp_venue_ops_karpenter_integration_tests_with_ogc_api
continue-on-error: true
env:
UNITY_USER: ${{ secrets.MCP_VENUE_TEST_UNITY_USERNAME }}
UNITY_PASSWORD: ${{ secrets.MCP_VENUE_TEST_UNITY_PASSWORD }}
UNITY_CLIENT_ID: ${{ secrets.MCP_VENUE_TEST_UNITY_CLIENTID }}
run: |
pytest -vv -s --gherkin-terminal-reporter \
unity-test/system/integration/step_defs/test_cwl_workflows_with_ogc_api.py \
--venue="test" \
--airflow-endpoint=${{ github.event.inputs.MCP_VENUE_TEST_AIRFLOW_API_ENDPOINT || vars.MCP_VENUE_TEST_AIRFLOW_API_ENDPOINT }} \
--ogc-processes-endpoint=${{ github.event.inputs.MCP_VENUE_TEST_OGC_PROCESSES_API_ENDPOINT || vars.MCP_VENUE_TEST_OGC_PROCESSES_API_ENDPOINT }}
--venue="prod" \
unity-test/system/integration/step_defs/test_karpenter_test_workflow_with_ogc_api.py \
--ogc-processes-endpoint=${{ github.event.inputs.MCP_VENUE_OPS_OGC_PROCESSES_API_ENDPOINT || vars.MCP_VENUE_OPS_OGC_PROCESSES_API_ENDPOINT }}

- name: Check Tests Results
if: always()
run: |
tests_status=${{ steps.mcp_venue_test_integration_tests_with_ogc_api.outcome }}
echo "Tests Status: $tests_status"
if [ "$tests_status" != "success" ]; then
echo "Integration Tests with OGC API on MCP Venue Test failed."
exit 1
fi
karpenter_tests_status=${{ steps.mcp_venue_ops_karpenter_integration_tests_with_ogc_api.outcome }}
echo "Karpenter Tests Status: $karpenter_tests_status"
if [ "$karpenter_tests_status" != "success" ]; then
echo "Karpenter Integration Tests with OGC API on MCP Venue Ops failed."
exit 1
fi
17 changes: 15 additions & 2 deletions unity-test/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ def pytest_addoption(parser):
"--venue",
action="store",
default=None,
choices=("dev", "test", "ops"),
help="The venue in which the cluster will be deployed (dev, test, ops).",
# Note: unity-py uses "prod" but sps software uses "ops"
choices=("dev", "test", "ops", "prod"),
help="The venue in which the cluster will be deployed (dev, test, ops, prod).",
)
parser.addoption(
"--developer",
Expand Down Expand Up @@ -176,3 +177,15 @@ def cwl_dag_modular_process(ogc_processes):
if p.id == "cwl_dag_modular":
return p
return None


@pytest.fixture(scope="session")
def karpenter_dag_process(ogc_processes):
"""
Selects the Karpenter Test DAG from the list of available OGC processes
"""

for p in ogc_processes:
if p.id == "karpenter_test":
return p
return None
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Feature: Karpenter Test Workflow with Airflow API

As an SPS user
I want to ensure that the system has been successfully deployed to a given venue
So that I can execute workflows as DAGs while provisioning nodes as needed

Scenario: Execute the Karpenter Test Workflow with the Airflow API
Given the Airflow API is up and running
When I trigger a run for the Karpenter Test DAG using the Airflow API
Then I receive a response with status code 200
And I see an eventual successful DAG run
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Feature: Karpenter Test Workflow with OGC API

As an SPS user
I want to ensure that the system has been successfully deployed to a given venue
So that I can execute workflows as DAGs while provisioning nodes as needed

Scenario: Execute the Karpenter Test Workflow with the OGC API
Given the OGC API is up and running
When I trigger a run for the Karpenter Test DAG using the OGC API
Then the job starts executing
And I see an eventual successful job
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ def check_process_execution_and_termination(job):
if job is not None:
status = job.get_status().status
while status in [JobStatus.ACCEPTED, JobStatus.RUNNING]:
print(f"Job: {job.id} status: {job.get_status().status}")
# print(f"Job: {job.id} status: {job.get_status().status}")
status = job.get_status().status

print(f"Job: {job.id} status: {job.get_status().status}")
Expand Down
Loading