[libcamera-devel] [PATCH v8 16/17] lc-compliance: Check that requests complete successfully

Nícolas F. R. A. Prado nfraprado at collabora.com
Tue Aug 24 21:56:35 CEST 2021


When a request fails to queue it is completed but with its status set to
RequestCancelled. Add a check in the requestComplete callback to make
sure that the request was completed successfully.

For the SimpleCaptureUnbalanced test we need to do this check only if
the capture isn't over yet, otherwise the few extra requests that get
cancelled at the end, which is the normal behavior, will make the test
fail.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado at collabora.com>

---

Changes in v8:
- Fixed issue in UnbalancedStop test where requests cancelled due to stop() call
  were failing the test
- Fixed formatting

Changes in v5:
- New

 src/lc-compliance/simple_capture.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/lc-compliance/simple_capture.cpp b/src/lc-compliance/simple_capture.cpp
index d4805ff3403c..701d0feb70d1 100644
--- a/src/lc-compliance/simple_capture.cpp
+++ b/src/lc-compliance/simple_capture.cpp
@@ -165,6 +165,9 @@ int SimpleCaptureBalanced::queueRequest(Request *request)
 
 void SimpleCaptureBalanced::requestComplete(Request *request)
 {
+	EXPECT_EQ(request->status(), Request::Status::RequestComplete)
+		<< "Request didn't complete successfully";
+
 	if (captureCompleted())
 		return;
 
@@ -202,6 +205,9 @@ void SimpleCaptureUnbalanced::requestComplete(Request *request)
 	if (captureCompleted())
 		return;
 
+	EXPECT_EQ(request->status(), Request::Status::RequestComplete)
+		<< "Request didn't complete successfully";
+
 	request->reuse(Request::ReuseBuffers);
 	if (camera_->queueRequest(request))
 		loop_->exit(-EINVAL);
@@ -233,5 +239,8 @@ void SimpleCaptureOverflow::capture()
 
 void SimpleCaptureOverflow::requestComplete([[maybe_unused]] Request *request)
 {
+	EXPECT_EQ(request->status(), Request::Status::RequestComplete)
+		<< "Request didn't complete successfully";
+
 	captureCompleted();
 }
-- 
2.33.0



More information about the libcamera-devel mailing list