diff options
author | Hans Verkuil <hverkuil-cisco@xs4all.nl> | 2018-11-28 11:44:54 +0100 |
---|---|---|
committer | Hans Verkuil <hverkuil-cisco@xs4all.nl> | 2018-11-28 11:44:54 +0100 |
commit | f2af3d3e99fb1a7ec215b4b47659e6e19783494b (patch) | |
tree | 8e8db6d234b32f8abf76586fecf3e44c9a10350a | |
parent | d5b2a43fcfa2d07b12d7e365dfd4a95a53c1589c (diff) |
v4l2-compliance: use inject_error and improve MEDIA_REQUEST_IOC_QUEUE tests
The error injection test for MEDIA_REQUEST_IOC_QUEUE failed for already
prepared buffers since in that case it won't call buf_prepare again and
vivid cannot inject the error there.
So skip that test for every other buffer (all even buffers are prepared,
all odd buffers aren't).
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
-rw-r--r-- | utils/v4l2-compliance/v4l2-test-buffers.cpp | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/utils/v4l2-compliance/v4l2-test-buffers.cpp b/utils/v4l2-compliance/v4l2-test-buffers.cpp index bee8569b..592aae4a 100644 --- a/utils/v4l2-compliance/v4l2-test-buffers.cpp +++ b/utils/v4l2-compliance/v4l2-test-buffers.cpp @@ -1160,13 +1160,8 @@ int testMmap(struct node *node, unsigned frame_count) fail_on_test(setupMmap(node, q)); - if (is_vivid) { - v4l2_control ctrl = { - .id = VIVID_CID_START_STR_ERROR, - }; - if (!node->s_ctrl(ctrl)) - fail_on_test(!node->streamon(q.g_type())); - } + if (node->inject_error(VIVID_CID_START_STR_ERROR)) + fail_on_test(!node->streamon(q.g_type())); fail_on_test(node->streamon(q.g_type())); fail_on_test(node->streamon(q.g_type())); @@ -1617,6 +1612,8 @@ int testRequests(struct node *node, bool test_streaming) if (!(i & 1)) { fail_on_test(buf.prepare_buf(node) != EINVAL); buf.s_flags(0); + if (node->inject_error(VIVID_CID_BUF_PREPARE_ERROR)) + fail_on_test(buf.prepare_buf(node) != EINVAL); fail_on_test(buf.prepare_buf(node)); fail_on_test(buf.querybuf(node, i)); fail_on_test(!(buf.g_flags() & V4L2_BUF_FLAG_PREPARED)); @@ -1660,15 +1657,9 @@ int testRequests(struct node *node, bool test_streaming) fail_on_test(buf.querybuf(node, i)); fail_on_test(!(buf.g_flags() & V4L2_BUF_FLAG_IN_REQUEST)); fail_on_test(!(buf.g_flags() & V4L2_BUF_FLAG_REQUEST_FD)); - if (is_vivid && i > num_bufs - 2) { - v4l2_control ctrl = { - .id = VIVID_CID_BUF_PREPARE_ERROR, - }; - - if (!node->s_ctrl(ctrl)) - fail_on_test(doioctl_fd(buf_req_fds[i], - MEDIA_REQUEST_IOC_QUEUE, 0) != EINVAL); - } + if ((i & 1) && node->inject_error(VIVID_CID_BUF_PREPARE_ERROR)) + fail_on_test(doioctl_fd(buf_req_fds[i], + MEDIA_REQUEST_IOC_QUEUE, 0) != EINVAL); fail_on_test(doioctl_fd(buf_req_fds[i], MEDIA_REQUEST_IOC_QUEUE, 0)); fail_on_test(buf.querybuf(node, i)); fail_on_test(buf.g_flags() & V4L2_BUF_FLAG_IN_REQUEST); @@ -1681,13 +1672,8 @@ int testRequests(struct node *node, bool test_streaming) buf_req_fds[i] = -1; } if (i == num_bufs / 2) { - if (is_vivid) { - v4l2_control ctrl = { - .id = VIVID_CID_START_STR_ERROR, - }; - if (!node->s_ctrl(ctrl)) - fail_on_test(!node->streamon(q.g_type())); - } + if (node->inject_error(VIVID_CID_START_STR_ERROR)) + fail_on_test(!node->streamon(q.g_type())); fail_on_test(node->streamon(q.g_type())); } } |