Skip to content

Ensure correct OpenAPI 3.1.0 spec. #1453

Ensure correct OpenAPI 3.1.0 spec.

Ensure correct OpenAPI 3.1.0 spec. #1453

Workflow file for this run

name: Test Spec
on:
push:
paths:
- .github/workflows/test-spec.yml
- package*.json
- spec/**
- tests/**
- tools/src/tester/**
- tsconfig.json
pull_request:
paths:
- .github/workflows/test-spec.yml
- package*.json
- spec/**
- tests/**
- tools/src/tester/**
- tsconfig.json
jobs:
test-opensearch-spec:
strategy:
matrix:
entry:
- version: 1.3.17
admin_password: admin
- version: 2.0.0
admin_password: admin
- version: 2.16.0
- version: 2.16.0
tests: plugins/index_state_management
- version: 2.16.0
tests: plugins/ml
- version: 2.16.0
tests: routing
- version: 2.16.0
tests: snapshot
- version: 2.17.0
tests: plugins/streaming
- version: 2.17.0
tests: plugins/notifications
- version: 2.17.0
tests: plugins/query_insights
- version: 2.17.0
tests: plugins/workload-management
- version: 2.18.0
hub: opensearchstaging
ref: '@sha256:57a1cd1142d68c203e2e4aa0666d9a691e1e409a5d14aa4a8f5044036f05cf06'
- version: 3.0.0
hub: opensearchstaging
ref: '@sha256:727643acdfebed77bfdb26362dbcff536b7ea02a0cc4ae2da2521729171333de'
name: test-opensearch-spec (version=${{ matrix.entry.version }}, hub=${{ matrix.entry.hub || 'opensearchproject' }}, tests=${{ matrix.entry.tests || 'default' }})
runs-on: ubuntu-latest
env:
OPENSEARCH_DOCKER_HUB_PROJECT: ${{ matrix.entry.hub || 'opensearchproject' }}
OPENSEARCH_DOCKER_REF: ${{ matrix.entry.ref }}
OPENSEARCH_VERSION: ${{ matrix.entry.version }}
OPENSEARCH_PASSWORD: ${{ matrix.entry.admin_password || 'myStrongPassword123!' }}
OPENSEARCH_JAVA_OPTS: ${{ matrix.entry.opts }} -Xms8g -Xmx8g
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '20'
- name: Install Dependencies
run: npm ci
- name: Run OpenSearch Cluster
working-directory: tests/${{ matrix.entry.tests || 'default' }}
run: docker compose up -d
- name: Run Tests
run: |
npm run test:spec -- \
--opensearch-insecure \
--opensearch-version=${{ matrix.entry.version }} \
--coverage coverage/test-spec-coverage-${{ matrix.entry.version }}-${{ matrix.entry.tests || 'default' }}.json \
--tests=tests/${{ matrix.entry.tests || 'default' }}
- name: Get Container Logs
if: failure()
run: |
for container_id in $(docker ps -aqf "ancestor=opensearchproject/opensearch:${{ matrix.entry.version }}"); do \
echo Dumping logs from $container_id ... && \
docker logs $container_id \
; done
- name: Upload Test Coverage Results
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.entry.version }}-${{ hashFiles(format('tests/{0}', matrix.entry.tests || 'default')) }}
path: coverage/test-spec-coverage-${{ matrix.entry.version }}-${{ matrix.entry.tests || 'default' }}.json
merge-coverage:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
needs: test-opensearch-spec
steps:
- uses: actions/checkout@v4
- name: Download Spec Coverage Data
uses: actions/download-artifact@v4
with:
path: coverage
- name: Combine Test Coverage Data
shell: bash -eo pipefail {0}
run: |
jq -sc '
(map(.operations) | add | unique | length) as $total_operations_count |
(map(.evaluated_operations) | add | unique | length) as $evaluated_operations_count |
{
total_operations_count: $total_operations_count,
evaluated_operations_count: $evaluated_operations_count,
evaluated_paths_pct: $evaluated_operations_count | (10000 * . / $total_operations_count | round / 100)
}
' $(find ./coverage -name "test-spec-coverage-*.json") > ./coverage/coverage.json
cat ./coverage/coverage.json
- name: Construct Comment Data Payload
shell: bash -eo pipefail {0}
run: |
jq \
--arg pr_number ${PR_NUMBER} \
--slurpfile test_coverage ./coverage/coverage.json \
--null-input '
{
"pr_number": ($pr_number),
"comment_identifier": "## Spec Test Coverage Analysis",
"template_name": "pr-test-coverage-analysis",
"template_data": {
"test_coverage": ($test_coverage[0])
}
}
' | tee pr-comment.json
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
- name: Upload PR Comment Payload
uses: actions/upload-artifact@v4
with:
name: pr-comment
path: pr-comment.json