Skip to main content

umpk-integration-testing

Run UMPK end-to-end tests against isolated local vanilla Minecraft Java servers. Use for live protocol, lifecycle, movement, inventory, registry, proxy, or version-matrix validation where unit tests are insufficient.

설치로 이동

소스 정보

저장소
MCCTeam/UMPK
최근 소스 활동
2026년 9월 12일 15:34
감지된 SKILL.md 언어
영어
스타
3
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
5 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
umpk-integration-testing
description
Run UMPK end-to-end tests against isolated local vanilla Minecraft Java servers. Use for live protocol, lifecycle, movement, inventory, registry, proxy, or version-matrix validation where unit tests are insufficient.
metadata
{"compatibility":"Linux or macOS with .NET 10, Python 3, compatible JDKs, and local disk space for untracked vanilla artifacts."}
# UMPK integration testing Use the repository's `Umpk.IntegrationTests` live harness. It boots one isolated server per test, assigns private ports, caps the server heap at 1 GiB, waits for real listener readiness, and disposes the process after the leg. Do not substitute login success for feature validation. ## Read first - Read `references/minecraft-official.md` before provisioning or decompiling game artifacts. - Read `tests/Umpk.IntegrationTests/LiveMatrix.cs` for the 49 protocol representatives. - Read the affected live test before running it. Its assertions define the claimed coverage. ## Workflow 1. Record `git rev-parse HEAD` and `git status --short`. 2. Run `scripts/preflight.sh`. 3. Provision the exact representative versions with `scripts/provision_servers.py`. 4. Build UMPK in Release mode. 5. Run the focused live leg with fresh output under `/tmp`. 6. Run the adjacent era boundary when the behavior is version-sensitive. 7. Run `scripts/run_live_matrix.sh` only after all 49 representatives are provisioned. 8. Confirm no server process or listener owned by the run remains. Never use another checkout's binaries, server directory, Java source tree, or logs. Set `UMPK_SERVER_ROOT` and `UMPK_ORACLE_ROOT` explicitly when the repository-local defaults are not used. ## Location overrides The official artifacts do not have to live inside this checkout: ```bash export UMPK_ORACLE_ROOT=/absolute/path/to/MinecraftOfficial export UMPK_SERVER_ROOT=/absolute/path/to/server-directories python3 .skills/umpk-integration-testing/scripts/provision_servers.py \ --root "$UMPK_ORACLE_ROOT" --accept-eula 26.2 ``` `UMPK_ORACLE_ROOT` owns downloads, mappings, and `<version>-decompiled` source trees. `UMPK_SERVER_ROOT` owns the per-version directories consumed by the live Harness; omit it when those directories are at `$UMPK_ORACLE_ROOT/downloads`. `--root` overrides the provisioner's destination. Use absolute paths and keep both roots outside tracked repository content. ## Provisioning ```bash python3 .skills/umpk-integration-testing/scripts/provision_servers.py \ --accept-eula 1.8 1.12.2 1.16.5 1.20.4 1.21.11 26.2 ``` The script downloads official artifacts, verifies Mojang's SHA-1, and writes them below the ignored `MinecraftOfficial/downloads/<version>/` tree. It never places artifacts in tracked paths. ## Running ```bash dotnet build UMPK.sln -c Release UMPK_NIGHTLY=1 \ UMPK_SERVER_ROOT="$PWD/MinecraftOfficial/downloads" \ dotnet test tests/Umpk.IntegrationTests/Umpk.IntegrationTests.csproj \ -c Release --no-build --filter 'Category=Nightly' ``` The full feature theory requires every representative server directory. A missing directory is not a pass. For a focused test, use an xUnit fully-qualified-name filter and inspect which theory rows the runner actually executed. ## Evidence contract Report these fields separately: - **Executed:** commit, command, test name, versions, protocols, Java executables, and ports. - **Observed:** assertions, client state, peer/server observations, and exit codes. - **Inferred:** conclusions not directly demonstrated by that run. - **Not run:** missing prerequisites, skipped rows, interrupted work, and adjacent versions. - **Harness fault:** provisioning, Java, port, timeout, or cleanup failure. A result is valid only when its assertion is caused by a fresh action in that leg. Prefer independent server-side observation for movement, inventory, entity, and disconnect behavior. Reproduce a failure in a fresh isolated run before attributing it to UMPK. ## Isolation rules - Respect the system-wide process and memory limit declared for the run. - Use unique directories and ports for concurrent work. - Count foreign server processes toward the capacity limit, but never stop them. - Do not modify a runner while it is active. Stop it, void the partial evidence, and rerun. - Use bounded blocking waits. Do not poll long-running jobs at short intervals. - Keep raw logs and downloaded artifacts outside Git. ## When not to use Do not use this skill for build-only checks, static source comparison, documentation-only changes, or public-server testing. Public servers and authenticated accounts require explicit authorization.
GitHub에서 보기