[libcamera-devel] [PATCH v2 1/5] test: list-cameras: Make test output more verbose
Jacopo Mondi
jacopo at jmondi.org
Mon Jan 21 10:15:41 CET 2019
Hi Laurent,
On Mon, Jan 21, 2019 at 11:09:56AM +0200, Laurent Pinchart wrote:
> Hi Jacopo,
>
> Thank you for the patch.
>
> On Wed, Jan 16, 2019 at 02:59:45PM +0100, Jacopo Mondi wrote:
> > Make the list-cameras test a little more verbose to better describe
> > failures. While at there use the Test class defined TestStatus value as
> > test exit codes, and skip the test if no camera gets registred.
> >
> > Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> > ---
> > test/list-cameras.cpp | 41 +++++++++++++++++++++++++++++++++++------
> > 1 file changed, 35 insertions(+), 6 deletions(-)
> >
> > diff --git a/test/list-cameras.cpp b/test/list-cameras.cpp
> > index e2026c9..c9dc199 100644
> > --- a/test/list-cameras.cpp
> > +++ b/test/list-cameras.cpp
> > @@ -7,6 +7,7 @@
> >
> > #include <iostream>
> >
> > +#include <libcamera/camera.h>
> > #include <libcamera/camera_manager.h>
> >
> > #include "test.h"
> > @@ -14,27 +15,55 @@
> > using namespace std;
> > using namespace libcamera;
> >
> > +/*
> > + * List all cameras registered in the system, using the CameraManager.
> > + *
> > + * In order for the test to run successfully, a pipeline handler supporting
> > + * the current test platform should be available in the library.
> > + * Libcamera provides a platform-agnostic pipeline handler for the 'vimc'
> > + * virtual media device, which can be used for testing purposes.
> > + *
> > + * The test tries to list all cameras registered in the system, if no
> > + * camera is found the test is skipped. If the test gets skipped on a
> > + * platform where a pipeline handler is known to be available, an error
> > + * in camera enumeration might get unnoticed.
> > + */
> > class ListTest : public Test
> > {
> > protected:
> > int init()
> > {
> > cm = CameraManager::instance();
> > - cm->start();
> > +
> > + int ret = cm->start();
> > + if (ret) {
> > + cerr << "Failed to start the CameraManager" << endl;
> > + return TestFail;
> > + }
> >
> > return 0;
> > }
> >
> > int run()
> > {
> > - unsigned int count = 0;
> > + vector<string> cameraList = cm->list();
> > + if (cameraList.empty()) {
> > + cerr << "No cameras registered in the system: test skip" << endl
> > + << "This might be expected if no pipeline handler supports the testing platform" << endl;
> > + return TestSkip;
>
> As commented before, I have some doubts on the value of this test,
> especially aftere rebasing it on the lifetime management series, as it
> will then only return TestSkip or TestPass. A test that can't fail has
> limited use :-) I think listing cameras should be part of a libcamera
> command line tool, not a test case.
>
> I wont block this patch, but please be aware that I plan to remove the
> list-cameras test.
>
This was my understanding as well, that's why I have sent an IPU3
pipeline specific test. I'm fine with this being turned into a
utility, and encourage pipeline specific tests to verify enumeration
and matching works as expected.
Thanks
j
> > + }
> > +
> > + for (auto name : cameraList) {
> > + Camera *cam = cm->get(name);
> > + if (!cam) {
> > + cerr << "Failed to get camera '" << name << "' by name" << endl;
> > + return TestFail;
> > + }
> >
> > - for (auto name : cm->list()) {
> > - cout << "- " << name << endl;
> > - count++;
> > + cout << "Found camera '" << cam->name() << "'" << endl;
> > }
> >
> > - return count ? 0 : -ENODEV;
> > + return TestPass;
> > }
> >
> > void cleanup()
>
> --
> Regards,
>
> Laurent Pinchart
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20190121/fc6c6738/attachment.sig>
More information about the libcamera-devel
mailing list