Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add integration tests #54

Merged
merged 14 commits into from
Aug 3, 2023
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
51 changes: 51 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,18 @@ on:
- v*
workflow_dispatch:

env:
AERIE_USERNAME: "${{secrets.AERIE_USERNAME}}"
AERIE_PASSWORD: "${{secrets.AERIE_PASSWORD}}"
HASURA_GRAPHQL_ADMIN_SECRET: "${{secrets.HASURA_GRAPHQL_ADMIN_SECRET}}"
HASURA_GRAPHQL_JWT_SECRET: "${{secrets.HASURA_GRAPHQL_JWT_SECRET}}"
POSTGRES_USER: "${{secrets.POSTGRES_USER}}"
POSTGRES_PASSWORD: "${{secrets.POSTGRES_PASSWORD}}"
cartermak marked this conversation as resolved.
Show resolved Hide resolved

jobs:
unit-test:
runs-on: ubuntu-latest
environment: integration-test-workflow
strategy:
matrix:
python-version: [ "3.10", "3.11" ]
Expand All @@ -30,3 +39,45 @@ jobs:
run: |
cd tests
pytest unit_tests
integration-test:
timeout-minutes: 5
runs-on: ubuntu-latest
environment: integration-test-workflow
strategy:
matrix:
python-version: [ "3.10", "3.11" ]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
pip install .
- name: Set up aerie instance
run: |
docker compose -f docker-compose-test.yml up -d
docker images
docker ps -a
- name: Sleep for 60 Seconds
run: sleep 60s
shell: bash
- name: Run integration tests
run: |
cd tests
pytest integration_tests
- name: Print service logs
if: always()
run: docker compose -f docker-compose-test.yml logs -t
- name: Stop services
if: always()
run: |
docker ps -a
docker compose -f docker-compose-test.yml down
docker ps -a
- name: Prune volumes
if: always()
run: docker volume prune --force
169 changes: 169 additions & 0 deletions docker-compose-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
# Pulled from https://github.com/NASA-AMMOS/aerie-ui/blob/fa404631caee079275a8e86d529bb428f6243871/docker-compose-test.yml
version: '3.7'
services:
aerie_gateway:
container_name: aerie_gateway
depends_on: ['postgres']
environment:
AUTH_TYPE: none
GQL_API_URL: http://localhost:8080/v1/graphql
HASURA_GRAPHQL_JWT_SECRET: '${HASURA_GRAPHQL_JWT_SECRET}'
LOG_FILE: console
LOG_LEVEL: debug
NODE_TLS_REJECT_UNAUTHORIZED: '0'
PORT: 9000
POSTGRES_AERIE_MERLIN_DB: aerie_merlin
POSTGRES_AERIE_SCHEDULER_DB: aerie_scheduler
POSTGRES_HOST: postgres
POSTGRES_PASSWORD: '${AERIE_PASSWORD}'
POSTGRES_PORT: 5432
POSTGRES_USER: '${AERIE_USERNAME}'
image: 'ghcr.io/nasa-ammos/aerie-gateway:v1.6.2'
ports: ['9000:9000']
restart: always
volumes:
- aerie_file_store:/app/files
aerie_merlin:
container_name: aerie_merlin
depends_on: ['postgres']
environment:
MERLIN_DB: 'aerie_merlin'
MERLIN_DB_PASSWORD: '${AERIE_PASSWORD}'
MERLIN_DB_PORT: 5432
MERLIN_DB_SERVER: postgres
MERLIN_DB_USER: '${AERIE_USERNAME}'
MERLIN_LOCAL_STORE: /usr/src/app/merlin_file_store
MERLIN_PORT: 27183
MERLIN_USE_NEW_CONSTRAINT_PIPELINE: 'true'
JAVA_OPTS: >
-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG
-Dorg.slf4j.simpleLogger.log.com.zaxxer.hikari=INFO
-Dorg.slf4j.simpleLogger.logFile=System.err
UNTRUE_PLAN_START: '2000-01-01T11:58:55.816Z'
image: 'ghcr.io/nasa-ammos/aerie-merlin:v1.6.2'
ports: ['27183:27183']
restart: always
volumes:
- aerie_file_store:/usr/src/app/merlin_file_store
aerie_merlin_worker:
container_name: aerie_merlin_worker
depends_on: ['postgres']
environment:
MERLIN_WORKER_DB: 'aerie_merlin'
MERLIN_WORKER_DB_PASSWORD: '${AERIE_PASSWORD}'
MERLIN_WORKER_DB_PORT: 5432
MERLIN_WORKER_DB_SERVER: postgres
MERLIN_WORKER_DB_USER: '${AERIE_USERNAME}'
MERLIN_WORKER_LOCAL_STORE: /usr/src/app/merlin_file_store
JAVA_OPTS: >
-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG
-Dorg.slf4j.simpleLogger.log.com.zaxxer.hikari=INFO
-Dorg.slf4j.simpleLogger.logFile=System.err
UNTRUE_PLAN_START: '2000-01-01T11:58:55.816Z'
image: 'ghcr.io/nasa-ammos/aerie-merlin-worker:v1.6.2'
ports: ['27187:8080']
restart: always
volumes:
- aerie_file_store:/usr/src/app/merlin_file_store:ro
aerie_scheduler:
container_name: aerie_scheduler
depends_on: ['aerie_merlin', 'postgres']
environment:
HASURA_GRAPHQL_ADMIN_SECRET: '${HASURA_GRAPHQL_ADMIN_SECRET}'
MERLIN_GRAPHQL_URL: http://hasura:8080/v1/graphql
SCHEDULER_DB: 'aerie_scheduler'
SCHEDULER_DB_PASSWORD: '${AERIE_PASSWORD}'
SCHEDULER_DB_PORT: 5432
SCHEDULER_DB_SERVER: postgres
SCHEDULER_DB_USER: '${AERIE_USERNAME}'
SCHEDULER_PORT: 27185
JAVA_OPTS: >
-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG
-Dorg.slf4j.simpleLogger.log.com.zaxxer.hikari=INFO
-Dorg.slf4j.simpleLogger.logFile=System.err
image: 'ghcr.io/nasa-ammos/aerie-scheduler:v1.6.2'
ports: ['27185:27185']
restart: always
volumes:
- aerie_file_store:/usr/src/app/merlin_file_store
aerie_scheduler_worker:
container_name: aerie_scheduler_worker
depends_on: ['postgres']
environment:
HASURA_GRAPHQL_ADMIN_SECRET: '${HASURA_GRAPHQL_ADMIN_SECRET}'
MERLIN_GRAPHQL_URL: http://hasura:8080/v1/graphql
MERLIN_LOCAL_STORE: /usr/src/app/merlin_file_store
SCHEDULER_OUTPUT_MODE: UpdateInputPlanWithNewActivities
SCHEDULER_RULES_JAR: /usr/src/app/merlin_file_store/scheduler_rules.jar
SCHEDULER_WORKER_DB: 'aerie_scheduler'
SCHEDULER_WORKER_DB_PASSWORD: '${AERIE_PASSWORD}'
SCHEDULER_WORKER_DB_PORT: 5432
SCHEDULER_WORKER_DB_SERVER: postgres
SCHEDULER_WORKER_DB_USER: '${AERIE_USERNAME}'
JAVA_OPTS: >
-Dorg.slf4j.simpleLogger.log.com.zaxxer.hikari=INFO
-Dorg.slf4j.simpleLogger.logFile=System.err
image: 'ghcr.io/nasa-ammos/aerie-scheduler-worker:v1.6.2'
ports: ['27189:8080']
restart: always
volumes:
- aerie_file_store:/usr/src/app/merlin_file_store:ro
aerie_sequencing:
container_name: aerie_sequencing
depends_on: ['postgres']
environment:
HASURA_GRAPHQL_ADMIN_SECRET: '${HASURA_GRAPHQL_ADMIN_SECRET}'
LOG_FILE: console
LOG_LEVEL: debug
MERLIN_GRAPHQL_URL: http://hasura:8080/v1/graphql
SEQUENCING_DB: aerie_sequencing
SEQUENCING_DB_PASSWORD: '${AERIE_PASSWORD}'
SEQUENCING_DB_PORT: 5432
SEQUENCING_DB_SERVER: postgres
SEQUENCING_DB_USER: '${AERIE_USERNAME}'
SEQUENCING_LOCAL_STORE: /usr/src/app/sequencing_file_store
SEQUENCING_SERVER_PORT: 27184
image: 'ghcr.io/nasa-ammos/aerie-sequencing:v1.6.2'
ports: ['27184:27184']
restart: always
volumes:
- aerie_file_store:/usr/src/app/sequencing_file_store
hasura:
container_name: aerie_hasura
depends_on: ['postgres']
environment:
AERIE_MERLIN_DATABASE_URL: 'postgres://${AERIE_USERNAME}:${AERIE_PASSWORD}@postgres:5432/aerie_merlin'
AERIE_MERLIN_URL: 'http://aerie_merlin:27183'
AERIE_SCHEDULER_DATABASE_URL: 'postgres://${AERIE_USERNAME}:${AERIE_PASSWORD}@postgres:5432/aerie_scheduler'
AERIE_SCHEDULER_URL: 'http://aerie_scheduler:27185'
AERIE_SEQUENCING_DATABASE_URL: 'postgres://${AERIE_USERNAME}:${AERIE_PASSWORD}@postgres:5432/aerie_sequencing'
AERIE_SEQUENCING_URL: 'http://aerie_sequencing:27184'
AERIE_UI_DATABASE_URL: 'postgres://${AERIE_USERNAME}:${AERIE_PASSWORD}@postgres:5432/aerie_ui'
HASURA_GRAPHQL_ADMIN_SECRET: '${HASURA_GRAPHQL_ADMIN_SECRET}'
HASURA_GRAPHQL_DEV_MODE: 'true'
HASURA_GRAPHQL_ENABLE_CONSOLE: 'true'
HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
HASURA_GRAPHQL_JWT_SECRET: '${HASURA_GRAPHQL_JWT_SECRET}'
HASURA_GRAPHQL_LOG_LEVEL: info
HASURA_GRAPHQL_METADATA_DATABASE_URL: 'postgres://${AERIE_USERNAME}:${AERIE_PASSWORD}@postgres:5432/aerie_hasura'
HASURA_GRAPHQL_METADATA_DIR: /hasura-metadata
image: 'ghcr.io/nasa-ammos/aerie-hasura:v1.6.2'
ports: ['8080:8080']
restart: always
postgres:
container_name: aerie_postgres
environment:
AERIE_PASSWORD: '${AERIE_PASSWORD}'
AERIE_USERNAME: '${AERIE_USERNAME}'
POSTGRES_DB: postgres
POSTGRES_PASSWORD: '${POSTGRES_PASSWORD}'
POSTGRES_USER: '${POSTGRES_USER}'
image: 'ghcr.io/nasa-ammos/aerie-postgres:v1.6.2'
ports: ['5432:5432']
restart: always
volumes:
- postgres_data:/var/lib/postgresql/data

volumes:
aerie_file_store:
postgres_data:
Loading