{ "total_tests": 26, "passed": 18, "failed": 8, "errors": [], "test_details": [ { "test_name": "GET /health/health", "description": "System health check", "url": "http://localhost:8000/health/health", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 1006.53, "response_data": { "status": "unhealthy", "timestamp": "2025-06-09T16:29:27.466249", "uptime_seconds": 0.0, "components": { "hardware": { "name": "Hardware Service", "status": "healthy", "message": "Hardware service is running normally", "last_check": "2025-06-09T16:29:27.466249", "uptime_seconds": null, "metrics": { "total_samples": 0, "success_rate": 0.0, "average_sample_rate": 0.0 } }, "pose": { "name": "Pose Service", "status": "unhealthy", "message": "CSIData.__init__() got an unexpected keyword argument 'raw_data'", "last_check": "2025-06-09T16:29:27.466249", "uptime_seconds": 0.0, "metrics": { "total_processed": 0, "success_rate": 0.0, "average_processing_time_ms": 0.0 } }, "stream": { "name": "Stream Service", "status": "unhealthy", "message": "Stream service is running normally", "last_check": "2025-06-09T16:29:27.466249", "uptime_seconds": null, "metrics": { "messages_sent": 0, "messages_failed": 0, "data_points_streamed": 0 } } }, "system_metrics": { "cpu": { "percent": 21.0, "count": 2 }, "memory": { "total_gb": 7.75, "available_gb": 3.97, "used_gb": 3.42, "percent": 48.8 }, "disk": { "total_gb": 31.33, "free_gb": 7.09, "used_gb": 22.62, "percent": 72.21 }, "network": { "bytes_sent": 165276815, "bytes_recv": 38388366888, "packets_sent": 696551, "packets_recv": 27706705 } } }, "success": true, "timestamp": "2025-06-09T16:29:28.469277" }, { "test_name": "GET /health/ready", "description": "Readiness check", "url": "http://localhost:8000/health/ready", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 1.21, "response_data": { "ready": true, "timestamp": "2025-06-09T16:29:28.469911", "checks": { "pose_ready": true, "stream_ready": false, "hardware_ready": true, "memory_available": true, "disk_space_available": true }, "message": "System is ready" }, "success": true, "timestamp": "2025-06-09T16:29:28.470672" }, { "test_name": "GET /api/v1/pose/current", "description": "Current pose estimation", "url": "http://localhost:8000/api/v1/pose/current", "method": "GET", "expected_status": 200, "actual_status": 500, "response_time_ms": 3.99, "response_data": { "error": { "code": 500, "message": "Pose estimation failed: CSIData.__init__() got an unexpected keyword argument 'raw_data'", "type": "http_error" } }, "success": false, "timestamp": "2025-06-09T16:29:28.474802" }, { "test_name": "GET /api/v1/pose/current", "description": "Current pose estimation with parameters", "url": "http://localhost:8000/api/v1/pose/current", "method": "GET", "expected_status": 200, "actual_status": 500, "response_time_ms": 2.13, "response_data": { "error": { "code": 500, "message": "Pose estimation failed: CSIData.__init__() got an unexpected keyword argument 'raw_data'", "type": "http_error" } }, "success": false, "timestamp": "2025-06-09T16:29:28.477270" }, { "test_name": "POST /api/v1/pose/analyze", "description": "Pose analysis (requires auth)", "url": "http://localhost:8000/api/v1/pose/analyze", "method": "POST", "expected_status": 200, "actual_status": 401, "response_time_ms": 1.15, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error" } }, "success": false, "timestamp": "2025-06-09T16:29:28.478560" }, { "test_name": "GET /api/v1/pose/zones/zone_1/occupancy", "description": "Zone occupancy", "url": "http://localhost:8000/api/v1/pose/zones/zone_1/occupancy", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 1.12, "response_data": { "zone_id": "zone_1", "current_occupancy": 4, "max_occupancy": 10, "persons": [ { "person_id": "person_0", "confidence": 0.7153800266085427, "activity": "standing" }, { "person_id": "person_1", "confidence": 0.7120405425336925, "activity": "sitting" }, { "person_id": "person_2", "confidence": 0.7378308161235501, "activity": "standing" }, { "person_id": "person_3", "confidence": 0.9088528924641491, "activity": "standing" } ], "timestamp": "2025-06-09T16:29:28.479213" }, "success": true, "timestamp": "2025-06-09T16:29:28.479907" }, { "test_name": "GET /api/v1/pose/zones/summary", "description": "All zones summary", "url": "http://localhost:8000/api/v1/pose/zones/summary", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 1.1, "response_data": { "timestamp": "2025-06-09T16:29:28.480541", "total_persons": 4, "zones": { "zone_1": { "occupancy": 0, "max_occupancy": 10, "status": "inactive" }, "zone_2": { "occupancy": 0, "max_occupancy": 10, "status": "inactive" }, "zone_3": { "occupancy": 3, "max_occupancy": 10, "status": "active" }, "zone_4": { "occupancy": 1, "max_occupancy": 10, "status": "active" } }, "active_zones": 2 }, "success": true, "timestamp": "2025-06-09T16:29:28.481202" }, { "test_name": "POST /api/v1/pose/historical", "description": "Historical pose data (requires auth)", "url": "http://localhost:8000/api/v1/pose/historical", "method": "POST", "expected_status": 200, "actual_status": 401, "response_time_ms": 1.25, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error" } }, "success": false, "timestamp": "2025-06-09T16:29:28.482717" }, { "test_name": "GET /api/v1/pose/activities", "description": "Recent activities", "url": "http://localhost:8000/api/v1/pose/activities", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 1.34, "response_data": { "activities": [ { "activity_id": "activity_0", "person_id": "person_3", "zone_id": "zone_1", "activity": "standing", "confidence": 0.8788719199324211, "timestamp": "2025-06-09T16:17:28.483408", "duration_seconds": 151 }, { "activity_id": "activity_1", "person_id": "person_5", "zone_id": "zone_2", "activity": "sitting", "confidence": 0.7518832239045806, "timestamp": "2025-06-09T16:21:28.483421", "duration_seconds": 151 }, { "activity_id": "activity_2", "person_id": "person_5", "zone_id": "zone_2", "activity": "standing", "confidence": 0.7628738361712994, "timestamp": "2025-06-09T15:54:28.483428", "duration_seconds": 22 }, { "activity_id": "activity_3", "person_id": "person_2", "zone_id": "zone_2", "activity": "standing", "confidence": 0.6179605046679625, "timestamp": "2025-06-09T15:37:28.483434", "duration_seconds": 166 }, { "activity_id": "activity_4", "person_id": "person_3", "zone_id": "zone_2", "activity": "lying", "confidence": 0.8447113717437845, "timestamp": "2025-06-09T15:46:28.483439", "duration_seconds": 237 }, { "activity_id": "activity_5", "person_id": "person_2", "zone_id": "zone_2", "activity": "lying", "confidence": 0.707473893480704, "timestamp": "2025-06-09T16:09:28.483444", "duration_seconds": 212 }, { "activity_id": "activity_6", "person_id": "person_3", "zone_id": "zone_2", "activity": "standing", "confidence": 0.8282979662349873, "timestamp": "2025-06-09T16:28:28.483448", "duration_seconds": 217 }, { "activity_id": "activity_7", "person_id": "person_2", "zone_id": "zone_3", "activity": "sitting", "confidence": 0.7159399441101734, "timestamp": "2025-06-09T15:41:28.483453", "duration_seconds": 80 }, { "activity_id": "activity_8", "person_id": "person_2", "zone_id": "zone_2", "activity": "walking", "confidence": 0.8259423462575153, "timestamp": "2025-06-09T16:10:28.483458", "duration_seconds": 246 }, { "activity_id": "activity_9", "person_id": "person_3", "zone_id": "zone_3", "activity": "sitting", "confidence": 0.8444788102810454, "timestamp": "2025-06-09T15:40:28.483462", "duration_seconds": 271 } ], "total_count": 10, "zone_id": null }, "success": true, "timestamp": "2025-06-09T16:29:28.484276" }, { "test_name": "GET /api/v1/pose/activities", "description": "Activities for specific zone", "url": "http://localhost:8000/api/v1/pose/activities", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 1.22, "response_data": { "activities": [ { "activity_id": "activity_0", "person_id": "person_5", "zone_id": "zone_1", "activity": "standing", "confidence": 0.741638015624174, "timestamp": "2025-06-09T16:23:28.484955", "duration_seconds": 138 }, { "activity_id": "activity_1", "person_id": "person_1", "zone_id": "zone_1", "activity": "standing", "confidence": 0.8491441411636509, "timestamp": "2025-06-09T16:28:28.484965", "duration_seconds": 271 }, { "activity_id": "activity_2", "person_id": "person_3", "zone_id": "zone_1", "activity": "sitting", "confidence": 0.8240513957742752, "timestamp": "2025-06-09T15:55:28.484971", "duration_seconds": 208 }, { "activity_id": "activity_3", "person_id": "person_1", "zone_id": "zone_1", "activity": "walking", "confidence": 0.6686723452132921, "timestamp": "2025-06-09T16:08:28.484976", "duration_seconds": 53 }, { "activity_id": "activity_4", "person_id": "person_1", "zone_id": "zone_1", "activity": "sitting", "confidence": 0.7154564479198067, "timestamp": "2025-06-09T15:46:28.484980", "duration_seconds": 51 } ], "total_count": 5, "zone_id": "zone_1" }, "success": true, "timestamp": "2025-06-09T16:29:28.485646" }, { "test_name": "GET /api/v1/pose/calibration/status", "description": "Calibration status (requires auth)", "url": "http://localhost:8000/api/v1/pose/calibration/status", "method": "GET", "expected_status": 200, "actual_status": 401, "response_time_ms": 1.0, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error" } }, "success": false, "timestamp": "2025-06-09T16:29:28.486865" }, { "test_name": "POST /api/v1/pose/calibrate", "description": "Start calibration (requires auth)", "url": "http://localhost:8000/api/v1/pose/calibrate", "method": "POST", "expected_status": 200, "actual_status": 401, "response_time_ms": 1.16, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error" } }, "success": false, "timestamp": "2025-06-09T16:29:28.488148" }, { "test_name": "GET /api/v1/pose/stats", "description": "Pose statistics", "url": "http://localhost:8000/api/v1/pose/stats", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 1.15, "response_data": { "period": { "start_time": "2025-06-08T16:29:28.488828", "end_time": "2025-06-09T16:29:28.488828", "hours": 24 }, "statistics": { "total_detections": 298, "successful_detections": 247, "failed_detections": 51, "success_rate": 0.8288590604026845, "average_confidence": 0.838352892817207, "average_processing_time_ms": 188.258723743218, "unique_persons": 17, "most_active_zone": "zone_1", "activity_distribution": { "standing": 0.48260573951749913, "sitting": 0.37230040555760413, "walking": 0.29479378825249825, "lying": 0.0805749638739226 } } }, "success": true, "timestamp": "2025-06-09T16:29:28.489541" }, { "test_name": "GET /api/v1/pose/stats", "description": "Pose statistics (12 hours)", "url": "http://localhost:8000/api/v1/pose/stats", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 1.13, "response_data": { "period": { "start_time": "2025-06-09T04:29:28.490176", "end_time": "2025-06-09T16:29:28.490176", "hours": 12 }, "statistics": { "total_detections": 790, "successful_detections": 640, "failed_detections": 150, "success_rate": 0.810126582278481, "average_confidence": 0.7998293074533648, "average_processing_time_ms": 87.24644650556135, "unique_persons": 16, "most_active_zone": "zone_2", "activity_distribution": { "standing": 0.3641306340817159, "sitting": 0.3923511671525125, "walking": 0.1278674893495592, "lying": 0.03345138657465318 } } }, "success": true, "timestamp": "2025-06-09T16:29:28.490859" }, { "test_name": "GET /api/v1/stream/status", "description": "Stream status", "url": "http://localhost:8000/api/v1/stream/status", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 1.01, "response_data": { "is_active": false, "connected_clients": 0, "streams": [ { "type": "pose_stream", "active": false, "buffer_size": 0 } ], "uptime_seconds": 0.0 }, "success": true, "timestamp": "2025-06-09T16:29:28.492090" }, { "test_name": "POST /api/v1/stream/start", "description": "Start streaming (requires auth)", "url": "http://localhost:8000/api/v1/stream/start", "method": "POST", "expected_status": 200, "actual_status": 401, "response_time_ms": 1.14, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error" } }, "success": false, "timestamp": "2025-06-09T16:29:28.493433" }, { "test_name": "POST /api/v1/stream/stop", "description": "Stop streaming (requires auth)", "url": "http://localhost:8000/api/v1/stream/stop", "method": "POST", "expected_status": 200, "actual_status": 401, "response_time_ms": 1.0, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error" } }, "success": false, "timestamp": "2025-06-09T16:29:28.494639" }, { "test_name": "WebSocket /api/v1/stream/pose", "description": "Pose WebSocket", "url": "ws://localhost:8000/api/v1/stream/pose", "method": "WebSocket", "response_time_ms": 15.05, "response_data": { "type": "connection_established", "client_id": "e3c93a81-6c3e-4ea0-807a-bbd94f976494", "timestamp": "2025-06-09T16:29:28.508841", "config": { "zone_ids": null, "min_confidence": 0.5, "max_fps": 30 } }, "success": true, "timestamp": "2025-06-09T16:29:28.509852" }, { "test_name": "WebSocket /api/v1/stream/events", "description": "Events WebSocket", "url": "ws://localhost:8000/api/v1/stream/events", "method": "WebSocket", "response_time_ms": 2.9, "response_data": { "type": "connection_established", "client_id": "cc7f1e6f-219a-4bee-8e7c-507ce6f75d2b", "timestamp": "2025-06-09T16:29:28.512534", "config": { "event_types": null, "zone_ids": null } }, "success": true, "timestamp": "2025-06-09T16:29:28.513416" }, { "test_name": "GET /docs", "description": "API documentation", "url": "http://localhost:8000/docs", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 0.96, "response_data": { "raw_response": "\n \n \n
\n \n \n