Files
pi-pm3/TEST_RESULTS_2026-03-03.md
michael a9acdb85ce 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>
2026-03-04 12:01:01 -08:00

189 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Dangerous Pi - Hardware Test Results
**Test Date**: 2026-03-03 14:40:12
**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** | 62 |
| **FAIL** | 0 |
| **WARN** | 3 |
| **SKIP** | 12 |
| **Pass Rate** | 80.5% (excl. skips: 95.4%) |
---
## ⚠️ 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 | 137ms |
| 2.2 | Readiness check | ✅ PASS | 35ms |
| 2.3 | System info | ✅ PASS | temp=46.16°C, mem=193.0MB |
| 2.4 | System config | ✅ PASS | 16ms |
| 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 | 19ms |
| 2.8 | Header widgets | ✅ PASS | 0 widgets |
| 2.9 | Response time < 100ms avg | PASS | avg=41ms, min=8ms, max=91ms |
**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=d47ea1bd-1eb5-42af-aa29-99ce066566d6 |
| 3.5 | Execute hw version | WARN | Unexpected output: |
| 3.6 | Execute hw status | PASS | 362ms |
| 3.7 | Execute hw tune | WARN | No tune data in output (438ms) |
| 3.8 | HF search | PASS | 474ms |
| 3.9 | LF search | PASS | 426ms |
| 3.10 | LED identify | PASS | 5700ms |
| 3.11 | Command history | PASS | ? entries |
| 3.12 | Session release | PASS | 13ms |
| 3.14 | Command time < 1s | SKIP | hw version not tested |
**Phase Summary**: 10 pass, 0 fail, 2 warn, 1 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 | 16 networks found |
| 4.4 | Saved networks | PASS | ? saved |
| 4.5 | Current connection | PASS | ip=10.0.0.249 |
| 4.6 | WiFi mode report | PASS | mode=client |
**Phase Summary**: 6 pass, 0 fail, 0 warn, 0 skip
---
## ✅ Phase 5: HTTPS & SSL
| # | Test | Status | Detail |
|---|------|--------|--------|
| 5.1 | SSL info endpoint | PASS | 833ms |
| 5.2 | SSL enabled field present | PASS | enabled=True |
| 5.3 | Certificate SANs | PASS | SANs=['IP Address:192.168.4.1', 'DNS:dangerous-pi.local', 'DNS:dangerous-pi', 'DNS:localhost', 'IP Address:127.0.0.1'] |
| 5.4 | HTTPS access | PASS | 78ms |
| 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 | PASS | Script at /opt/dangerous-pi/scripts/generate-ssl-cert.sh |
| 5.8 | nginx config files | PASS | Found configs |
**Phase Summary**: 6 pass, 0 fail, 0 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 | SKIP | websockets not installed |
**Phase Summary**: 1 pass, 0 fail, 0 warn, 9 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 | 18ms |
| 7.5 | Enable plugin | PASS | 11ms |
| 7.6 | Hook trigger (pm3_command) | PASS | PM3 command executed with plugin enabled |
| 7.7 | Plugin widgets | PASS | 14ms |
| 7.8 | Disable plugin | PASS | 15ms |
| 7.9 | Unload plugin | PASS | 27ms |
| 7.10 | Invalid plugin returns 404 | PASS | 12ms |
**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.3 | Start BLE advertising | PASS | 13ms |
| 8.2 | BLE scan from laptop | PASS | Found DangerousPi in BLE scan |
| 8.4 | Stop BLE advertising | PASS | 588ms |
| 8.5 | Send BLE notification | PASS | 16ms |
| 8.7 | UPS status | PASS | battery=100.0%, voltage=4160.2755V, source=battery |
| 8.8 | UPS thresholds | PASS | 10ms |
| 8.9 | Power source detection | PASS | source=battery |
| 8.10 | I2C device at 0x75 | PASS | PiSugar responds |
**Phase Summary**: 9 pass, 0 fail, 0 warn, 0 skip
---
## ✅ Phase 9: Frontend & Performance
| # | Test | Status | Detail |
|---|------|--------|--------|
| 9.1 | Frontend loads | PASS | 9938 bytes, has app markup |
| 9.2 | Dashboard page | PASS | 9938 bytes, has app markup |
| 9.3 | Commands page | PASS | 7226 bytes, has app markup |
| 9.4 | Settings page | PASS | 7589 bytes, has app markup |
| 9.5 | Logs page | PASS | 5584 bytes, has app markup |
| 9.6 | Response time (10 requests) | PASS | avg=20ms, p95=28ms, min=13ms, max=28ms |
| 9.7 | Memory usage | PASS | system total used: 192MB |
| 9.8 | CPU temperature | PASS | 47.236°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.5 Execute hw version**: Unexpected output:
- **3.7 Execute hw tune**: No tune data in output (438ms)
---
*Generated by test_hardware_2026-03-03.py*