118 lines
5.7 KiB
YAML
118 lines
5.7 KiB
YAML
name: checks
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
permissions:
|
|
contents: read
|
|
jobs:
|
|
verify:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Keep game artifacts out of Git
|
|
run: |
|
|
python3 tools/check_public_tree.py
|
|
python3 tools/check_public_tree.py --history
|
|
- name: Test offline research tooling
|
|
run: python3 -m unittest discover -s tests -v
|
|
- name: Install Rust toolchain
|
|
run: rustup toolchain install stable --profile minimal --component rustfmt --component clippy
|
|
- name: Check formatting and lint
|
|
run: |
|
|
cargo +stable fmt --all -- --check
|
|
cargo +stable clippy --workspace --all-targets -- -D warnings
|
|
- name: Test voxel kernel correctness
|
|
run: cargo +stable test --workspace
|
|
portable-mod:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, macos-26, windows-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.12'
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: '25'
|
|
- name: Compile original mod and test metrics
|
|
run: python tools/build_mod.py
|
|
- name: Verify streaming JFR analysis against the JDK exporter
|
|
run: python tools/test_jfr.py
|
|
- name: Verify ZGC pause and allocation event interpretation
|
|
run: python tools/test_jfr.py --gc zgc
|
|
- name: Build pinned portable packs
|
|
run: python tools/build_pack.py
|
|
- name: Measure isolated worker pacing on this platform
|
|
run: python -c "from tools.build_mod import benchmark_workers; benchmark_workers()"
|
|
- name: Measure isolated debounce queue polling
|
|
run: python -c "from tools.build_mod import benchmark_debounce; benchmark_debounce()"
|
|
- name: Measure wakeable idle queue latency
|
|
run: python -c "from tools.build_mod import benchmark_idle; benchmark_idle()"
|
|
- name: Measure object allocations with compact headers off and on
|
|
run: python -c "from tools.build_mod import benchmark_headers; benchmark_headers()"
|
|
- name: Test pack integrity and comparisons
|
|
run: python -m unittest discover -s tests -v
|
|
- name: Compile the private dispatch fixture
|
|
run: python -c "from tools.build_mod import build_dispatch_fixture; build_dispatch_fixture()"
|
|
- name: Compile the private terrain tick membership fixture
|
|
run: python -c "from tools.build_mod import build_tick_dedup_fixture; build_tick_dedup_fixture()"
|
|
- name: Compile the private culling whitelist fixture
|
|
run: python -c "from tools.build_mod import build_culling_empty_fixture; build_culling_empty_fixture()"
|
|
- name: Compile the private culling ray geometry fixture
|
|
run: python -c "from tools.build_mod import build_integration_fixture; build_integration_fixture('culling-rays', 'dev.horizonlab.dispatch.CullingRayIntegration', ['entityculling'], ['CullingRayAccess'])"
|
|
- name: Compile the private terrain position lookup fixture
|
|
run: python -c "from tools.build_mod import build_integration_fixture; build_integration_fixture('terrain-position', 'dev.horizonlab.dispatch.PositionIntegration')"
|
|
- name: Compile the private terrain quad reuse fixture
|
|
run: python -c "from tools.build_mod import build_integration_fixture; build_integration_fixture('quad-reuse', 'dev.horizonlab.dispatch.QuadReuseIntegration')"
|
|
- name: Compile the private terrain read shutdown fixture
|
|
run: python -c "from tools.build_mod import build_integration_fixture; build_integration_fixture('terrain-read', 'dev.horizonlab.dispatch.TerrainReadIntegration')"
|
|
- name: Install headless graphics libraries for applied-hook checks
|
|
if: runner.os == 'Linux'
|
|
run: sudo apt-get update && sudo apt-get install -y xvfb libgl1 libegl1 libvulkan1 mesa-vulkan-drivers libasound2t64 libxkbcommon0
|
|
- name: Exercise the applied dispatcher hooks and upstream rejection path
|
|
if: runner.os == 'Linux'
|
|
run: python tools/test_dispatch.py
|
|
- name: Verify applied tick membership transitions and allocation
|
|
if: runner.os == 'Linux'
|
|
run: python tools/test_tick_dedup.py
|
|
- name: Verify live culling whitelist registration and empty iteration
|
|
if: runner.os == 'Linux'
|
|
run: python tools/test_culling_empty.py
|
|
- name: Compare applied culling ray geometry and provider queries
|
|
if: runner.os == 'Linux'
|
|
run: python tools/test_culling_rays.py
|
|
- name: Verify actual full-data position lookup equivalence
|
|
if: runner.os == 'Linux'
|
|
run: python tools/test_terrain_position.py
|
|
- name: Verify actual terrain quad geometry and allocation
|
|
if: runner.os == 'Linux'
|
|
run: python tools/test_quad_reuse.py
|
|
- name: Verify interrupted DH reads and preserved shared futures
|
|
if: runner.os == 'Linux'
|
|
run: python tools/test_terrain_read.py
|
|
- name: Upload original mod and pack manifests only
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: horizon-${{ matrix.os }}
|
|
path: |
|
|
dist/*.mrpack
|
|
dist/horizon-lab-*.jar
|
|
dist/worker-pacing-benchmark.txt
|
|
dist/debounce-queue-benchmark.txt
|
|
dist/idle-queue-benchmark.txt
|
|
dist/object-header-benchmark.txt
|
|
dist/dispatch-integration.json
|
|
dist/tick-dedup-integration.json
|
|
dist/culling-empty-integration.json
|
|
dist/terrain-read-integration.json
|
|
dist/culling-rays-integration.json
|
|
dist/terrain-position-integration.json
|
|
dist/quad-reuse-integration.json
|