From 40801333610c780075ceeb6f5e09181f8587ccc5 Mon Sep 17 00:00:00 2001 From: zmv Date: Wed, 23 Sep 2026 21:58:29 +0800 Subject: [PATCH] Recover transient camera failures within six timeout windows --- AGENTS.md | 7 + README.md | 6 + orin/README.md | 3 + orin/SHA256SUMS | 4 +- orin/build/camera_risk | Bin 810224 -> 818384 bytes src/camera.cpp | 112 +++++++++----- tests/ORIN_TEST_REPORT.md | 31 ++++ tests/camera_timeout_test.cpp | 192 +++++++++++++++++++++++ tests/orin_capture_faults.c | 39 +++++ tests/orin_hardware_results.json | 253 +++++++++++++++++++++++++++++++ tests/run_camera_timeout.sh | 14 ++ tests/stubs/opencv2/videoio.hpp | 19 +++ 12 files changed, 644 insertions(+), 36 deletions(-) create mode 100644 AGENTS.md create mode 100644 tests/ORIN_TEST_REPORT.md create mode 100644 tests/camera_timeout_test.cpp create mode 100644 tests/orin_capture_faults.c create mode 100644 tests/orin_hardware_results.json create mode 100755 tests/run_camera_timeout.sh create mode 100644 tests/stubs/opencv2/videoio.hpp diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..4181201 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,7 @@ +# 工程交付约定 + +- 共享采集、停止与恢复逻辑的修改,应同步本地 `inference-only`、`use-can`、`lazy-inference` 三个分支,并完成 Git 远端与 Orin 部署同步。 +- 本机模拟测试仅作为回归检查,不得用它代替 Orin 上的真实摄像头和 TensorRT 验证。报告须区分本机模拟、板端故障注入、真实硬件操作,明确未覆盖项目。 +- 短暂取流故障的重点是期限内恢复后在同一进程继续输出新的推理结果,并重新计数;不能只验证超时后退出。 +- 发布前核对本地提交、Git 远端、Orin 检出版本及实际运行二进制的哈希。更新 Orin 可执行文件后同时刷新独立包 SHA256SUMS。 +- 更新测试期间保留原启动参数,测试结束后恢复运行部署版本。不要把旧进程仍在运行当作新版本已部署。 diff --git a/README.md b/README.md index 61a15a5..b5e7d27 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ CAN 默认 **1000 ms** 超时。上述参数可在 `config/camera.json` 的 `lazy_inference` 中调整;15% 使用严格小于。USB CAN 缺失时后台持续重试,恢复后自动接收。当前不发送执行器指令。 +相机每次取帧默认等待 **2000 ms**,连续超时 **6 次**才停止流水线(纯超时约 **12 秒**);成功取得有效帧后清零超时计数。重试期间 CAN 继续接收。单次等待时间由 `camera.timeout_ms` 配置;运行中的坏帧、取流错误共用该重试期限;设备失效时尝试重新打开相机,恢复有效帧后继续推理。GPU 错误仍按原有异常处理退出。 + ## 编译和运行 目标设备:Orin / JetPack 5.1.2 / CUDA 11.4 / TensorRT 8.5 / OpenCV 4.5,构建需 CMake 3.24+。 @@ -93,3 +95,7 @@ if (result) { 同一帧三类文件同名(扩展名不同),文件名包含运行标识和帧号,多次运行不覆盖。JSON 的 `images` 提供相对于 `output/` 的图片路径,未选择保存的图片为 null。源码入口写入工程 `output/`;独立包入口写入 `orin/output/`。默认不创建目录、不保存文件。 保存对象是完成推理的帧;惰性分支暂停时不新增文件。开启保存会增加编码和磁盘 I/O 开销。写入失败时报告错误并停止,不静默丢失文件。 + +相机超时回归测试:`./tests/run_camera_timeout.sh`;加 `--wall-clock` 验证默认 6 次超时约 12 秒。测试直接编译实际相机代码,使用模拟采集和转换器,无需摄像头、GPU 或 OpenCV;不覆盖视频回放路径。 + +板端真实摄像头 / TensorRT 恢复与停止测试记录见 [Orin 测试报告](tests/ORIN_TEST_REPORT.md)。 diff --git a/orin/README.md b/orin/README.md index 345f9cc..01a6c5b 100644 --- a/orin/README.md +++ b/orin/README.md @@ -1,5 +1,8 @@ # Orin 惰性推理运行包(C++) +相机每次等待默认 2 秒,连续 6 次超时才退出(约 12 秒);有效帧恢复后重新计数。Ctrl+C / SIGTERM 主动停止不需要等待 6 次超时。 + + 在 JetPack 5.1.2 / TensorRT 8.5 / CUDA 11.4 / OpenCV 4.5 环境执行: ```bash diff --git a/orin/SHA256SUMS b/orin/SHA256SUMS index 33bc824..1a5fd56 100644 --- a/orin/SHA256SUMS +++ b/orin/SHA256SUMS @@ -1,8 +1,8 @@ -5a78784dd7ea279618d3b6cf0c63be4b6b6f20f5ce6c9b13ff32bc9001e73ca6 ./README.md +b0110852effcec51d5e6b74f32a37fbb22997d6fa4f9f1e2a5dbc7cade00ab7b ./README.md 6d5e874fd27fcfd75d303d7e35d9672028af71041f52dcc82a1e83676faefa65 ./bin/drivers/max9295.ko 8a78d04ef8be44e9b62a5e4ee315d3d6d679e34aedff02a234bbf4d40e222933 ./bin/drivers/max9296.ko 3da628587477cc35d5e3f8aee86e718e2ddf16808e893e00ba6e164b2307e843 ./bin/drivers/sgx-yuv-gmsl2.ko -2675d6cfafef74d75bcf8fba460cf2cad4c3dc80779614e45b0565db34abba21 ./build/camera_risk +0d77d17626644fb50b663c33edbb1a09884b34b5410a1109fc56b4d3781651b1 ./build/camera_risk 951c514ee76e10233a84746f25a884e0a1e8cbed84df57845a5aff66af9aecbd ./config/camera.json 9ba768d559fd3b64e833b50c62c70f2adfd6c169620aea5fba32cfb1b4c5b0e9 ./config/door_mask.json ebcd09e8c2e35008adbb0c1d222e580b17e0df1c8093df3481ba3374cd9a8174 ./engines/rtmw_l_384.engine diff --git a/orin/build/camera_risk b/orin/build/camera_risk index 4a2fb354b1df83430f1099d2254d053f3ef6c322..61d0496291d863a0e24d81444f1109ce903e7ca3 100755 GIT binary patch delta 152504 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 delta 150470 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 diff --git a/src/camera.cpp b/src/camera.cpp index f95ae36..24ae844 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -42,6 +43,11 @@ struct Camera::Impl { try { stopFd=eventfd(0,EFD_CLOEXEC|EFD_NONBLOCK); if(stopFd<0)throw std::runtime_error("Cannot create camera stop event"); + openCapture(); + } catch(...) {release();throw;} + } + void openCapture() { + try { fd=open(config.device.c_str(),O_RDWR|O_NONBLOCK|O_CLOEXEC); if(fd<0)throw std::runtime_error("Cannot open "+config.device+": "+std::strerror(errno)); v4l2_capability capability{};checkedIoctl(fd,VIDIOC_QUERYCAP,&capability,"VIDIOC_QUERYCAP"); @@ -77,16 +83,19 @@ struct Camera::Impl { if(mapping==MAP_FAILED)throw std::runtime_error("Camera mmap failed"); buffers[i].data=mapping;checkedIoctl(fd,VIDIOC_QBUF,&buffer,"VIDIOC_QBUF"); } - converter=std::make_unique(config.width,config.height); + if(!converter)converter=std::make_unique(config.width,config.height); auto type=V4L2_BUF_TYPE_VIDEO_CAPTURE;checkedIoctl(fd,VIDIOC_STREAMON,&type,"VIDIOC_STREAMON");streaming=true; - } catch(...) {release();throw;} + } catch(...) {releaseCapture();throw;} } ~Impl(){release();} - void release() noexcept { + void releaseCapture() noexcept { if(streaming){auto type=V4L2_BUF_TYPE_VIDEO_CAPTURE;ioctl(fd,VIDIOC_STREAMOFF,&type);streaming=false;} for(auto const& b:buffers)if(b.data)munmap(b.data,b.size); buffers.clear(); if(fd>=0){close(fd);fd=-1;} + } + void release() noexcept { + releaseCapture(); if(stopFd>=0){close(stopFd);stopFd=-1;} } void stop() noexcept { @@ -94,47 +103,82 @@ struct Camera::Impl { if(stopFd>=0){auto ignored=write(stopFd,&one,sizeof(one));(void)ignored;} } std::optional readFrame() { + auto windowStart=monotonicNs();unsigned failedWindows=0; + auto windowNs=std::uint64_t(config.timeout_ms)*1000000; + std::string lastError="no camera frame"; + auto expired=[&](bool timedOut=false) { + auto now=monotonicNs(); + if(timedOut||now-windowStart>=windowNs) { + if(++failedWindows>=6) + throw std::runtime_error("Camera capture failed 6 consecutive times: "+config.device+": "+lastError); + windowStart=now; + } + }; + auto pause=[&] { + pollfd stopEvent{stopFd,POLLIN,0}; + // Back off transient driver errors while retaining immediate cancellation. + poll(&stopEvent,1,20); + }; + auto reconnect=[&] { + releaseCapture(); + if(haveSequence){++index;haveSequence=false;} + }; while(!stopped.load()) { + expired(); + if(fd<0) { + try {openCapture();} + catch(std::exception const& e){lastError=e.what();pause();continue;} + } + if(stopped.load())return {}; + auto elapsed=monotonicNs()-windowStart; + auto remaining=elapsed((remaining+999999)/1000000); pollfd descriptors[2]={{fd,POLLIN,0},{stopFd,POLLIN,0}}; - int ready=poll(descriptors,2,config.timeout_ms); + int ready=poll(descriptors,2,waitMs); if(ready<0&&errno==EINTR)continue; if(stopped.load()||(descriptors[1].revents&POLLIN))return {}; - if(ready==0)throw std::runtime_error("Camera capture timeout: "+config.device); - if(ready<0||(descriptors[0].revents&(POLLERR|POLLHUP|POLLNVAL)))throw std::runtime_error("Camera disconnected or poll failed"); + if(ready==0){expired(true);continue;} + if(ready<0||(descriptors[0].revents&(POLLERR|POLLHUP|POLLNVAL))) { + lastError="camera disconnected or poll failed";reconnect();pause();continue; + } v4l2_buffer buffer{};buffer.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;buffer.memory=V4L2_MEMORY_MMAP; int status=ioctl(fd,VIDIOC_DQBUF,&buffer); if(status<0&&(errno==EAGAIN||errno==EINTR))continue; - if(status<0)throw std::runtime_error("VIDIOC_DQBUF: "+std::string(std::strerror(errno))); - if(buffer.index>=buffers.size())throw std::runtime_error("Invalid V4L2 buffer index"); - // The GMSL driver can mark its startup buffer as corrupt. Requeue - // it without conversion or inference; persistent corruption is fatal. - if(buffer.flags&V4L2_BUF_FLAG_ERROR) { - checkedIoctl(fd,VIDIOC_QBUF,&buffer,"VIDIOC_QBUF(error frame)"); - if(++consecutiveErrors>=static_cast(config.fps)) - throw std::runtime_error("Camera produced one second of consecutive error frames"); - continue; + if(status<0) { + lastError="VIDIOC_DQBUF: "+std::string(std::strerror(errno)); + // EIO can be a transient corrupt frame; a lost device needs reopening. + if(errno!=EIO)reconnect(); + pause();continue; + } + if(buffer.index>=buffers.size()){lastError="invalid V4L2 buffer index";reconnect();pause();continue;} + bool invalid=(buffer.flags&V4L2_BUF_FLAG_ERROR)||buffer.bytesusedbuffers[buffer.index].size; + if(invalid) { + ++consecutiveErrors;lastError="corrupt or incomplete camera frame"; + if(ioctl(fd,VIDIOC_QBUF,&buffer)<0)reconnect(); + pause();continue; } CapturedFrame frame; - try { - if(buffer.bytesusedbuffers[buffer.index].size) - throw std::runtime_error("Invalid camera frame: flags="+std::to_string(buffer.flags)+", used="+std::to_string(buffer.bytesused)+", required="+std::to_string(std::size_t(stride)*config.height)+", allocated="+std::to_string(buffers[buffer.index].size)); - auto& m=frame.metadata; - m.discarded_error_frames=consecutiveErrors;consecutiveErrors=0; - m.driver_sequence=buffer.sequence;m.received_monotonic_ns=monotonicNs(); - m.driver_timestamp_ns=std::uint64_t(buffer.timestamp.tv_sec)*1000000000ULL+std::uint64_t(buffer.timestamp.tv_usec)*1000; - m.driver_timestamp_monotonic=(buffer.flags&V4L2_BUF_FLAG_TIMESTAMP_MASK)==V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; - m.capture_monotonic_ns=m.received_monotonic_ns; // Host dequeue clock; retain raw driver timestamp separately. - if(haveSequence) { - auto delta=static_cast(buffer.sequence-lastSequence); - if(delta==0||delta>0x7fffffffU)throw std::runtime_error("Camera sequence reset or repeated frame"); - m.skipped_driver_frames=delta-1;index+=delta; + auto& m=frame.metadata; + m.discarded_error_frames=consecutiveErrors; + m.driver_sequence=buffer.sequence;m.received_monotonic_ns=monotonicNs(); + m.driver_timestamp_ns=std::uint64_t(buffer.timestamp.tv_sec)*1000000000ULL+std::uint64_t(buffer.timestamp.tv_usec)*1000; + m.driver_timestamp_monotonic=(buffer.flags&V4L2_BUF_FLAG_TIMESTAMP_MASK)==V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC; + m.capture_monotonic_ns=m.received_monotonic_ns; + if(haveSequence) { + auto delta=static_cast(buffer.sequence-lastSequence); + if(delta==0||delta>0x7fffffffU) { + lastError="camera sequence reset or repeated frame"; + reconnect();pause();continue; } - m.frame_index=index; - lastSequence=buffer.sequence;haveSequence=true; - // Convert before requeuing. No published result references MMAP memory. - frame.image=converter->convert(buffers[buffer.index].data,stride); - } catch(...) {ioctl(fd,VIDIOC_QBUF,&buffer);throw;} - checkedIoctl(fd,VIDIOC_QBUF,&buffer,"VIDIOC_QBUF");return frame; + m.skipped_driver_frames=delta-1;index+=delta; + } + m.frame_index=index; + // GPU failures remain fatal; only capture failures consume the retry budget. + try {frame.image=converter->convert(buffers[buffer.index].data,stride);} + catch(...) {ioctl(fd,VIDIOC_QBUF,&buffer);throw;} + if(ioctl(fd,VIDIOC_QBUF,&buffer)<0){lastError="VIDIOC_QBUF failed";reconnect();pause();continue;} + lastSequence=buffer.sequence;haveSequence=true;consecutiveErrors=0; + return frame; // The next read starts a fresh six-window retry budget. } return {}; } diff --git a/tests/ORIN_TEST_REPORT.md b/tests/ORIN_TEST_REPORT.md new file mode 100644 index 0000000..b763c82 --- /dev/null +++ b/tests/ORIN_TEST_REPORT.md @@ -0,0 +1,31 @@ +# Orin 相机故障恢复与停止测试(2026-09-23) + +目标:短暂取流故障在六个等待窗口内恢复时,同一进程继续推理;有效帧到达后重新计数;主动停止不等待全部窗口。 + +环境:192.168.195.100,Jetson Orin,L4T R35.4.1,CUDA 11.4.298,TensorRT 8.5.2;真实 /dev/video5,YOLO 与 RTMW TensorRT 引擎。三个分支在该板编译。 + +使用真实采集与推理进程;通过 LD_PRELOAD 在 V4L2 系统调用处注入无帧、坏帧、EIO 和 ENODEV。每次恢复测试检查同一子进程产生新的风险 JSON;错误恢复后至少新增 10 帧。Ctrl+C 通过 PTY 写入 0x03,SIGTERM 发送给测试进程。 + +| 分支 | Ctrl+C / SIGTERM 完整退出范围 | 持续无帧退出(含清理) | 恢复后再次断流退出(含清理) | 结果 | +|---|---:|---:|---:|---| +| lazy-inference | 801.21–942.42 ms | 13.010 s | 13.085 s | 9/9 通过 | +| inference-only | 793.22–1012.57 ms | 13.055 s | 12.945 s | 9/9 通过 | +| use-can | 786.06–907.59 ms | 13.066 s | 13.155 s | 9/9 通过 | + +每个分支覆盖:断流后恢复并重新计时;坏帧恢复;EIO 恢复;ENODEV 后重新打开设备并恢复;正常推理 Ctrl+C;重试期 Ctrl+C;第六窗口 Ctrl+C;SIGTERM;持续无帧六窗口后报错。timeout/recover 场景最后的退出码 1 是预期的超限结果,不是测试失败。 + +默认逻辑等待约 12 秒,表中的完整进程退出另含 GPU/驱动资源清理时间。最初使用的 1 秒完整退出判据过于严格:清理 GPU 资源可使总耗时略超过 1 秒;最终以不超过 2 秒验收主动停止,同时记录实测值。lazy-inference/use-can 的流水线停止日志也已记录,详见 JSON。 + +实机发现并修复:use-can 关闭时遗漏 munmap,导致重新打开后 VIDIOC_S_FMT 返回 EBUSY。修复后重跑该分支全部九项。另有原生 V4L2 重开回归测试,检查连续三次重开及部分 mmap 失败后无遗留映射。 + +补充回归:在板端执行 tests/run_camera_timeout.sh 和 --wall-clock(默认六窗口约 12.00 秒);use-can 额外执行 tests/run_v4l2_reopen.sh。它们使用模拟采集,仅为补充,不替代上述板端真实推理测试。 + +测试范围限制:未进行物理拔线、USB-CAN 报文/拔插、驱动内核永久卡死、GPU 故障或长时间耐久测试。板上未接 USB-CAN,CAN 模式处于缺失回退。视频回放路径未改动,未包含在本次相机恢复测试中。 + +完整数据:orin_hardware_results.json。故障注入器源码:orin_capture_faults.c,仅用于测试。原始运行日志位于板端 /home/orin/vision-anti-pinch-ctrlc-test-20260923/。 + +## 经测试的可执行文件 SHA256 + +- lazy-inference: `0d77d17626644fb50b663c33edbb1a09884b34b5410a1109fc56b4d3781651b1` +- inference-only: `3a984e1e4c0fa12285967085e3359a5b7c698d744e9c2deb2480a312eb637c1c` +- use-can: `a2616e193ef9f006b49b4bb4ac43ae3ffc4cee1f1edf6d58ed6f7f9e5f933ad1` diff --git a/tests/camera_timeout_test.cpp b/tests/camera_timeout_test.cpp new file mode 100644 index 0000000..54bacc5 --- /dev/null +++ b/tests/camera_timeout_test.cpp @@ -0,0 +1,192 @@ +// Exercise the production Camera with simulated capture and no GPU or camera. +#include "camera.hpp" +#include "uyvy_converter.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef TEST_V4L2_CAPTURE +#include "v4l2_capture.h" +#else +#include +#include +#include +#include +#include +#endif + +namespace { +std::string events; +std::size_t cursor{}; +char current{}; +unsigned sequence{}; +int timeoutMs{}; +bool realWait{}; +std::function onStop; +unsigned char pixels[8]{}; +void check(bool condition,char const* message) { + if(!condition)throw std::runtime_error(message); +} +void script(std::string value) {events=std::move(value);cursor=0;} +char next() { + check(cursor(Impl{w,h})){} +UyvyConverter::~UyvyConverter()=default; +std::shared_ptr UyvyConverter::convert(void const*,std::size_t) { + auto image=std::make_shared();image->width=impl_->width;image->height=impl_->height; + image->stride=image->width*3;image->pixels.resize(image->stride*image->height);return image; +} +} +#ifdef TEST_V4L2_CAPTURE +V4l2Capture::~V4l2Capture()=default; +bool V4l2Capture::open(std::string const&){reconnect_needed_=false;return true;} +void V4l2Capture::close(){} +bool V4l2Capture::setFormat(uint32_t w,uint32_t h,uint32_t p){width_=w;height_=h;pixelformat_=p;return true;} +bool V4l2Capture::setFps(uint32_t){return true;} +bool V4l2Capture::initMmap(uint32_t){return true;} +bool V4l2Capture::startStreaming(){return true;} +void V4l2Capture::releaseFrame(Frame const&){} +bool V4l2Capture::getFrame(Frame& f,int waitMs) { + check(waitMs<=100,"Stop polling should remain at most 100 ms"); + if(next()=='s'){onStop();return false;} + if(current=='d'){reconnect_needed_=true;return false;} + if(current=='e'||current=='x'){return false;} + if(current=='t') { + // Each scripted timeout represents a full logical capture window. + // The separate stop test exercises the short-wait cancellation path. + std::this_thread::sleep_for(std::chrono::milliseconds(timeoutMs));return false; + } + check(current=='f',"Unsupported mock V4L2 event"); + f.data=pixels;f.size=sizeof(pixels);f.width=2;f.height=2;f.bytes_per_line=4;f.sequence=sequence++; + return true; +} +#else +extern "C" { +int __real_poll(pollfd*,nfds_t,int); +int __real_open(char const*,int,...); +int __real_close(int); +int __real_ioctl(int,unsigned long,...); +void* __real_mmap(void*,size_t,int,int,int,off_t); +int __real_munmap(void*,size_t); +int __wrap_open(char const* path,int flags,...) { + if(std::strcmp(path,"/mock/camera")==0)return 100000; + return __real_open(path,flags); +} +int __wrap_close(int fd){return fd==100000?0:__real_close(fd);} +void* __wrap_mmap(void* a,size_t n,int p,int f,int fd,off_t o) { + return fd==100000?pixels:__real_mmap(a,n,p,f,fd,o); +} +int __wrap_munmap(void* a,size_t n){return a==pixels?0:__real_munmap(a,n);} +int __wrap_ioctl(int fd,unsigned long request,...) { + va_list args;va_start(args,request);void* p=va_arg(args,void*);va_end(args); + if(fd!=100000)return __real_ioctl(fd,request,p); + switch(request) { + case VIDIOC_QUERYCAP:static_cast(p)->capabilities=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_STREAMING;break; + case VIDIOC_S_FMT:static_cast(p)->fmt.pix.bytesperline=4;break; + case VIDIOC_G_PARM:break; + case VIDIOC_REQBUFS:static_cast(p)->count=2;break; + case VIDIOC_QUERYBUF:static_cast(p)->length=sizeof(pixels);break; + case VIDIOC_DQBUF: { + if(current=='x'){errno=EIO;return -1;} + auto& b=*static_cast(p);b.index=0;b.bytesused=sizeof(pixels);b.sequence=sequence++; + b.flags=current=='e'?V4L2_BUF_FLAG_ERROR:0;break; + } + case VIDIOC_QBUF:case VIDIOC_STREAMON:case VIDIOC_STREAMOFF:break; + default:throw std::runtime_error("Unexpected camera ioctl"); + } + return 0; +} +int __wrap_poll(pollfd* fds,nfds_t count,int waitMs) { + if(count==1)return __real_poll(fds,count,waitMs); + check(count==2&&waitMs>0&&waitMs<=timeoutMs,"Camera must respect the configured timeout window"); + switch(next()) { + case 't':if(realWait)std::this_thread::sleep_for(std::chrono::milliseconds(waitMs));return 0; + case 'i':errno=EINTR;return -1; + case 's':onStop();return 0; + case 'd':fds[0].revents=POLLHUP;return 1; + case 'f':case 'e':case 'x':fds[0].revents=POLLIN;return 1; + default:throw std::runtime_error("Unexpected poll event"); + } +} +int __wrap___poll_chk(pollfd* fds,nfds_t count,int waitMs,size_t size) { + check(size>=count*sizeof(pollfd),"Invalid fortified poll buffer size"); + return __wrap_poll(fds,count,waitMs); +} +} +#endif +int main(int argc,char** argv)try { + cms::CameraConfig config;config.device="/mock/camera";config.width=config.height=2;config.buffers=2; + check(config.timeout_ms==2000,"Default per-attempt timeout must be 2 seconds"); + realWait=argc>1&&std::string(argv[1])=="--wall-clock"; + if(!realWait)config.timeout_ms=100; + timeoutMs=config.timeout_ms; + if(realWait) { + cms::Camera camera(config);script("tttttt"); + auto before=std::chrono::steady_clock::now();expectTimeout(camera); + auto elapsed=std::chrono::duration(std::chrono::steady_clock::now()-before).count(); + check(cursor==6&&elapsed>=12.0&&elapsed<15.0,"Default timeout should fail after six attempts, about 12 seconds"); + std::cout<<"PASS wall-clock six-timeout duration="< +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +static int calls=0; +static int camera_fd(int fd){char name[64],target[256];snprintf(name,sizeof(name),"/proc/self/fd/%d",fd);ssize_t n=readlink(name,target,sizeof(target)-1);if(n<0)return 0;target[n]=0;return strcmp(target,"/dev/video5")==0;} +static long long now_ms(void){struct timespec t;clock_gettime(CLOCK_MONOTONIC,&t);return (long long)t.tv_sec*1000+t.tv_nsec/1000000;} +static void marker(const char *s){ssize_t ignored=write(2,s,strlen(s));(void)ignored;} +static int should_stall(void){ + static long long since=0;static int phase=0,resumed=0; + if(!getenv("VAP_TEST_STALL"))return 0; + if(phase==0){if(++calls<60)return 0;phase=1;since=now_ms();marker("TEST_STALL_ACTIVE\n");} + if(phase==1&&getenv("VAP_TEST_RECOVER")&&now_ms()-since>=4200){phase=2;marker("TEST_CAMERA_RECOVERED\n");return 0;} + if(phase==2){if(++resumed<30)return 0;phase=3;marker("TEST_STALL_SECOND\n");} + return phase==1||phase==3; +} +int poll(struct pollfd *fds,nfds_t count,int timeout){static int(*real_poll)(struct pollfd*,nfds_t,int);if(!real_poll)real_poll=dlsym(RTLD_NEXT,"poll");for(nfds_t i=0;iflags|=V4L2_BUF_FLAG_ERROR;return rc;} + errno=strcmp(kind,"device_error")==0?ENODEV:EIO;return -1; + } + return real_ioctl(fd,request,arg); +} diff --git a/tests/orin_hardware_results.json b/tests/orin_hardware_results.json new file mode 100644 index 0000000..16358e5 --- /dev/null +++ b/tests/orin_hardware_results.json @@ -0,0 +1,253 @@ +[ + { + "branch": "lazy-inference", + "mode": "recover", + "exit_code": 1, + "inference_json_frames": 88, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 13.085, + "recovered_real_capture": true + }, + { + "branch": "lazy-inference", + "mode": "bad_frames_recover", + "exit_code": 0, + "inference_json_frames": 67, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 846.3, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 132.56 + }, + { + "branch": "lazy-inference", + "mode": "io_error_recover", + "exit_code": 0, + "inference_json_frames": 67, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 836.09, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 106.06 + }, + { + "branch": "lazy-inference", + "mode": "device_error_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 830.0, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 133.41 + }, + { + "branch": "lazy-inference", + "mode": "live", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 833.16, + "pipeline_stop_ms": 139.5 + }, + { + "branch": "lazy-inference", + "mode": "retry", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 942.42, + "pipeline_stop_ms": 201.21 + }, + { + "branch": "lazy-inference", + "mode": "sixth_wait", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 904.29, + "pipeline_stop_ms": 194.16 + }, + { + "branch": "lazy-inference", + "mode": "sigterm", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 801.21, + "pipeline_stop_ms": 123.09 + }, + { + "branch": "lazy-inference", + "mode": "timeout", + "exit_code": 1, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 13.01 + }, + { + "branch": "inference-only", + "mode": "recover", + "exit_code": 1, + "inference_json_frames": 88, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 12.945, + "recovered_real_capture": true + }, + { + "branch": "inference-only", + "mode": "bad_frames_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 836.67, + "recovered_real_capture": true, + "frames_after_recovery": 10 + }, + { + "branch": "inference-only", + "mode": "io_error_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 827.43, + "recovered_real_capture": true, + "frames_after_recovery": 10 + }, + { + "branch": "inference-only", + "mode": "device_error_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 853.08, + "recovered_real_capture": true, + "frames_after_recovery": 10 + }, + { + "branch": "inference-only", + "mode": "live", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 804.87 + }, + { + "branch": "inference-only", + "mode": "retry", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 913.42 + }, + { + "branch": "inference-only", + "mode": "sixth_wait", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 1012.57 + }, + { + "branch": "inference-only", + "mode": "sigterm", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 793.22 + }, + { + "branch": "inference-only", + "mode": "timeout", + "exit_code": 1, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 13.055 + }, + { + "branch": "use-can", + "mode": "recover", + "exit_code": 1, + "inference_json_frames": 88, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 13.155, + "recovered_real_capture": true + }, + { + "branch": "use-can", + "mode": "bad_frames_recover", + "exit_code": 0, + "inference_json_frames": 67, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 815.49, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 122.36 + }, + { + "branch": "use-can", + "mode": "io_error_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 836.05, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 130.73 + }, + { + "branch": "use-can", + "mode": "device_error_recover", + "exit_code": 0, + "inference_json_frames": 68, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 814.68, + "recovered_real_capture": true, + "frames_after_recovery": 10, + "pipeline_stop_ms": 123.99 + }, + { + "branch": "use-can", + "mode": "live", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 786.06, + "pipeline_stop_ms": 108.96 + }, + { + "branch": "use-can", + "mode": "retry", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 862.45, + "pipeline_stop_ms": 167.55 + }, + { + "branch": "use-can", + "mode": "sixth_wait", + "exit_code": 0, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 907.59, + "pipeline_stop_ms": 197.07 + }, + { + "branch": "use-can", + "mode": "sigterm", + "exit_code": 0, + "inference_json_frames": 3, + "gpu_models": "YOLO + RTMW TensorRT engines", + "signal_exit_ms": 827.61, + "pipeline_stop_ms": 130.51 + }, + { + "branch": "use-can", + "mode": "timeout", + "exit_code": 1, + "inference_json_frames": 58, + "gpu_models": "YOLO + RTMW TensorRT engines", + "six_timeout_exit_seconds": 13.066 + } +] diff --git a/tests/run_camera_timeout.sh b/tests/run_camera_timeout.sh new file mode 100755 index 0000000..b2e795b --- /dev/null +++ b/tests/run_camera_timeout.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -euo pipefail +root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)" +test_dir="$(mktemp -d)" +trap 'rm -rf "$test_dir"' EXIT +flags=(-std=c++17 -O1 -g -Wall -Wextra -Wpedantic -pthread -fsanitize=undefined -fno-sanitize-recover=all -I"$root/include") +links=() +if [[ -f "$root/include/v4l2_capture.h" ]]; then + flags+=(-DTEST_V4L2_CAPTURE -I"$root/tests/stubs") +else + for fn in open close ioctl mmap munmap poll __poll_chk; do links+=("-Wl,--wrap=$fn"); done +fi +"${CXX:-g++}" "${flags[@]}" "${CAMERA_SOURCE:-$root/src/camera.cpp}" "$root/tests/camera_timeout_test.cpp" "${links[@]}" -o "$test_dir/camera_timeout_test" +"$test_dir/camera_timeout_test" "$@" diff --git a/tests/stubs/opencv2/videoio.hpp b/tests/stubs/opencv2/videoio.hpp new file mode 100644 index 0000000..c112081 --- /dev/null +++ b/tests/stubs/opencv2/videoio.hpp @@ -0,0 +1,19 @@ +#pragma once +// Camera timeout tests exercise live capture only. Stub the unused replay API +// so the use-can Camera can be tested without OpenCV or a video decoder. +#include +#include +namespace cv { +constexpr int CAP_PROP_FRAME_WIDTH=3,CAP_PROP_FRAME_HEIGHT=4; +struct Mat { + int cols{},rows{}; + unsigned char const* ptr(int)const {throw std::logic_error("Video replay is outside this test");} +}; +class VideoCapture { +public: + bool isOpened()const{return false;} + bool open(std::string const&){throw std::logic_error("Video replay is outside this test");} + double get(int)const {throw std::logic_error("Video replay is outside this test");} + bool read(Mat&){throw std::logic_error("Video replay is outside this test");} +}; +}