Build optimization: pre-built PM3 binaries, ARM64 CI, base image caching
Replace PM3 compile-from-source in pi-gen with pre-built tarball extraction (saves 43-58 min). Merge stagePM3 into stageDangerousPi as 02-pm3-install substage, renumber all subsequent substages. Switch CI PM3 build to native ARM64 runner (ubuntu-24.04-arm64) eliminating QEMU overhead. Add weekly base-image workflow for pre-baking stages 0-2. Support PM3_TARBALL, BASE_IMAGE, and APT_PROXY env vars in build-image.sh. Also includes prior Phase 5 work: theme system, design system integration, component update system, OS updates, CI build pipeline, and test results. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
195
TEST_RESULTS_2026-03-03_v3.md
Normal file
195
TEST_RESULTS_2026-03-03_v3.md
Normal file
@@ -0,0 +1,195 @@
|
||||
# Dangerous Pi - Hardware Test Results
|
||||
|
||||
**Test Date**: 2026-03-03 12:41:00
|
||||
**Target**: dangerous-pi.local (http://dangerous-pi.local:8000/api)
|
||||
**Serial**: /dev/ttyUSB0 @ 115200
|
||||
**Tester**: Automated (test_hardware_2026-03-03.py)
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
| Metric | Count |
|
||||
|--------|-------|
|
||||
| Total Tests | 77 |
|
||||
| **PASS** | 58 |
|
||||
| **FAIL** | 0 |
|
||||
| **WARN** | 9 |
|
||||
| **SKIP** | 10 |
|
||||
| **Pass Rate** | 75.3% (excl. skips: 86.6%) |
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Phase 1: Regression - Jan 23 Issues
|
||||
|
||||
| # | Test | Status | Detail |
|
||||
|---|------|--------|--------|
|
||||
| 1.1 | WiFi status reports connected | ✅ PASS | ssid=XFSETUP-0D80, ip=10.0.0.249 |
|
||||
| 1.2 | UPS detected at boot | ✅ PASS | battery=100.0%, source=battery |
|
||||
| 1.3 | BLE advertising active | ✅ PASS | name=DangerousPi |
|
||||
| 1.4 | Pydantic namespace warning | ⚠️ WARN | Warning still present in logs |
|
||||
|
||||
**Phase Summary**: 3 pass, 0 fail, 1 warn, 0 skip
|
||||
|
||||
---
|
||||
|
||||
## ✅ Phase 2: Core Health & System Endpoints
|
||||
|
||||
| # | Test | Status | Detail |
|
||||
|---|------|--------|--------|
|
||||
| 2.1 | Health check | ✅ PASS | 17ms |
|
||||
| 2.2 | Readiness check | ✅ PASS | 15ms |
|
||||
| 2.3 | System info | ✅ PASS | temp=48.312°C, mem=170.0MB |
|
||||
| 2.4 | System config | ✅ PASS | 10ms |
|
||||
| 2.5 | Pi model info | ✅ PASS | {'model': 'Raspberry Pi Zero 2 W Rev 1.0', 'model_short': 'Pi Zero 2 W', 'total_cores': 4, 'default_active_cores': 2, 'm |
|
||||
| 2.6 | CPU cores | ✅ PASS | total=4, online=2 |
|
||||
| 2.7 | Power restrictions | ✅ PASS | 12ms |
|
||||
| 2.8 | Header widgets | ✅ PASS | 0 widgets |
|
||||
| 2.9 | Response time < 100ms avg | ✅ PASS | avg=12ms, min=8ms, max=23ms |
|
||||
|
||||
**Phase Summary**: 9 pass, 0 fail, 0 warn, 0 skip
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Phase 3: PM3 Hardware Integration
|
||||
|
||||
| # | Test | Status | Detail |
|
||||
|---|------|--------|--------|
|
||||
| 3.1 | Device discovery | ✅ PASS | 1 device(s), id=pm3_119fea49 |
|
||||
| 3.2 | Device status | ✅ PASS | {'device_id': 'pm3_119fea49', 'device_path': '/dev/ttyACM0', 'friendly_name': 'ttyACM0', 'serial_number': 'iceman', 'con |
|
||||
| 3.3 | PM3 overall status | ✅ PASS | connected=None |
|
||||
| 3.4 | Create session | ✅ PASS | id=0ca1fbe4-6218-46a5-9545-746797c866d2 |
|
||||
| 3.5 | Execute hw version | ✅ PASS | 1548ms |
|
||||
| 3.6 | Execute hw status | ✅ PASS | 2051ms |
|
||||
| 3.7 | Execute hw tune | ✅ PASS | 8602ms |
|
||||
| 3.8 | HF search | ✅ PASS | 9815ms |
|
||||
| 3.9 | LF search | ✅ PASS | 4950ms |
|
||||
| 3.10 | LED identify | ⚠️ WARN | HTTP timeout |
|
||||
| 3.11 | Command history | ✅ PASS | ? entries |
|
||||
| 3.12 | Session release | ✅ PASS | 10ms |
|
||||
| 3.14 | Command time < 1s | ⚠️ WARN | 1548ms (target < 1000ms) |
|
||||
|
||||
**Phase Summary**: 11 pass, 0 fail, 2 warn, 0 skip
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Phase 4: WiFi Manager
|
||||
|
||||
| # | Test | Status | Detail |
|
||||
|---|------|--------|--------|
|
||||
| 4.1 | WiFi status | ✅ PASS | mode=client, ssid=XFSETUP-0D80 |
|
||||
| 4.2 | Interface detection (wlan0) | ✅ PASS | mac=2c:cf:67:87:db:13, up=True |
|
||||
| 4.3 | Network scan | ✅ PASS | 13 networks found |
|
||||
| 4.4 | Saved networks | ⚠️ WARN | HTTP 404 |
|
||||
| 4.5 | Current connection | ✅ PASS | ip=10.0.0.249 |
|
||||
| 4.6 | WiFi mode report | ✅ PASS | mode=client |
|
||||
|
||||
**Phase Summary**: 5 pass, 0 fail, 1 warn, 0 skip
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Phase 5: HTTPS & SSL
|
||||
|
||||
| # | Test | Status | Detail |
|
||||
|---|------|--------|--------|
|
||||
| 5.1 | SSL info endpoint | ✅ PASS | 11ms |
|
||||
| 5.2 | SSL enabled field present | ✅ PASS | enabled=False |
|
||||
| 5.3 | Certificate SANs | ⚠️ WARN | No certificate generated yet |
|
||||
| 5.4 | HTTPS access | ⚠️ WARN | HTTPS not responding (may not be enabled): timeout |
|
||||
| 5.5 | SSL toggle endpoint | ⏭️ SKIP | Skipped to avoid disrupting connection |
|
||||
| 5.6 | Cert regeneration | ⏭️ SKIP | Skipped to avoid disrupting HTTPS state |
|
||||
| 5.7 | SSL cert script exists | ⚠️ WARN | Script not at expected path |
|
||||
| 5.8 | nginx config files | ✅ PASS | Found configs |
|
||||
|
||||
**Phase Summary**: 3 pass, 0 fail, 3 warn, 2 skip
|
||||
|
||||
---
|
||||
|
||||
## ✅ Phase 6: Authentication & WebSocket
|
||||
|
||||
| # | Test | Status | Detail |
|
||||
|---|------|--------|--------|
|
||||
| 6.1 | Auth status check | ✅ PASS | auth_enabled=False |
|
||||
| 6.2 | Enable auth via serial | ⏭️ SKIP | Auth is disabled, skipping auth toggle tests (use --phase 6 to run interactively) |
|
||||
| 6.3 | Auth test 6.3 | ⏭️ SKIP | Auth disabled on Pi |
|
||||
| 6.4 | Auth test 6.4 | ⏭️ SKIP | Auth disabled on Pi |
|
||||
| 6.5 | Auth test 6.5 | ⏭️ SKIP | Auth disabled on Pi |
|
||||
| 6.6 | Auth test 6.6 | ⏭️ SKIP | Auth disabled on Pi |
|
||||
| 6.7 | Auth test 6.7 | ⏭️ SKIP | Auth disabled on Pi |
|
||||
| 6.8 | Auth test 6.8 | ⏭️ SKIP | Auth disabled on Pi |
|
||||
| 6.9 | Auth test 6.9 | ⏭️ SKIP | Auth disabled on Pi |
|
||||
| 6.10 | WebSocket event stream | ✅ PASS | Received event: {'type': 'event', 'event': 'connected', 'data': {'message': 'Connected to Dangerous Pi event stream' |
|
||||
|
||||
**Phase Summary**: 2 pass, 0 fail, 0 warn, 8 skip
|
||||
|
||||
---
|
||||
|
||||
## ✅ Phase 7: Plugin System & Hooks
|
||||
|
||||
| # | Test | Status | Detail |
|
||||
|---|------|--------|--------|
|
||||
| 7.1 | Plugin discovery | ✅ PASS | Found: ['hello_world'] |
|
||||
| 7.2 | Plugin list | ✅ PASS | 1 plugin(s) |
|
||||
| 7.3 | Plugin info (hello_world) | ✅ PASS | version=1.0.0 |
|
||||
| 7.4 | Load plugin | ✅ PASS | 76ms |
|
||||
| 7.5 | Enable plugin | ✅ PASS | 13ms |
|
||||
| 7.6 | Hook trigger (pm3_command) | ✅ PASS | PM3 command executed with plugin enabled |
|
||||
| 7.7 | Plugin widgets | ✅ PASS | 13ms |
|
||||
| 7.8 | Disable plugin | ✅ PASS | 127ms |
|
||||
| 7.9 | Unload plugin | ✅ PASS | 17ms |
|
||||
| 7.10 | Invalid plugin returns 404 | ✅ PASS | 13ms |
|
||||
|
||||
**Phase Summary**: 10 pass, 0 fail, 0 warn, 0 skip
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Phase 8: BLE & UPS Hardware
|
||||
|
||||
| # | Test | Status | Detail |
|
||||
|---|------|--------|--------|
|
||||
| 8.1 | BLE status API | ✅ PASS | enabled=True, advertising=True, name=DangerousPi |
|
||||
| 8.2 | BLE scan from laptop | ⚠️ WARN | DangerousPi not found in scan (may need longer scan) |
|
||||
| 8.3 | Start BLE advertising | ✅ PASS | 5087ms |
|
||||
| 8.4 | Stop BLE advertising | ✅ PASS | 108ms |
|
||||
| 8.5 | Send BLE notification | ⚠️ WARN | HTTP 400 |
|
||||
| 8.7 | UPS status | ✅ PASS | battery=100.0%, voltage=4208.6145V, source=battery |
|
||||
| 8.8 | UPS thresholds | ✅ PASS | 27ms |
|
||||
| 8.9 | Power source detection | ✅ PASS | source=battery |
|
||||
| 8.10 | I2C device at 0x75 | ✅ PASS | PiSugar responds |
|
||||
|
||||
**Phase Summary**: 7 pass, 0 fail, 2 warn, 0 skip
|
||||
|
||||
---
|
||||
|
||||
## ✅ Phase 9: Frontend & Performance
|
||||
|
||||
| # | Test | Status | Detail |
|
||||
|---|------|--------|--------|
|
||||
| 9.1 | Frontend loads | ✅ PASS | 9955 bytes, has app markup |
|
||||
| 9.2 | Dashboard page | ✅ PASS | 9959 bytes, has app markup |
|
||||
| 9.3 | Commands page | ✅ PASS | 7226 bytes, has app markup |
|
||||
| 9.4 | Settings page | ✅ PASS | 7588 bytes, has app markup |
|
||||
| 9.5 | Logs page | ✅ PASS | 5584 bytes, has app markup |
|
||||
| 9.6 | Response time (10 requests) | ✅ PASS | avg=11ms, p95=16ms, min=8ms, max=16ms |
|
||||
| 9.7 | Memory usage | ✅ PASS | system total used: 184MB |
|
||||
| 9.8 | CPU temperature | ✅ PASS | 50.464°C (target < 70°C idle) |
|
||||
|
||||
**Phase Summary**: 8 pass, 0 fail, 0 warn, 0 skip
|
||||
|
||||
---
|
||||
|
||||
## Warnings
|
||||
|
||||
- **1.4 Pydantic namespace warning**: Warning still present in logs
|
||||
- **3.10 LED identify**: HTTP timeout
|
||||
- **3.14 Command time < 1s**: 1548ms (target < 1000ms)
|
||||
- **4.4 Saved networks**: HTTP 404
|
||||
- **5.3 Certificate SANs**: No certificate generated yet
|
||||
- **5.4 HTTPS access**: HTTPS not responding (may not be enabled): timeout
|
||||
- **5.7 SSL cert script exists**: Script not at expected path
|
||||
- **8.2 BLE scan from laptop**: DangerousPi not found in scan (may need longer scan)
|
||||
- **8.5 Send BLE notification**: HTTP 400
|
||||
|
||||
---
|
||||
|
||||
*Generated by test_hardware_2026-03-03.py*
|
||||
Reference in New Issue
Block a user