diff --git a/CHANGELOG.md b/CHANGELOG.md index ee1616b..537aaec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,3 +31,8 @@ Alle relevanten Änderungen dieses Projekts werden in dieser Datei dokumentiert. - Compose-UI nutzt stärkere asynchrone Sperrlogik via Mutex für Command-Dispatch und aktualisiert Laufzeitmetriken automatisch bei aktiver Verbindung. - Compose-UI enthält nun einen dynamischen Server-Browser mit Profilverwaltung, Direkt-Connect/Ping-Aktionen und Server-spezifischer Metrikverfolgung. - CI-Workflow nutzt nun explizites Gradle-Warmup und Retry-Strategien für Plugin-/Dependency-Auflösung, um transiente Auflösungsfehler robuster abzufangen. + +### Documentation + +- Alle Markdown-Dokumente wurden um vollständige Setup-Voraussetzungen und eine konkrete `run test`-Durchführung erweitert. +- Einheitliche Befehle für Gradle-Warmup, JVM-Tests, native CMake/CTest-Läufe und abschließendes `./gradlew --no-daemon check build --stacktrace` wurden dokumentiert. diff --git a/Projectvorstellungs.md b/Projectvorstellungs.md index b382a6f..25d524c 100644 --- a/Projectvorstellungs.md +++ b/Projectvorstellungs.md @@ -56,3 +56,24 @@ Das Repository ist bereits so strukturiert, dass UI, Bridge und Native-Layer una - Entwickler, die Kotlin- und C++-Interop evaluieren möchten - Teams, die einen kontrollierten Multiplayer-nahen Clientzustand visualisieren wollen - Mitwirkende, die ein klar dokumentiertes Compose/NDK-Beispiel suchen + +## Vollständiges Setup und Durchführung `run test` + +### Setup + +1. Repository lokal öffnen und in das Repository-Root wechseln. +2. Gradle Wrapper freischalten: + + ```bash + chmod +x ./gradlew + ``` + +3. Notwendige Toolchain: + - JDK 17 + - Android SDK 34 + - Android NDK `27.3.13750724` + - CMake 3.22.1+ + +### Testdurchführung + +Für den vollständigen projektweiten `run test` mit allen Schritten (Gradle-Warmup, JVM-Tests, native Host-Tests, abschließendes `check build`) siehe `/README.md`. diff --git a/README.md b/README.md index f1c56d0..10899bf 100644 --- a/README.md +++ b/README.md @@ -207,11 +207,13 @@ chmod +x ./gradlew Zusätzlich für native Host-Tests: ```bash -cmake -S app/src/main/cpp -B /tmp/androidsa-native-tests -DANDROIDSA_ENABLE_NATIVE_TESTS=ON -cmake --build /tmp/androidsa-native-tests --target client_state_test -ctest --test-dir /tmp/androidsa-native-tests --output-on-failure +cmake -S app/src/main/cpp -B build/native-tests -DANDROIDSA_ENABLE_NATIVE_TESTS=ON +cmake --build build/native-tests --target client_state_test +ctest --test-dir build/native-tests --output-on-failure ``` +`build/native-tests` liegt unter `build/` und ist per `.gitignore` vom Commit ausgeschlossen. + ### Lokaler Google-Maven-Fallback für blockierte Umgebungen Wenn `dl.google.com` lokal nicht aufgelöst oder durch die Laufzeitumgebung blockiert wird, kann ein lokaler Mirror-Proxy für Google-Maven-Artefakte gestartet werden: @@ -259,10 +261,60 @@ Die Pipeline führt aus: - **JNI-Library lädt nicht:** sicherstellen, dass `androidsa` erfolgreich gebaut wurde - **Gradle-Abhängigkeiten schlagen fehl:** Google Maven und Maven Central Erreichbarkeit prüfen; in blockierten Agent-Umgebungen den lokalen Mirror via `tools/google_maven_proxy.py` und `ANDROIDSA_GOOGLE_MAVEN_URL=http://127.0.0.1:38473/` verwenden -- **Native Tests schlagen fehl:** Build-Verzeichnis unter `/tmp/androidsa-native-tests` neu erzeugen +- **Native Tests schlagen fehl:** Build-Verzeichnis unter `build/native-tests` neu erzeugen - **Command wird abgelehnt:** Syntax, Maximallänge, verbotene Zeichen und Wertebereich prüfen - **Keine Paketereignisse sichtbar:** Connect- oder Simulations-Commands erneut auslösen, damit neue UDP-Probes erzeugt werden +## Vollständiges Setup und Durchführung der Testläufe + +### Setup-Schritte + +1. Repository klonen und in das Projektverzeichnis wechseln. +2. Gradle Wrapper ausführbar machen: + + ```bash + chmod +x ./gradlew + ``` + +3. Android-Toolchain bereitstellen: + - JDK 17 + - Android SDK 34 + - NDK `27.3.13750724` + - CMake 3.22.1+ +4. Optional in eingeschränkten Netzumgebungen den lokalen Google-Maven-Proxy starten: + + ```bash + python3 tools/google_maven_proxy.py --port 38473 + ``` + +### Durchführung `run test` + +1. Dependency-/Plugin-Auflösung vorwärmen: + + ```bash + ./gradlew --no-daemon help :app:testDebugUnitTest :app:assemble --stacktrace --refresh-dependencies + ``` + +2. JVM-Unit-Tests ausführen: + + ```bash + ./gradlew --no-daemon :app:testDebugUnitTest --stacktrace + ``` + +3. Native Host-Tests ausführen: + + ```bash + cmake -S app/src/main/cpp -B build/native-tests -DANDROIDSA_ENABLE_NATIVE_TESTS=ON + cmake --build build/native-tests --target client_state_test + ctest --test-dir build/native-tests --output-on-failure + ``` + +4. Vollständige Projektvalidierung abschließen: + + ```bash + ./gradlew --no-daemon check build --stacktrace + ``` + ## Lizenz Proprietary (XRDOGE-XRPL) diff --git a/app/README.md b/app/README.md index aeb1f88..e02f934 100644 --- a/app/README.md +++ b/app/README.md @@ -100,3 +100,35 @@ Diese Regeln werden im nativen Layer erneut abgesichert. - Änderungen an Summary-Feldern müssen mit dem nativen Format synchron bleiben - UI-Texte sollten zum tatsächlichen Laufzeitverhalten der nativen Commands passen - Race-Conditions besonders bei Busy-State, Auto-Refresh und manuellem Dispatch beachten + +## Vollständiges Setup und Durchführung `run test` + +### Setup im App-Modul + +1. In das Repository-Root wechseln. +2. Gradle Wrapper aktivieren: + + ```bash + chmod +x ./gradlew + ``` + +3. Lokale Toolchain sicherstellen: + - JDK 17 + - Android SDK 34 + - NDK `27.3.13750724` + - CMake 3.22.1+ +4. Bei blockiertem Google Maven optional: + + ```bash + python3 tools/google_maven_proxy.py --port 38473 + ``` + +### Durchführung Testlauf (App-Modul) + +```bash +./gradlew --no-daemon help :app:testDebugUnitTest :app:assemble --stacktrace --refresh-dependencies +./gradlew --no-daemon :app:testDebugUnitTest --stacktrace +./gradlew --no-daemon :app:check :app:build --stacktrace +``` + +Für den vollständigen projektweiten `run test` (inkl. Root-`check build`) siehe `/README.md`. diff --git a/app/src/main/cpp/README.md b/app/src/main/cpp/README.md index 09d2330..8106111 100644 --- a/app/src/main/cpp/README.md +++ b/app/src/main/cpp/README.md @@ -116,9 +116,9 @@ Das Logging wird nach erfolgreichen Dispatches mit der aktuellen Diagnostics-Mel ### Direkter Host-Testlauf ```bash -cmake -S app/src/main/cpp -B /tmp/androidsa-native-tests -DANDROIDSA_ENABLE_NATIVE_TESTS=ON -cmake --build /tmp/androidsa-native-tests --target client_state_test -ctest --test-dir /tmp/androidsa-native-tests --output-on-failure +cmake -S app/src/main/cpp -B build/native-tests -DANDROIDSA_ENABLE_NATIVE_TESTS=ON +cmake --build build/native-tests --target client_state_test +ctest --test-dir build/native-tests --output-on-failure ``` ## Änderungsrichtlinien @@ -127,3 +127,29 @@ ctest --test-dir /tmp/androidsa-native-tests --output-on-failure - Änderungen an UDP-Probing oder Summary-Feldern mit Host-Test und JVM-Tests absichern - Event-Texte bewusst wählen, da sie direkt in der Android-Oberfläche erscheinen - Fehlerdiagnosen so formulieren, dass die Bridge sie konsistent als Fehlerzustand interpretieren kann + +## Vollständiges Setup und Durchführung `run test` + +### Setup für den nativen Layer + +1. Im Repository-Root arbeiten. +2. Voraussetzungen sicherstellen: + - JDK 17 (für Gradle/JVM-Tests) + - Android SDK 34 (für Gradle-Validierung) + - CMake 3.22.1+ + - Android NDK `27.3.13750724` +3. Optional Gradle-Wrapper ausführbar machen: + + ```bash + chmod +x ./gradlew + ``` + +### Durchführung Testlauf + +```bash +cmake -S app/src/main/cpp -B build/native-tests -DANDROIDSA_ENABLE_NATIVE_TESTS=ON +cmake --build build/native-tests --target client_state_test +ctest --test-dir build/native-tests --output-on-failure +``` + +Für den vollständigen app-/projektweiten Gradle-Testlauf siehe die zentrale Anleitung in `/README.md`. diff --git a/docs/RELEASE_CHECKLIST.md b/docs/RELEASE_CHECKLIST.md index a22ff11..99eb09f 100644 --- a/docs/RELEASE_CHECKLIST.md +++ b/docs/RELEASE_CHECKLIST.md @@ -1,5 +1,16 @@ # Release Checklist +## 0) Vollständiges Setup und Durchführung `run test` + +- [ ] Befehle werden im Repository-Root ausgeführt +- [ ] Gradle Wrapper ist ausführbar (`chmod +x ./gradlew`) +- [ ] Toolchain ist installiert (JDK 17, Android SDK 34, NDK `27.3.13750724`, CMake 3.22.1+) +- [ ] Optionaler Google-Maven-Proxy bei blockierten Netzwerken gestartet (`python3 tools/google_maven_proxy.py --port 38473`) +- [ ] Gradle-Warmup erfolgreich (`./gradlew --no-daemon help :app:testDebugUnitTest :app:assemble --stacktrace --refresh-dependencies`) +- [ ] JVM-Tests erfolgreich (`./gradlew --no-daemon :app:testDebugUnitTest --stacktrace`) +- [ ] Native Host-Tests erfolgreich (`cmake -S app/src/main/cpp -B build/native-tests -DANDROIDSA_ENABLE_NATIVE_TESTS=ON && cmake --build build/native-tests --target client_state_test && ctest --test-dir build/native-tests --output-on-failure`) +- [ ] Vollständige Validierung erfolgreich (`./gradlew --no-daemon check build --stacktrace`) + ## 1) Inhalt und Dokumentation - [ ] `CHANGELOG.md` unter `Unreleased` vollständig aktualisiert