aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/test_manual.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/test_manual.yml')
-rw-r--r--.github/workflows/test_manual.yml254
1 files changed, 254 insertions, 0 deletions
diff --git a/.github/workflows/test_manual.yml b/.github/workflows/test_manual.yml
new file mode 100644
index 000000000..dd27f0260
--- /dev/null
+++ b/.github/workflows/test_manual.yml
@@ -0,0 +1,254 @@
+name: Manual Test Run
+env:
+ XMAKE_VERSION: 2.9.9
+ WINDOWS_SDK_VERSION: 22621
+ XMAKE_GLOBALDIR: ${{ github.workspace }}/../.xmake_shared
+
+on:
+ workflow_dispatch:
+ inputs:
+ platform:
+ description: 'Platform to test on'
+ required: true
+ type: choice
+ options:
+ - windows
+ - linux
+ - macos
+ - all
+ default: 'windows'
+ malloc:
+ description: 'Memory allocator override (runtime --malloc flag passed to test binaries)'
+ type: choice
+ options:
+ - default
+ - stomp
+ - mimalloc
+ - rpmalloc
+ default: 'default'
+ sanitizer:
+ description: 'Sanitizer to enable (triggers full rebuild)'
+ type: choice
+ options:
+ - none
+ - asan
+ - tsan
+ - msan
+ default: 'none'
+ test_suite:
+ description: 'Test suite to run (core, store, server, integration, http, util, remotestore, all)'
+ type: string
+ default: 'all'
+ extra_args:
+ description: 'Extra arguments passed to test runners (after --)'
+ type: string
+ default: ''
+
+jobs:
+ windows-test:
+ name: Test Windows
+ if: ${{ inputs.platform == 'windows' || inputs.platform == 'all' }}
+ runs-on: [windows, x64, zen]
+ timeout-minutes: 40
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Trust workspace
+ run: git config --global --add safe.directory "${{ github.workspace }}"
+
+ - name: Setup xmake
+ uses: ue-foundation/[email protected]
+ with:
+ xmake-version: ${{ env.XMAKE_VERSION }}
+
+ - name: Config
+ run: |
+ $SanitizerFlag = ""
+ if ("${{ inputs.sanitizer }}" -ne "none") {
+ $SanitizerFlag = "--${{ inputs.sanitizer }}=y"
+ }
+ xmake config -vD -y -m debug --arch=x64 --zensentry=no $SanitizerFlag
+
+ - name: Clean reports
+ run: if (Test-Path build/reports) { Remove-Item -Recurse -Force build/reports }
+
+ - name: Kill stale test processes
+ shell: powershell
+ run: |
+ scripts\test_scripts\kill-test-processes.ps1 -Label stale -BuildDir "${{ github.workspace }}\build"
+
+ - name: Build & Test
+ run: |
+ $ExtraArgs = @()
+ if ("${{ inputs.malloc }}" -ne "default") {
+ $ExtraArgs += "--malloc=${{ inputs.malloc }}"
+ }
+ $UserArgs = "${{ inputs.extra_args }}"
+ if ($UserArgs) {
+ $ExtraArgs += $UserArgs -split ' '
+ }
+ $Cmd = "xmake test -v -y --run=${{ inputs.test_suite }} --junit"
+ if ($ExtraArgs.Count -gt 0) {
+ $Cmd += " -- " + ($ExtraArgs -join ' ')
+ }
+ Write-Host "Running: $Cmd"
+ Invoke-Expression $Cmd
+
+ - name: Kill test processes
+ if: always()
+ shell: powershell
+ run: |
+ scripts\test_scripts\kill-test-processes.ps1 -Label leftover -BuildDir "${{ github.workspace }}\build"
+
+ - name: Upload report
+ if: failure() || success()
+ uses: actions/upload-artifact@v3-node20
+ with:
+ name: reports-win64-${{ inputs.sanitizer }}-${{ inputs.malloc }}
+ path: build/reports/*.xml
+
+ - name: Test Report
+ if: failure() || success()
+ uses: ue-foundation/test-reporter@v2
+ with:
+ name: Test Results (win64, ${{ inputs.sanitizer }}, malloc=${{ inputs.malloc }})
+ path: build/reports/*.xml
+ reporter: java-junit
+ list-tests: 'failed'
+
+ linux-test:
+ name: Test Linux
+ if: ${{ inputs.platform == 'linux' || inputs.platform == 'all' }}
+ runs-on: [linux, x64, zen]
+ timeout-minutes: 40
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Install UE Toolchain
+ run: |
+ rm -rf ./.tmp-ue-toolchain
+ ./scripts/ue_build_linux/get_ue_toolchain.sh ./.tmp-ue-toolchain
+
+ - name: Setup xmake
+ uses: ue-foundation/[email protected]
+ with:
+ xmake-version: ${{ env.XMAKE_VERSION }}
+
+ - name: Config
+ run: |
+ SANITIZER_FLAG=""
+ if [ "${{ inputs.sanitizer }}" != "none" ]; then
+ SANITIZER_FLAG="--${{ inputs.sanitizer }}=y"
+ fi
+ xmake config -v -y -m debug --arch=x86_64 --zensentry=no --toolchain=ue-clang --sdk=${{ github.workspace }}/.tmp-ue-toolchain $SANITIZER_FLAG
+
+ - name: Clean reports
+ run: rm -rf build/reports
+
+ - name: Kill stale test processes
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh stale "${{ github.workspace }}/build"
+
+ - name: Build & Test
+ run: |
+ set -x
+ EXTRA_ARGS=""
+ MALLOC_ARG=""
+ if [ "${{ inputs.malloc }}" != "default" ]; then
+ MALLOC_ARG="--malloc=${{ inputs.malloc }}"
+ fi
+ USER_ARGS="${{ inputs.extra_args }}"
+ if [ -n "$MALLOC_ARG" ] || [ -n "$USER_ARGS" ]; then
+ EXTRA_ARGS="-- $MALLOC_ARG $USER_ARGS"
+ fi
+ xmake test -v -y --run=${{ inputs.test_suite }} --junit $EXTRA_ARGS
+
+ - name: Kill test processes
+ if: always()
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh leftover "${{ github.workspace }}/build"
+
+ - name: Upload report
+ if: failure() || success()
+ uses: actions/upload-artifact@v3-node20
+ with:
+ name: reports-linux-${{ inputs.sanitizer }}-${{ inputs.malloc }}
+ path: build/reports/*.xml
+
+ - name: Test Report
+ if: failure() || success()
+ uses: ue-foundation/test-reporter@v2
+ with:
+ name: Test Results (linux, ${{ inputs.sanitizer }}, malloc=${{ inputs.malloc }})
+ path: build/reports/*.xml
+ reporter: java-junit
+ list-tests: 'failed'
+
+ macos-test:
+ name: Test macOS
+ if: ${{ inputs.platform == 'macos' || inputs.platform == 'all' }}
+ runs-on: [macos, x64, zen]
+ timeout-minutes: 40
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup xmake
+ uses: ue-foundation/[email protected]
+ with:
+ xmake-version: ${{ env.XMAKE_VERSION }}
+
+ - name: Config
+ run: |
+ SANITIZER_FLAG=""
+ if [ "${{ inputs.sanitizer }}" != "none" ]; then
+ SANITIZER_FLAG="--${{ inputs.sanitizer }}=y"
+ fi
+ xmake config -v -y -m debug --arch=x86_64 --zensentry=no $SANITIZER_FLAG
+
+ - name: Clean reports
+ run: rm -rf build/reports
+
+ - name: Kill stale test processes
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh stale "${{ github.workspace }}/build"
+
+ - name: Build & Test
+ run: |
+ set -x
+ EXTRA_ARGS=""
+ MALLOC_ARG=""
+ if [ "${{ inputs.malloc }}" != "default" ]; then
+ MALLOC_ARG="--malloc=${{ inputs.malloc }}"
+ fi
+ USER_ARGS="${{ inputs.extra_args }}"
+ if [ -n "$MALLOC_ARG" ] || [ -n "$USER_ARGS" ]; then
+ EXTRA_ARGS="-- $MALLOC_ARG $USER_ARGS"
+ fi
+ xmake test -v -y --run=${{ inputs.test_suite }} --junit $EXTRA_ARGS
+
+ - name: Kill test processes
+ if: always()
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh leftover "${{ github.workspace }}/build"
+
+ - name: Upload report
+ if: failure() || success()
+ uses: actions/upload-artifact@v3-node20
+ with:
+ name: reports-macos-${{ inputs.sanitizer }}-${{ inputs.malloc }}
+ path: build/reports/*.xml
+
+ - name: Test Report
+ if: failure() || success()
+ uses: ue-foundation/test-reporter@v2
+ with:
+ name: Test Results (macos, ${{ inputs.sanitizer }}, malloc=${{ inputs.malloc }})
+ path: build/reports/*.xml
+ reporter: java-junit
+ list-tests: 'failed'