{ "total_tests": 26, "passed": 15, "failed": 11, "errors": [ "WebSocket /ws/pose - Exception: server rejected WebSocket connection: HTTP 403", "WebSocket /ws/hardware - Exception: server rejected WebSocket connection: HTTP 403" ], "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": 1007.09, "response_data": { "status": "unhealthy", "timestamp": "2025-06-07T12:31:10.227495", "uptime_seconds": 0.0, "components": { "hardware": { "name": "Hardware Service", "status": "unhealthy", "message": "Health check failed: 'HardwareService' object has no attribute 'health_check'", "last_check": "2025-06-07T12:31:10.227495", "uptime_seconds": null, "metrics": null }, "pose": { "name": "Pose Service", "status": "healthy", "message": "Service is running normally", "last_check": "2025-06-07T12:31:10.227495", "uptime_seconds": 0.0, "metrics": { "total_processed": 11593, "success_rate": 1.0, "average_processing_time_ms": 0.7697883205382553 } }, "stream": { "name": "Stream Service", "status": "unhealthy", "message": "Health check failed: 'StreamService' object has no attribute 'health_check'", "last_check": "2025-06-07T12:31:10.227495", "uptime_seconds": null, "metrics": null } }, "system_metrics": { "cpu": { "percent": 41.6, "count": 2 }, "memory": { "total_gb": 7.75, "available_gb": 3.42, "used_gb": 3.96, "percent": 55.8 }, "disk": { "total_gb": 31.33, "free_gb": 7.99, "used_gb": 21.72, "percent": 69.34 }, "network": { "bytes_sent": 3966865385, "bytes_recv": 37266864859, "packets_sent": 1208137, "packets_recv": 25822484 } } }, "success": true, "timestamp": "2025-06-07T12:31:11.229468" }, { "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": 2.8, "response_data": { "ready": false, "timestamp": "2025-06-07T12:31:11.231718", "checks": {}, "message": "Readiness check failed: 'HardwareService' object has no attribute 'is_ready'" }, "success": true, "timestamp": "2025-06-07T12:31:11.232458" }, { "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": 200, "response_time_ms": 4.78, "response_data": { "timestamp": "2025-06-07T12:31:11.236304", "frame_id": "frame_1749299471", "persons": [ { "person_id": "0", "confidence": 0.7293420300231561, "bounding_box": { "x": 0.20030137087111707, "y": 0.34797650745590625, "width": 0.3981145986577058, "height": 0.37970677378320483 }, "keypoints": [ { "name": "nose", "x": 0.44823595638505365, "y": 0.28977208775102437, "confidence": 0.5542371581192655 }, { "name": "left_eye", "x": 0.4952690740858373, "y": 0.5432792007858821, "confidence": 0.8389099658520509 }, { "name": "right_eye", "x": 0.5804648567981479, "y": 0.4647719962179129, "confidence": 0.8566402128570042 }, { "name": "left_ear", "x": 0.3908451092263244, "y": 0.47632227436288144, "confidence": 0.8663735676067241 }, { "name": "right_ear", "x": 0.7239991852126997, "y": 0.23663541301872126, "confidence": 0.8765906890203725 }, { "name": "left_shoulder", "x": 0.8047991402971765, "y": 0.5945560513865605, "confidence": 0.6733604589224793 }, { "name": "right_shoulder", "x": 0.5827385517549469, "y": 0.6480707247526286, "confidence": 0.6619337464371322 }, { "name": "left_elbow", "x": 0.22838735429686896, "y": 0.5384875625869312, "confidence": 0.8898981616721842 }, { "name": "right_elbow", "x": 0.30698440179370057, "y": 0.7681933243920521, "confidence": 0.8650395359923496 }, { "name": "left_wrist", "x": 0.2513618929990984, "y": 0.7888295208071133, "confidence": 0.7868846288735598 }, { "name": "right_wrist", "x": 0.7451812973100521, "y": 0.8656266393186364, "confidence": 0.6986352734789892 }, { "name": "left_hip", "x": 0.8711882610447488, "y": 0.21107445509375788, "confidence": 0.7641797518172958 }, { "name": "right_hip", "x": 0.6886993071914757, "y": 0.8831958965641219, "confidence": 0.607316198276865 }, { "name": "left_knee", "x": 0.8309229095457401, "y": 0.6179393131368978, "confidence": 0.9484639425058705 }, { "name": "right_knee", "x": 0.41084910063004776, "y": 0.871048879535313, "confidence": 0.5869033936285174 }, { "name": "left_ankle", "x": 0.868380526885448, "y": 0.29994798097554654, "confidence": 0.8711292170158544 }, { "name": "right_ankle", "x": 0.23919791092843745, "y": 0.7835125578080285, "confidence": 0.9296263841499632 } ], "segmentation": null, "zone_id": "zone_1", "activity": "standing", "timestamp": "2025-06-07T12:31:11.236213" }, { "person_id": "1", "confidence": 0.8305294582546161, "bounding_box": { "x": 0.10170118349182375, "y": 0.509137090786002, "width": 0.3259154094555018, "height": 0.4358340805173928 }, "keypoints": [ { "name": "nose", "x": 0.7996096118501625, "y": 0.4189010321170784, "confidence": 0.7875794312662672 }, { "name": "left_eye", "x": 0.5403213329708182, "y": 0.13855592879699596, "confidence": 0.8437237511382353 }, { "name": "right_eye", "x": 0.2505573867103854, "y": 0.5510193548451794, "confidence": 0.5797273597406184 }, { "name": "left_ear", "x": 0.29465523309165254, "y": 0.5004435349476023, "confidence": 0.5256923965994024 }, { "name": "right_ear", "x": 0.10508828814487554, "y": 0.2184534539190664, "confidence": 0.8756781626026862 }, { "name": "left_shoulder", "x": 0.8377841792777977, "y": 0.18844840254336265, "confidence": 0.7698670827453382 }, { "name": "right_shoulder", "x": 0.6564289264434737, "y": 0.2950417676475364, "confidence": 0.5628219479670884 }, { "name": "left_elbow", "x": 0.8616201746562163, "y": 0.32561299054520615, "confidence": 0.5902388830139175 }, { "name": "right_elbow", "x": 0.11771705352091671, "y": 0.39582637396144527, "confidence": 0.6664287966202559 }, { "name": "left_wrist", "x": 0.36669984890698537, "y": 0.32526726218772384, "confidence": 0.7301083696222967 }, { "name": "right_wrist", "x": 0.3744711338414852, "y": 0.8933040570358391, "confidence": 0.5122297141321303 }, { "name": "left_hip", "x": 0.7985778946077506, "y": 0.5687873058337637, "confidence": 0.6074860985303865 }, { "name": "right_hip", "x": 0.5180730784431439, "y": 0.5935681806822019, "confidence": 0.5910472810213829 }, { "name": "left_knee", "x": 0.8925273303822093, "y": 0.5082354807403022, "confidence": 0.5840320751794993 }, { "name": "right_knee", "x": 0.2434866909431669, "y": 0.45900413964604203, "confidence": 0.8146230907081062 }, { "name": "left_ankle", "x": 0.24287115223795253, "y": 0.5886422119226908, "confidence": 0.538079819702979 }, { "name": "right_ankle", "x": 0.13785439476462882, "y": 0.55143292524988, "confidence": 0.6143995946811053 } ], "segmentation": null, "zone_id": "zone_1", "activity": "sitting", "timestamp": "2025-06-07T12:31:11.236245" }, { "person_id": "2", "confidence": 0.35207768693851665, "bounding_box": { "x": 0.2765498034316859, "y": 0.43247003414159246, "width": 0.3633750931147725, "height": 0.4938780359990873 }, "keypoints": [ { "name": "nose", "x": 0.1604126898801905, "y": 0.7048573375998496, "confidence": 0.8581798084049611 }, { "name": "left_eye", "x": 0.6259335884734869, "y": 0.1354705040619779, "confidence": 0.819327861459654 }, { "name": "right_eye", "x": 0.2224865667621713, "y": 0.2511125866479431, "confidence": 0.6648104591620027 }, { "name": "left_ear", "x": 0.28267723109996246, "y": 0.7010864289589891, "confidence": 0.6583613618546853 }, { "name": "right_ear", "x": 0.6582362844836986, "y": 0.6774698981379421, "confidence": 0.7718210170365041 }, { "name": "left_shoulder", "x": 0.5010676026491517, "y": 0.624190408133553, "confidence": 0.6576163884997456 }, { "name": "right_shoulder", "x": 0.15790445933321814, "y": 0.15004632002693477, "confidence": 0.7594042257523519 }, { "name": "left_elbow", "x": 0.20869968465749827, "y": 0.752452930071922, "confidence": 0.6641317132561305 }, { "name": "right_elbow", "x": 0.13046426795540295, "y": 0.7327015399000987, "confidence": 0.6758027109229907 }, { "name": "left_wrist", "x": 0.4345695137883485, "y": 0.5446404217456786, "confidence": 0.542865592244768 }, { "name": "right_wrist", "x": 0.43901163390535314, "y": 0.3619519039597633, "confidence": 0.6601105659903144 }, { "name": "left_hip", "x": 0.2757230842405501, "y": 0.518388401337965, "confidence": 0.6001522829729531 }, { "name": "right_hip", "x": 0.8475196635818669, "y": 0.22121972448055588, "confidence": 0.9312842260680301 }, { "name": "left_knee", "x": 0.1524562739710847, "y": 0.5882665393601244, "confidence": 0.608415603676807 }, { "name": "right_knee", "x": 0.3584782192826531, "y": 0.7061205470828577, "confidence": 0.6664268999572104 }, { "name": "left_ankle", "x": 0.5306479556640387, "y": 0.12301150869111269, "confidence": 0.5707161903293938 }, { "name": "right_ankle", "x": 0.6960744941693561, "y": 0.3499669479123747, "confidence": 0.8047024098152354 } ], "segmentation": null, "zone_id": "zone_1", "activity": "walking", "timestamp": "2025-06-07T12:31:11.236274" } ], "zone_summary": { "zone_1": 3 }, "processing_time_ms": 0.88, "metadata": { "mock_data": true } }, "success": true, "timestamp": "2025-06-07T12:31:11.237579" }, { "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": 200, "response_time_ms": 2.89, "response_data": { "timestamp": "2025-06-07T12:31:11.239863", "frame_id": "frame_1749299471", "persons": [ { "person_id": "0", "confidence": 0.370854019093324, "bounding_box": { "x": 0.3280213489240438, "y": 0.5056874516731203, "width": 0.34589685227387285, "height": 0.47589268657270345 }, "keypoints": [ { "name": "nose", "x": 0.3302264155127105, "y": 0.7666441068864577, "confidence": 0.7508261047121239 }, { "name": "left_eye", "x": 0.12389961372528831, "y": 0.11265742644399035, "confidence": 0.8837280434618697 }, { "name": "right_eye", "x": 0.18858293506049215, "y": 0.7947507286048676, "confidence": 0.5359988354449617 }, { "name": "left_ear", "x": 0.5347969458129921, "y": 0.7870219960840005, "confidence": 0.7414861777052862 }, { "name": "right_ear", "x": 0.3292265722716323, "y": 0.7785133611119565, "confidence": 0.8477129538006556 }, { "name": "left_shoulder", "x": 0.13562914539480025, "y": 0.3344314232704363, "confidence": 0.9454547470280737 }, { "name": "right_shoulder", "x": 0.25887956115193844, "y": 0.7416711354578321, "confidence": 0.7324120210502734 }, { "name": "left_elbow", "x": 0.6914834506347959, "y": 0.38708923719225985, "confidence": 0.579309423206422 }, { "name": "right_elbow", "x": 0.6834006677040783, "y": 0.7855844577079371, "confidence": 0.8490986880142513 }, { "name": "left_wrist", "x": 0.24260255118250731, "y": 0.4797335535386199, "confidence": 0.921154556089327 }, { "name": "right_wrist", "x": 0.1891051300648476, "y": 0.5006337124188301, "confidence": 0.7549395147774483 }, { "name": "left_hip", "x": 0.45339484199301894, "y": 0.29619229004614245, "confidence": 0.7057449559345098 }, { "name": "right_hip", "x": 0.6828279036525241, "y": 0.4389721586483025, "confidence": 0.6670246048009738 }, { "name": "left_knee", "x": 0.795841186477223, "y": 0.7857120647589356, "confidence": 0.741616459417308 }, { "name": "right_knee", "x": 0.547482111130874, "y": 0.2302439433466714, "confidence": 0.636430810102298 }, { "name": "left_ankle", "x": 0.7008616321278732, "y": 0.27001333971446473, "confidence": 0.513728640448088 }, { "name": "right_ankle", "x": 0.6414064601962457, "y": 0.30920956468078786, "confidence": 0.6426693578712224 } ], "segmentation": null, "zone_id": "zone_1", "activity": "walking", "timestamp": "2025-06-07T12:31:11.239814" }, { "person_id": "1", "confidence": 0.6657660984774105, "bounding_box": { "x": 0.21596985766055174, "y": 0.554765890040542, "width": 0.3476945882637141, "height": 0.3225980858655065 }, "keypoints": [ { "name": "nose", "x": 0.34509773586217474, "y": 0.6039962595178552, "confidence": 0.9356445420281669 }, { "name": "left_eye", "x": 0.11776846716563166, "y": 0.225173660788648, "confidence": 0.5522696395103206 }, { "name": "right_eye", "x": 0.7338523292829059, "y": 0.599335853110952, "confidence": 0.7027590082539141 }, { "name": "left_ear", "x": 0.465126361351207, "y": 0.48658170608878937, "confidence": 0.6790517153428199 }, { "name": "right_ear", "x": 0.688443714096417, "y": 0.7906320580116033, "confidence": 0.517047439500365 }, { "name": "left_shoulder", "x": 0.4323501414184646, "y": 0.15862144143634993, "confidence": 0.7673209239676191 }, { "name": "right_shoulder", "x": 0.4567671996735275, "y": 0.28872739596598096, "confidence": 0.7592842348741403 }, { "name": "left_elbow", "x": 0.11321639253514633, "y": 0.2050364311471884, "confidence": 0.6376305366974446 }, { "name": "right_elbow", "x": 0.1859980824352567, "y": 0.3008205738608011, "confidence": 0.9225066732217158 }, { "name": "left_wrist", "x": 0.8383453588356334, "y": 0.280898583891389, "confidence": 0.8429876370472138 }, { "name": "right_wrist", "x": 0.8426749298154382, "y": 0.2295432901116694, "confidence": 0.7959672377339402 }, { "name": "left_hip", "x": 0.46079681719277765, "y": 0.7435169063799625, "confidence": 0.6206533611359297 }, { "name": "right_hip", "x": 0.48616078823152187, "y": 0.304553494425842, "confidence": 0.9071440594833815 }, { "name": "left_knee", "x": 0.8607378771474717, "y": 0.2557244351579886, "confidence": 0.5296887736025605 }, { "name": "right_knee", "x": 0.5503887821224759, "y": 0.5978507779253809, "confidence": 0.7883542631669029 }, { "name": "left_ankle", "x": 0.7268171280616471, "y": 0.23228222221949216, "confidence": 0.5462757240883648 }, { "name": "right_ankle", "x": 0.3592243197510716, "y": 0.38341299101117987, "confidence": 0.795125616127961 } ], "segmentation": null, "zone_id": "zone_1", "activity": "sitting", "timestamp": "2025-06-07T12:31:11.239833" }, { "person_id": "2", "confidence": 0.6388533885804164, "bounding_box": { "x": 0.2019039986313679, "y": 0.24933561207668617, "width": 0.350285539244766, "height": 0.40394161253795735 }, "keypoints": [ { "name": "nose", "x": 0.46387437669009546, "y": 0.21912840561578115, "confidence": 0.5415202898138071 }, { "name": "left_eye", "x": 0.250282606200101, "y": 0.7636670564326579, "confidence": 0.567373830235719 }, { "name": "right_eye", "x": 0.5082089357810013, "y": 0.31123588871298963, "confidence": 0.5150436226533691 }, { "name": "left_ear", "x": 0.2144005859969986, "y": 0.804912450132936, "confidence": 0.9443468898852558 }, { "name": "right_ear", "x": 0.2930593433202765, "y": 0.1422330200282742, "confidence": 0.9257622652361159 }, { "name": "left_shoulder", "x": 0.4265533807468792, "y": 0.8652060982958156, "confidence": 0.6218485643101248 }, { "name": "right_shoulder", "x": 0.5208915723508785, "y": 0.717661133362763, "confidence": 0.626112755781511 }, { "name": "left_elbow", "x": 0.36740642026204207, "y": 0.5694059472552029, "confidence": 0.5609663660779218 }, { "name": "right_elbow", "x": 0.5391920258178114, "y": 0.6442125494598956, "confidence": 0.7938092697509699 }, { "name": "left_wrist", "x": 0.5956602387413871, "y": 0.4140777212387293, "confidence": 0.8343460554256876 }, { "name": "right_wrist", "x": 0.6315100214312287, "y": 0.4197139630733008, "confidence": 0.7478878756557799 }, { "name": "left_hip", "x": 0.36187976548941314, "y": 0.31173051173969923, "confidence": 0.7630685098335477 }, { "name": "right_hip", "x": 0.36416445946060205, "y": 0.14747762132213227, "confidence": 0.6620742395104553 }, { "name": "left_knee", "x": 0.6284491176264971, "y": 0.5616090769899043, "confidence": 0.6558174035602283 }, { "name": "right_knee", "x": 0.10567959136772603, "y": 0.8789306746324227, "confidence": 0.9494355835172135 }, { "name": "left_ankle", "x": 0.7780648824658661, "y": 0.7498553660012194, "confidence": 0.6501985656038138 }, { "name": "right_ankle", "x": 0.4951401143008306, "y": 0.6615737813418059, "confidence": 0.6275415002667539 } ], "segmentation": null, "zone_id": "zone_1", "activity": "walking", "timestamp": "2025-06-07T12:31:11.239846" } ], "zone_summary": { "zone_1": 3 }, "processing_time_ms": 0.65, "metadata": { "mock_data": true } }, "success": true, "timestamp": "2025-06-07T12:31:11.240803" }, { "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.1, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error", "path": "/api/v1/pose/analyze" } }, "success": false, "timestamp": "2025-06-07T12:31:11.242270" }, { "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.35, "response_data": { "zone_id": "zone_1", "current_occupancy": 5, "max_occupancy": 10, "persons": [ { "person_id": "person_0", "confidence": 0.9299048917915331, "activity": "standing" }, { "person_id": "person_1", "confidence": 0.8890436892848852, "activity": "standing" }, { "person_id": "person_2", "confidence": 0.8888218199253267, "activity": "walking" }, { "person_id": "person_3", "confidence": 0.942871490533826, "activity": "standing" }, { "person_id": "person_4", "confidence": 0.8544064588886042, "activity": "sitting" } ], "timestamp": "2025-06-07T12:31:11.243107" }, "success": true, "timestamp": "2025-06-07T12:31:11.243759" }, { "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.2, "response_data": { "timestamp": "2025-06-07T12:31:11.244523", "total_persons": 6, "zones": { "zone_1": { "occupancy": 1, "max_occupancy": 10, "status": "active" }, "zone_2": { "occupancy": 1, "max_occupancy": 10, "status": "active" }, "zone_3": { "occupancy": 2, "max_occupancy": 10, "status": "active" }, "zone_4": { "occupancy": 2, "max_occupancy": 10, "status": "active" } }, "active_zones": 4 }, "success": true, "timestamp": "2025-06-07T12:31:11.245234" }, { "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.43, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error", "path": "/api/v1/pose/historical" } }, "success": false, "timestamp": "2025-06-07T12:31:11.246811" }, { "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": 500, "response_time_ms": 1.35, "response_data": { "error": { "code": 500, "message": "Failed to get activities: name 'timedelta' is not defined", "type": "http_error", "path": "/api/v1/pose/activities" } }, "success": false, "timestamp": "2025-06-07T12:31:11.248287" }, { "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": 500, "response_time_ms": 1.29, "response_data": { "error": { "code": 500, "message": "Failed to get activities: name 'timedelta' is not defined", "type": "http_error", "path": "/api/v1/pose/activities" } }, "success": false, "timestamp": "2025-06-07T12:31:11.249941" }, { "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.07, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error", "path": "/api/v1/pose/calibration/status" } }, "success": false, "timestamp": "2025-06-07T12:31:11.251405" }, { "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.28, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error", "path": "/api/v1/pose/calibrate" } }, "success": false, "timestamp": "2025-06-07T12:31:11.253054" }, { "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.23, "response_data": { "period": { "start_time": "2025-06-06T12:31:11.253946", "end_time": "2025-06-07T12:31:11.253946", "hours": 24 }, "statistics": { "total_detections": 314, "successful_detections": 286, "failed_detections": 28, "success_rate": 0.910828025477707, "average_confidence": 0.8154860610274203, "average_processing_time_ms": 74.08005120410309, "unique_persons": 19, "most_active_zone": "zone_1", "activity_distribution": { "standing": 0.3631605264291814, "sitting": 0.3294888900969729, "walking": 0.29592515904686695, "lying": 0.057631257973703554 } } }, "success": true, "timestamp": "2025-06-07T12:31:11.254736" }, { "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.14, "response_data": { "period": { "start_time": "2025-06-07T00:31:11.255512", "end_time": "2025-06-07T12:31:11.255512", "hours": 12 }, "statistics": { "total_detections": 654, "successful_detections": 604, "failed_detections": 50, "success_rate": 0.9235474006116208, "average_confidence": 0.852208852930976, "average_processing_time_ms": 106.7372839201018, "unique_persons": 17, "most_active_zone": "zone_1", "activity_distribution": { "standing": 0.37644162607601667, "sitting": 0.22403324279769943, "walking": 0.11425361491788977, "lying": 0.019586953828269162 } } }, "success": true, "timestamp": "2025-06-07T12:31:11.256156" }, { "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": 500, "response_time_ms": 1.2, "response_data": { "error": { "code": 500, "message": "Failed to get stream status: 'is_active'", "type": "http_error", "path": "/api/v1/stream/status" } }, "success": false, "timestamp": "2025-06-07T12:31:11.257473" }, { "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.01, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error", "path": "/api/v1/stream/start" } }, "success": false, "timestamp": "2025-06-07T12:31:11.258782" }, { "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.19, "response_data": { "error": { "code": 401, "message": "Authentication required", "type": "http_error", "path": "/api/v1/stream/stop" } }, "success": false, "timestamp": "2025-06-07T12:31:11.260080" }, { "test_name": "WebSocket /ws/pose", "description": "Pose WebSocket", "url": "ws://localhost:8000/ws/pose", "method": "WebSocket", "response_time_ms": null, "response_data": null, "success": false, "error": "server rejected WebSocket connection: HTTP 403", "traceback": "Traceback (most recent call last):\n File \"/workspaces/wifi-densepose/scripts/test_api_endpoints.py\", line 164, in test_websocket_endpoint\n async with websockets.connect(ws_url) as websocket:\n File \"/usr/local/python/3.12.1/lib/python3.12/site-packages/websockets/asyncio/client.py\", line 587, in __aenter__\n return await self\n ^^^^^^^^^^\n File \"/usr/local/python/3.12.1/lib/python3.12/site-packages/websockets/asyncio/client.py\", line 543, in __await_impl__\n await self.connection.handshake(\n File \"/usr/local/python/3.12.1/lib/python3.12/site-packages/websockets/asyncio/client.py\", line 114, in handshake\n raise self.protocol.handshake_exc\n File \"/usr/local/python/3.12.1/lib/python3.12/site-packages/websockets/client.py\", line 325, in parse\n self.process_response(response)\n File \"/usr/local/python/3.12.1/lib/python3.12/site-packages/websockets/client.py\", line 142, in process_response\n raise InvalidStatus(response)\nwebsockets.exceptions.InvalidStatus: server rejected WebSocket connection: HTTP 403\n", "timestamp": "2025-06-07T12:31:11.294223" }, { "test_name": "WebSocket /ws/hardware", "description": "Hardware WebSocket", "url": "ws://localhost:8000/ws/hardware", "method": "WebSocket", "response_time_ms": null, "response_data": null, "success": false, "error": "server rejected WebSocket connection: HTTP 403", "traceback": "Traceback (most recent call last):\n File \"/workspaces/wifi-densepose/scripts/test_api_endpoints.py\", line 164, in test_websocket_endpoint\n async with websockets.connect(ws_url) as websocket:\n File \"/usr/local/python/3.12.1/lib/python3.12/site-packages/websockets/asyncio/client.py\", line 587, in __aenter__\n return await self\n ^^^^^^^^^^\n File \"/usr/local/python/3.12.1/lib/python3.12/site-packages/websockets/asyncio/client.py\", line 543, in __await_impl__\n await self.connection.handshake(\n File \"/usr/local/python/3.12.1/lib/python3.12/site-packages/websockets/asyncio/client.py\", line 114, in handshake\n raise self.protocol.handshake_exc\n File \"/usr/local/python/3.12.1/lib/python3.12/site-packages/websockets/client.py\", line 325, in parse\n self.process_response(response)\n File \"/usr/local/python/3.12.1/lib/python3.12/site-packages/websockets/client.py\", line 142, in process_response\n raise InvalidStatus(response)\nwebsockets.exceptions.InvalidStatus: server rejected WebSocket connection: HTTP 403\n", "timestamp": "2025-06-07T12:31:11.307920" }, { "test_name": "GET /docs", "description": "API documentation", "url": "http://localhost:8000/docs", "method": "GET", "expected_status": 200, "actual_status": 200, "response_time_ms": 3.76, "response_data": { "raw_response": "\n \n \n
\n \n \n