[libcamera-devel] [PATCH v2 1/5] test: list-cameras: Make test output more verbose

Niklas Söderlund niklas.soderlund at ragnatech.se
Wed Jan 16 16:11:13 CET 2019


Hi Jacopo,

Thanks for your work.

On 2019-01-16 14:59:45 +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.

s/get unnoticed/go unnoticed/

With this fix

Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>

Nice update of the TC!

> + */
>  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;
> +		}
> +
> +		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()
> -- 
> 2.20.1
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list