Skip to content

Test

Test #1363

Workflow file for this run

# SPDX-License-Identifier: Apache-2.0
# Copyright 2022 Atlan Pte. Ltd.
name: "Test"
permissions:
contents: read
on:
schedule:
- cron: "0 4 * * *"
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
name: "Build"
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
java-version: 21
distribution: temurin
- uses: gradle/actions/setup-gradle@v5
with:
add-job-summary: on-failure
- name: Compile
run: ./gradlew assemble shadowJar testClasses
- name: Upload build artifacts
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: build-artifacts
path: |
**/build/libs/*.jar
**/build/classes/
retention-days: 1
compression-level: 0
list-integration-tests:
runs-on: ubuntu-latest
outputs:
tests: ${{ steps.test-files.outputs.tests }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: List integration tests
id: test-files
run: |
tests=$(ls integration-tests/src/test/java/com/atlan/java/sdk/*Test.java | sed -E 's|.*/src/test/java/com/atlan/java/sdk/||; s|/|.|g; s|\.java$||' | tr '\n' ' ')
json_tests=$(echo "$tests[@]}" | jq -R -c 'split(" ")[:-1]')
echo "tests=$json_tests" >> $GITHUB_OUTPUT
integration-test:
needs:
- build
- list-integration-tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
tests: ${{fromJson(needs.list-integration-tests.outputs.tests)}}
concurrency:
group: ${{ matrix.tests }}
name: "Integration"
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Download artifacts
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: build-artifacts
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
java-version: 21
distribution: temurin
- uses: gradle/actions/setup-gradle@v5
with:
cache-read-only: true
gradle-home-cache-cleanup: false
add-job-summary: on-failure
- name: Integration tests
env:
ATLAN_BASE_URL: ${{ secrets.ATLAN_BASE_URL }}
ATLAN_API_KEY: ${{ secrets.ATLAN_API_KEY }}
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
JAVA_TOOL_OPTIONS: "-Djava.io.tmpdir=/home/runner"
run: ./gradlew -PintegrationTests integration-tests:test --tests "com.atlan.java.sdk.${{ matrix.tests }}" -x assemble -x testClasses -x buildSrc:jar
- if: success() || failure()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: ${{ matrix.tests }}
path: integration-tests/${{ matrix.tests }}.log
list-packages:
runs-on: ubuntu-latest
outputs:
tests: ${{ steps.test-directories.outputs.tests }}
asset-import-chunks: ${{ steps.asset-import-chunks.outputs.chunks }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: List package tests
id: test-directories
run: |
pkgs=$(find samples/packages -type d -mindepth 1 -maxdepth 1 | sed -E 's|samples/packages/||' | grep -v '^build$' | grep -v '^asset-import$' | tr '\n' ' ')
json_pkgs=$(echo "${pkgs[@]}" | jq -R -c 'split(" ")[:-1]')
echo "tests=$json_pkgs" >> $GITHUB_OUTPUT
- name: Create asset-import test chunks
id: asset-import-chunks
run: |
# Find all test classes
test_classes=$(find samples/packages/asset-import -name "*Test.kt" -type f | \
sed -E 's|samples/packages/asset-import/src/test/kotlin/||' | \
sed -E 's|/|.|g' | \
sed -E 's|.kt$||' | \
sort)
# Split into chunks of 10
chunks=$(echo "$test_classes" | jq -R -s -c '
split("\n")[:-1] |
[range(0; length; 10) as $i | .[$i:$i+10]] |
to_entries |
map({chunk: .key, tests: .value})
')
echo "chunks=$chunks" >> $GITHUB_OUTPUT
asset-import-test:
needs:
- build
- list-packages
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include: ${{fromJson(needs.list-packages.outputs.asset-import-chunks)}}
name: "asset-import: chunk ${{ matrix.chunk }}"
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Download artifacts
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: build-artifacts
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
java-version: 21
distribution: temurin
- uses: gradle/actions/setup-gradle@v5
with:
cache-read-only: true
gradle-home-cache-cleanup: false
add-job-summary: on-failure
- name: Run test chunk
env:
ATLAN_BASE_URL: ${{ secrets.ATLAN_BASE_URL }}
ATLAN_API_KEY: ${{ secrets.ATLAN_API_KEY }}
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
JAVA_TOOL_OPTIONS: "-Djava.io.tmpdir=/home/runner"
run: |
test_args=$(echo '${{ toJson(matrix.tests) }}' | jq -r '.[] | "--tests " + .')
./gradlew -PpackageTests :samples:packages:asset-import:test $test_args -x assemble -x testClasses -x buildSrc:jar
- if: success() || failure()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: asset-import-chunk-${{ matrix.chunk }}
path: samples/packages/asset-import/**/debug.log
package-test:
needs:
- build
- list-packages
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
tests: ${{fromJson(needs.list-packages.outputs.tests)}}
concurrency:
group: ${{ matrix.tests }}
name: "Packages"
steps:
# - name: Free disk space
# if: matrix.tests == 'asset-import'
# uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Download artifacts
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: build-artifacts
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
java-version: 21
distribution: temurin
- uses: gradle/actions/setup-gradle@v5
with:
cache-read-only: true
gradle-home-cache-cleanup: false
add-job-summary: on-failure
- name: Package tests
env:
ATLAN_BASE_URL: ${{ secrets.ATLAN_BASE_URL }}
ATLAN_API_KEY: ${{ secrets.ATLAN_API_KEY }}
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
JAVA_TOOL_OPTIONS: "-Djava.io.tmpdir=/home/runner"
run: ./gradlew -PpackageTests :samples:packages:${{ matrix.tests }}:test -x assemble -x testClasses -x buildSrc:jar
- if: success() || failure()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: ${{ matrix.tests }}
path: samples/packages/${{ matrix.tests }}/**/debug.log