[libcamera-devel] [PATCH 4/5] test: v4l2_device: Reset media links and set a resolution
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sat May 11 04:27:31 CEST 2019
Hello,
On Thu, May 09, 2019 at 10:30:41AM +0100, Kieran Bingham wrote:
> On 08/05/2019 17:58, Niklas Söderlund wrote:
> > When initializing the test reset any media links and set a know
> > resolutions. This is needed to put the device under test into known
> > state and not have the v4l2 device tests depend on that no one have
> > touched the device before the test is executed.
> >
> > The resolution is picked purely at random and could possibly be moved to
> > each test case if there is a need for different resolutions for a
> > specific one.
> >
> > Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> > ---
> > test/v4l2_device/v4l2_device_test.cpp | 19 ++++++++++++++++++-
> > 1 file changed, 18 insertions(+), 1 deletion(-)
> >
> > diff --git a/test/v4l2_device/v4l2_device_test.cpp b/test/v4l2_device/v4l2_device_test.cpp
> > index ee5a8e009bef2a5e..5bd80a6c68d796b6 100644
> > --- a/test/v4l2_device/v4l2_device_test.cpp
> > +++ b/test/v4l2_device/v4l2_device_test.cpp
> > @@ -54,7 +54,24 @@ int V4L2DeviceTest::init()
> > if (!capture_)
> > return TestFail;
> >
> > - return capture_->open();
> > + media_->acquire();
>
> Should you check the return code of acquire?
>
> Does it block using lockf() internally?
It won't block, it will return an error, so I think it's a good idea to
check for that.
> > + if (media_->disableLinks())
>
> Where do we recreate / re-enable the links?
>
> or does it reset to a sane default?
It won't enable links, so any test depending on this would have to
enable links manually.
> > + return TestFail;
>
> Is it an issue here that the media_ is not released? I now can't recall
> if the acquire/release is about locking globally using lockf() or if
> it's just a state machine state change.
>
> If it must be released - perhaps we should do some sort of auto-lock
> release by using the destructor of a local object, so that it releases
> when it goes out of scope.
lockf() will not persist once the file descriptor is closed, so it
shouldn't be a problem, but proper error handling is still a good idea.
With those issues fixed,
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > + media_->release();
> > +
> > + if (capture_->open())
> > + return TestFail;
> > +
> > + V4L2DeviceFormat format = {};
> > + if (capture_->getFormat(&format))
> > + return TestFail;
> > +
> > + format.size.width = 640;
> > + format.size.height = 480;
> > + if (capture_->setFormat(&format))
> > + return TestFail;
> > +
> > + return TestPass;
> > }
> >
> > void V4L2DeviceTest::cleanup()
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list