#
# Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

name: 'Run tests'

on:
  workflow_call:
    inputs:
      platform:
        required: true
        type: string
      bootjdk-platform:
        required: true
        type: string
      runs-on:
        required: true
        type: string
      xcode-toolset-version:
        required: false
        type: string
      dry-run:
        required: false
        type: boolean
        default: false
      debug-suffix:
        required: false
        type: string
      static-suffix:
        required: false
        type: string

env:
  # These are needed to make the MSYS2 bash work properly
  MSYS2_PATH_TYPE: minimal
  CHERE_INVOKING: 1

jobs:
  test:
    name: test
    runs-on: ${{ inputs.runs-on }}
    defaults:
      run:
        shell: bash

    strategy:
      fail-fast: false
      matrix:
        test-name:
          - 'jdk/tier1 part 1'
          - 'jdk/tier1 part 2'
          - 'jdk/tier1 part 3'
          - 'langtools/tier1'
          - 'hs/tier1 common'
          - 'hs/tier1 compiler part 1'
          - 'hs/tier1 compiler part 2'
          - 'hs/tier1 compiler part 3'
          - 'hs/tier1 gc'
          - 'hs/tier1 runtime'
          - 'hs/tier1 serviceability'
          - 'lib-test/tier1'

        include:
          - test-name: 'jdk/tier1 part 1'
            test-suite: 'test/jdk/:tier1_part1'

          - test-name: 'jdk/tier1 part 2'
            test-suite: 'test/jdk/:tier1_part2'

          - test-name: 'jdk/tier1 part 3'
            test-suite: 'test/jdk/:tier1_part3'

          - test-name: 'langtools/tier1'
            test-suite: 'test/langtools/:tier1'

          - test-name: 'hs/tier1 common'
            test-suite: 'test/hotspot/jtreg/:tier1_common'
            debug-suffix: ${{ inputs.debug-suffix }}

          - test-name: 'hs/tier1 compiler part 1'
            test-suite: 'test/hotspot/jtreg/:tier1_compiler_1'
            debug-suffix: ${{ inputs.debug-suffix }}

          - test-name: 'hs/tier1 compiler part 2'
            test-suite: 'test/hotspot/jtreg/:tier1_compiler_2'
            debug-suffix: ${{ inputs.debug-suffix }}

          - test-name: 'hs/tier1 compiler part 3'
            test-suite: 'test/hotspot/jtreg/:tier1_compiler_3'
            debug-suffix: ${{ inputs.debug-suffix }}

          - test-name: 'hs/tier1 gc'
            test-suite: 'test/hotspot/jtreg/:tier1_gc'
            debug-suffix: ${{ inputs.debug-suffix }}

          - test-name: 'hs/tier1 runtime'
            test-suite: 'test/hotspot/jtreg/:tier1_runtime'
            debug-suffix: ${{ inputs.debug-suffix }}

          - test-name: 'hs/tier1 serviceability'
            test-suite: 'test/hotspot/jtreg/:tier1_serviceability'
            debug-suffix: ${{ inputs.debug-suffix }}

          - test-name: 'lib-test/tier1'
            test-suite: 'test/lib-test/:tier1'
            debug-suffix: ${{ inputs.debug-suffix }}

    steps:
      - name: 'Checkout the JDK source'
        uses: actions/checkout@v4

      - name: 'Get MSYS2'
        uses: ./.github/actions/get-msys2
        if: runner.os == 'Windows'

      - name: 'Get the BootJDK'
        id: bootjdk
        uses: ./.github/actions/get-bootjdk
        with:
          platform: ${{ inputs.bootjdk-platform }}

      - name: 'Get JTReg'
        id: jtreg
        uses: ./.github/actions/get-jtreg

      - name: 'Get bundles'
        id: bundles
        uses: ./.github/actions/get-bundles
        with:
          platform: ${{ inputs.platform }}
          debug-suffix: ${{ matrix.debug-suffix }}
          static-suffix: ${{ inputs.static-suffix }}
        if: ${{ inputs.dry-run == false }}

      - name: 'Install dependencies'
        run: |
          # On macOS we need to install some dependencies for testing
          brew install make
          sudo xcode-select --switch /Applications/Xcode_${{ inputs.xcode-toolset-version }}.app/Contents/Developer
          # This will make GNU make available as 'make' and not only as 'gmake'
          echo '/usr/local/opt/make/libexec/gnubin' >> $GITHUB_PATH
        if: runner.os == 'macOS'

      - name: 'Set PATH'
        id: path
        run: |
          # We need a minimal PATH on Windows
          # Set PATH to "", so just GITHUB_PATH is included
          if [[ '${{ runner.os }}' == 'Windows' ]]; then
            echo "value=" >> $GITHUB_OUTPUT
          else
            echo "value=$PATH" >> $GITHUB_OUTPUT
          fi
          if [[ '${{ inputs.static-suffix }}' == '-static' ]]; then
            echo "static-hotspot-problemlist-path=`pwd`/test/hotspot/jtreg/ProblemList-StaticJdk.txt" >> $GITHUB_OUTPUT
            echo "static-jdk-problemlist-path=`pwd`/test/jdk/ProblemList-StaticJdk.txt" >> $GITHUB_OUTPUT
            echo "static-langtools-problemlist-path=`pwd`/test/langtools/ProblemList-StaticJdk.txt" >> $GITHUB_OUTPUT
            echo "static-lib-test-problemlist-path=`pwd`/test/lib-test/ProblemList-StaticJdk.txt" >> $GITHUB_OUTPUT
          fi

      - name: 'Set Extra Options'
        id: extra-options
        run: |
          if [[ '${{ inputs.static-suffix }}' == '-static' ]]; then
            echo "test-jdk=JDK_UNDER_TEST=${{ steps.bundles.outputs.static-jdk-path }}" >> $GITHUB_OUTPUT
            echo "compile-jdk=JDK_FOR_COMPILE=${{ steps.bundles.outputs.jdk-path }}" >> $GITHUB_OUTPUT
            echo "extra-problem-lists=EXTRA_PROBLEM_LISTS=${{ steps.path.outputs.static-hotspot-problemlist-path }}%20${{ steps.path.outputs.static-jdk-problemlist-path }}%20${{ steps.path.outputs.static-langtools-problemlist-path }}%20${{ steps.path.outputs.static-lib-test-problemlist-path }}" >> $GITHUB_OUTPUT
          fi

      - name: 'Run tests'
        id: run-tests
        run: >
          make test-prebuilt
          TEST='${{ matrix.test-suite }}'
          BOOT_JDK=${{ steps.bootjdk.outputs.path }}
          JT_HOME=${{ steps.jtreg.outputs.path }}
          JDK_IMAGE_DIR=${{ steps.bundles.outputs.jdk-path }}
          SYMBOLS_IMAGE_DIR=${{ steps.bundles.outputs.symbols-path }}
          TEST_IMAGE_DIR=${{ steps.bundles.outputs.tests-path }}
          ${{ steps.extra-options.outputs.test-jdk }}
          ${{ steps.extra-options.outputs.compile-jdk }}
          JTREG='JAVA_OPTIONS=-XX:-CreateCoredumpOnCrash;VERBOSE=fail,error,time;KEYWORDS=!headful;${{ steps.extra-options.outputs.extra-problem-lists }}'
          && bash ./.github/scripts/gen-test-summary.sh "$GITHUB_STEP_SUMMARY" "$GITHUB_OUTPUT"
        env:
          PATH: ${{ steps.path.outputs.value }}
        if: ${{ inputs.dry-run == false }}

        # This is a separate step, since if the markdown from a step gets bigger than
        # 1024 kB it is skipped, but then the short summary above is still generated
      - name: 'Generate test report'
        run: bash ./.github/scripts/gen-test-results.sh "$GITHUB_STEP_SUMMARY"
        if: always()

      - name: 'Package test results'
        id: package
        run: |
          # Package test-results and relevant parts of test-support
          mkdir results

          if [[ -d build/run-test-prebuilt/test-results ]]; then
            cd build/run-test-prebuilt/test-results/
            zip -r -9 "$GITHUB_WORKSPACE/results/test-results.zip" .
            cd $GITHUB_WORKSPACE
          else
            echo '::warning ::Missing test-results directory'
          fi

          if [[ -d build/run-test-prebuilt/test-support ]]; then
            cd build/run-test-prebuilt/test-support/
            zip -r -9 "$GITHUB_WORKSPACE/results/test-support.zip" . -i *.jtr -i */hs_err*.log -i */replay*.log
            cd $GITHUB_WORKSPACE
          else
            echo '::warning ::Missing test-support directory'
          fi

          artifact_name="results-${{ inputs.platform }}-$(echo ${{ matrix.test-name }}${{ inputs.static-suffix }} | tr '/ ' '__')"
          echo "artifact-name=$artifact_name" >> $GITHUB_OUTPUT
        if: always()

      - name: 'Upload test results'
        uses: actions/upload-artifact@v4
        with:
          path: results
          name: ${{ steps.package.outputs.artifact-name }}
        if: always()

        # This is the best way I found to abort the job with an error message
      - name: 'Notify about test failures'
        uses: actions/github-script@v7
        with:
          script: core.setFailed('${{ steps.run-tests.outputs.error-message }}')
        if: steps.run-tests.outputs.failure == 'true'
