feat(tests): social-bot integration test suite (Issue #108) #118

Merged
sl-jetson merged 1 commits from sl-jetson/issue-108-integration-tests into main 2026-03-02 09:03:18 -05:00
Collaborator

Summary

  • saltybot_social_tests ROS2 package: full pytest + launch_testing harness
  • Launch test: social_test.launch.py, all nodes up within 30s
  • Topic verification: Hz rates for camera/UWB/faces/tracking/persons/orchestrator
  • Service verification: /social/enroll, /social/nav/set_mode, person CRUD, mood
  • GPU memory: < 6 GB total, per-model budgets, no-leak-over-30s test
  • Latency profiling: inject->STT->LLM->TTS state-machine p95 SLAs
  • Graceful shutdown: no zombies, GPU freed, /dev/snd released
  • CI Docker: Dockerfile.ci + docker-compose.ci.yml (no GPU, mock sensors)
  • Gitea Actions: lint > core-tests (CPU) > latency-gpu (Orin self-hosted)

Test plan

  • core-tests job passes in CPU-only Docker CI
  • GPU / full_stack tests skip gracefully without hardware
  • /social/nav/set_mode service test skips until nav_node implements it

Closes #108

## Summary - `saltybot_social_tests` ROS2 package: full pytest + launch_testing harness - Launch test: `social_test.launch.py`, all nodes up within 30s - Topic verification: Hz rates for camera/UWB/faces/tracking/persons/orchestrator - Service verification: `/social/enroll`, `/social/nav/set_mode`, person CRUD, mood - GPU memory: < 6 GB total, per-model budgets, no-leak-over-30s test - Latency profiling: inject->STT->LLM->TTS state-machine p95 SLAs - Graceful shutdown: no zombies, GPU freed, /dev/snd released - CI Docker: `Dockerfile.ci` + `docker-compose.ci.yml` (no GPU, mock sensors) - Gitea Actions: lint > core-tests (CPU) > latency-gpu (Orin self-hosted) ## Test plan - [ ] core-tests job passes in CPU-only Docker CI - [ ] GPU / full_stack tests skip gracefully without hardware - [ ] `/social/nav/set_mode` service test skips until nav_node implements it Closes #108
sl-jetson added 1 commit 2026-03-02 08:51:28 -05:00
feat(tests): social-bot integration test suite (Issue #108)
Some checks failed
social-bot integration tests / Lint (flake8 + pep257) (push) Failing after 3m58s
social-bot integration tests / Lint (flake8 + pep257) (pull_request) Failing after 3m3s
social-bot integration tests / Core integration tests (mock sensors, no GPU) (push) Has been skipped
social-bot integration tests / Core integration tests (mock sensors, no GPU) (pull_request) Has been skipped
social-bot integration tests / Latency profiling (GPU, Orin) (push) Has been cancelled
social-bot integration tests / Latency profiling (GPU, Orin) (pull_request) Has been cancelled
ee8438fd04
Add saltybot_social_tests package with full pytest + launch_testing harness:

- test_launch.py: start social_test.launch.py, verify all nodes up within 30s
- test_topic_rates.py: measure topic Hz over 3s window vs. minimum SLAs
- test_services.py: /social/enroll, /social/nav/set_mode, person CRUD, mood query
- test_gpu_memory.py: total allocation < 6 GB, no leak over 30s
- test_latency.py: inject→transcript→LLM→TTS state-machine SLA profiling
- test_shutdown.py: no zombies, GPU memory released, audio device freed
- test_helpers.py: TopicRateChecker, NodeChecker, ServiceChecker, GpuMemoryChecker
- mock_sensors.py: camera/faces/fused/persons/uwb publishers at correct rates
- social_test.launch.py: CI-mode launch (no mic/speaker, mock sensors auto-started)
- conftest.py + pytest.ini: gpu_required / full_stack / stack_running markers
- docker/Dockerfile.ci + docker-compose.ci.yml: CPU-only CI container
- docker/entrypoint-ci.sh: launch stack + wait 10s + run pytest
- bags/record_social_test.sh + bags/README.md: rosbag recording for replay
- .gitea/workflows/social-tests-ci.yml: lint + core-tests + latency-gpu jobs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
sl-jetson merged commit f278f0fd06 into main 2026-03-02 09:03:18 -05:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: seb/saltylab-firmware#118
No description provided.