| name: On Host Test |
| description: Runs on-host tests. |
| inputs: |
| os: |
| description: "Host OS (either linux or windows)." |
| required: true |
| runs: |
| using: "composite" |
| steps: |
| - name: Set up Cloud SDK |
| uses: isarkis/setup-gcloud@40dce7857b354839efac498d3632050f568090b6 # v1.1.1 |
| - name: Configure Environment |
| id: configure-environment |
| shell: bash |
| run: | |
| set -x |
| if [ "${{inputs.os}}" == 'linux' ] |
| then |
| echo "ARCHIVE_EXTENSION=tar.xz" >> $GITHUB_ENV |
| elif [ "${{inputs.os}}" == 'windows' ] |
| then |
| echo "ARCHIVE_EXTENSION=tar.gz" >> $GITHUB_ENV |
| fi |
| - name: Download Archive |
| shell: bash |
| env: |
| WORKFLOW: ${{ github.workflow }} |
| run: | |
| set -x |
| PROJECT_NAME=$(gcloud config get-value project) |
| gsutil cp gs://${PROJECT_NAME}-test-artifacts/${WORKFLOW}/${GITHUB_RUN_NUMBER}/${{matrix.platform}}_${{matrix.config}}/${{matrix.platform}}_${{matrix.config}}.${ARCHIVE_EXTENSION} ${GITHUB_WORKSPACE}/out/tmp/${{matrix.platform}}_${{matrix.config}}.${ARCHIVE_EXTENSION} |
| - name: Extract Archive |
| shell: bash |
| run: | |
| set -x |
| parallel= |
| if [[ "${{inputs.os}}" == 'linux' ]]; then |
| parallel="--parallel" |
| fi |
| python3 ${GITHUB_WORKSPACE}/tools/create_archive.py -x -s ${GITHUB_WORKSPACE}/out/tmp/${{matrix.platform}}_${{matrix.config}}.${ARCHIVE_EXTENSION} -d ${GITHUB_WORKSPACE}/out ${parallel} |
| rm -rf ${GITHUB_WORKSPACE}/out/tmp |
| - name: Download Bootloader Archive |
| if: ${{ env.COBALT_BOOTLOADER != null && env.COBALT_BOOTLOADER != 'null' }} |
| shell: bash |
| env: |
| WORKFLOW: ${{ github.workflow }} |
| run: | |
| set -x |
| PROJECT_NAME=$(gcloud config get-value project) |
| gsutil cp gs://${PROJECT_NAME}-test-artifacts/${WORKFLOW}/${GITHUB_RUN_NUMBER}/${{matrix.platform}}_${{matrix.config}}/${COBALT_BOOTLOADER}_${{matrix.config}}.${ARCHIVE_EXTENSION} ${GITHUB_WORKSPACE}/out/tmp/${COBALT_BOOTLOADER}_${{matrix.config}}.${ARCHIVE_EXTENSION} |
| - name: Extract Bootloader Archive |
| if: ${{ env.COBALT_BOOTLOADER != null && env.COBALT_BOOTLOADER != 'null' }} |
| shell: bash |
| run: | |
| set -x |
| python3 ${GITHUB_WORKSPACE}/tools/create_archive.py -x -s ${GITHUB_WORKSPACE}/out/tmp/${COBALT_BOOTLOADER}_${{matrix.config}}.${ARCHIVE_EXTENSION} -d ${GITHUB_WORKSPACE}/out --parallel |
| rm -rf ${GITHUB_WORKSPACE}/out/tmp |
| - name: Set Env Variables |
| shell: bash |
| run: | |
| echo "PYTHONPATH=$GITHUB_WORKSPACE" >> $GITHUB_ENV |
| echo "TEST_RESULTS_DIR=${GITHUB_WORKSPACE}/unit-test-results" >> $GITHUB_ENV |
| echo "TEST_REPORT_FILE=${GITHUB_WORKSPACE}/${{matrix.platform}}-${{matrix.shard}}" >> $GITHUB_ENV |
| - name: Run Tests |
| shell: bash |
| run: | |
| set -x |
| loader_args='' |
| if [ "${COBALT_BOOTLOADER}" != "null" ]; then |
| loader_args="--loader_platform ${COBALT_BOOTLOADER} --loader_config ${{matrix.config}}" |
| fi |
| if [[ "${{matrix.shard}}" == 'integration' ]]; then |
| xvfb-run -a --server-args="-screen 0 1920x1080x24i +render +extension GLX -noreset" python3 $GITHUB_WORKSPACE/cobalt/black_box_tests/black_box_tests.py --platform ${{matrix.target_platform}} --config ${{matrix.config}} ${loader_args} |
| elif [[ "${{matrix.shard}}" == 'blackbox' ]]; then |
| xvfb-run -a --server-args="-screen 0 1920x1080x24i +render +extension GLX -noreset" python3 $GITHUB_WORKSPACE/cobalt/black_box_tests/black_box_tests.py --platform ${{matrix.target_platform}} --config ${{matrix.config}} ${loader_args} --test_set blackbox |
| elif [[ "${{matrix.shard}}" == 'wpt' ]]; then |
| xvfb-run -a --server-args="-screen 0 1920x1080x24i +render +extension GLX -noreset" python3 $GITHUB_WORKSPACE/cobalt/black_box_tests/black_box_tests.py --platform ${{matrix.target_platform}} --config ${{matrix.config}} ${loader_args} --test_set wpt |
| elif [[ "${{matrix.shard}}" == 'evergreen' ]]; then |
| xvfb-run -a --server-args="-screen 0 1920x1080x24i +render +extension GLX -noreset" python3 $GITHUB_WORKSPACE/cobalt/evergreen_tests/evergreen_tests.py --platform ${{matrix.target_platform}} --config ${{matrix.config}} ${loader_args} --no-can_mount_tmpfs |
| else |
| if [[ "${{inputs.os}}" == 'windows' ]]; then |
| python3 ${GITHUB_WORKSPACE}/starboard/tools/testing/test_runner.py --platform ${{matrix.target_platform}} --config ${{matrix.config}} -s ${{matrix.shard}} -r |
| else |
| xvfb-run -a --server-args="-screen 0 1920x1080x24i +render +extension GLX -noreset" python3 ${GITHUB_WORKSPACE}/starboard/tools/testing/test_runner.py --platform ${{matrix.target_platform}} --config ${{matrix.config}} -s ${{matrix.shard}} -r ${loader_args} --xml_output_dir=${TEST_RESULTS_DIR} |
| fi |
| fi |
| - name: Process unit test results |
| if: failure() |
| shell: bash |
| run: | |
| set -x |
| echo "Saving unit test report to ${TEST_REPORT_FILE}" |
| python3 ${GITHUB_WORKSPACE}/starboard/tools/testing/test_report_parser.py ${TEST_RESULTS_DIR} > ${TEST_REPORT_FILE} |
| - name: Upload unit test report |
| uses: actions/upload-artifact@v3 |
| if: failure() |
| with: |
| name: unit-test-reports |
| path: ${{env.TEST_REPORT_FILE}} |