[libcamera-devel] [PATCH v1 4/4] test: Drop pipeline test

Paul Elder paul.elder at ideasonboard.com
Sat Dec 24 01:27:48 CET 2022


On Thu, Dec 22, 2022 at 03:01:32AM +0200, Laurent Pinchart via libcamera-devel wrote:
> The two pipeline test (for ipu3 and rkisp1) are meant to perform very

s/test/tests/

> basic validation of the corresponding pipeline handlers, limited to
> verifying camera enumeration. They are not unit tests as such, they are
> superseded by the lc-compliance tool, and they are never used in
> practice (and always skipped). Drop them.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>

> ---
>  test/meson.build                              |   1 -
>  test/pipeline/ipu3/ipu3_pipeline_test.cpp     | 126 ------------------
>  test/pipeline/ipu3/meson.build                |  14 --
>  test/pipeline/meson.build                     |   4 -
>  test/pipeline/rkisp1/meson.build              |  14 --
>  test/pipeline/rkisp1/rkisp1_pipeline_test.cpp | 115 ----------------
>  6 files changed, 274 deletions(-)
>  delete mode 100644 test/pipeline/ipu3/ipu3_pipeline_test.cpp
>  delete mode 100644 test/pipeline/ipu3/meson.build
>  delete mode 100644 test/pipeline/meson.build
>  delete mode 100644 test/pipeline/rkisp1/meson.build
>  delete mode 100644 test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
> 
> diff --git a/test/meson.build b/test/meson.build
> index 19726f37421d..b227be818419 100644
> --- a/test/meson.build
> +++ b/test/meson.build
> @@ -32,7 +32,6 @@ subdir('ipa')
>  subdir('ipc')
>  subdir('log')
>  subdir('media_device')
> -subdir('pipeline')
>  subdir('process')
>  subdir('py')
>  subdir('serialization')
> diff --git a/test/pipeline/ipu3/ipu3_pipeline_test.cpp b/test/pipeline/ipu3/ipu3_pipeline_test.cpp
> deleted file mode 100644
> index 9e647af5fdf8..000000000000
> --- a/test/pipeline/ipu3/ipu3_pipeline_test.cpp
> +++ /dev/null
> @@ -1,126 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-or-later */
> -/*
> - * Copyright (C) 2019, Google Inc.
> - *
> - * ipu3_pipeline_test.cpp - Intel IPU3 pipeline test
> - */
> -
> -#include <iostream>
> -#include <sys/stat.h>
> -#include <sys/types.h>
> -#include <unistd.h>
> -
> -#include <libcamera/camera.h>
> -#include <libcamera/camera_manager.h>
> -
> -#include "libcamera/internal/device_enumerator.h"
> -#include "libcamera/internal/media_device.h"
> -#include "libcamera/internal/media_object.h"
> -
> -#include "test.h"
> -
> -using namespace std;
> -using namespace libcamera;
> -
> -/*
> - * Verify that the Intel IPU3 pipeline handler gets matched and cameras
> - * are enumerated correctly.
> - *
> - * The test is supposed to be run on an IPU3 platform, otherwise it gets
> - * skipped.
> - *
> - * The test lists all cameras registered in the system, if any camera is
> - * available at all.
> - */
> -class IPU3PipelineTest : public Test
> -{
> -protected:
> -	int init();
> -	int run();
> -	void cleanup();
> -
> -private:
> -	CameraManager *cameraManager_;
> -	unsigned int sensors_;
> -};
> -
> -int IPU3PipelineTest::init()
> -{
> -	unique_ptr<DeviceEnumerator> enumerator = DeviceEnumerator::create();
> -	if (!enumerator) {
> -		cerr << "Failed to create device enumerator" << endl;
> -		return TestFail;
> -	}
> -
> -	if (enumerator->enumerate()) {
> -		cerr << "Failed to enumerate media devices" << endl;
> -		return TestFail;
> -	}
> -
> -	DeviceMatch imgu_dm("ipu3-imgu");
> -	DeviceMatch cio2_dm("ipu3-cio2");
> -
> -	if (!enumerator->search(imgu_dm)) {
> -		cerr << "Failed to find IPU3 IMGU: test skip" << endl;
> -		return TestSkip;
> -	}
> -
> -	std::shared_ptr<MediaDevice> cio2 = enumerator->search(cio2_dm);
> -	if (!cio2) {
> -		cerr << "Failed to find IPU3 CIO2: test skip" << endl;
> -		return TestSkip;
> -	}
> -
> -	/*
> -	 * Camera sensor are connected to the CIO2 unit.
> -	 * Count how many sensors are connected in the system
> -	 * and later verify this matches the number of registered
> -	 * cameras.
> -	 */
> -	int ret = cio2->populate();
> -	if (ret) {
> -		cerr << "Failed to populate media device " << cio2->deviceNode() << endl;
> -		return TestFail;
> -	}
> -
> -	sensors_ = 0;
> -	const vector<MediaEntity *> &entities = cio2->entities();
> -	for (MediaEntity *entity : entities) {
> -		if (entity->function() == MEDIA_ENT_F_CAM_SENSOR)
> -			sensors_++;
> -	}
> -
> -	enumerator.reset(nullptr);
> -
> -	cameraManager_ = new CameraManager();
> -	ret = cameraManager_->start();
> -	if (ret) {
> -		cerr << "Failed to start the CameraManager" << endl;
> -		return TestFail;
> -	}
> -
> -	return 0;
> -}
> -
> -int IPU3PipelineTest::run()
> -{
> -	auto cameras = cameraManager_->cameras();
> -	for (const std::shared_ptr<Camera> &cam : cameras)
> -		cout << "Found camera '" << cam->id() << "'" << endl;
> -
> -	if (cameras.size() != sensors_) {
> -		cerr << cameras.size() << " cameras registered, but " << sensors_
> -		     << " were expected" << endl;
> -		return TestFail;
> -	}
> -
> -	return TestPass;
> -}
> -
> -void IPU3PipelineTest::cleanup()
> -{
> -	cameraManager_->stop();
> -	delete cameraManager_;
> -}
> -
> -TEST_REGISTER(IPU3PipelineTest)
> diff --git a/test/pipeline/ipu3/meson.build b/test/pipeline/ipu3/meson.build
> deleted file mode 100644
> index af075707f505..000000000000
> --- a/test/pipeline/ipu3/meson.build
> +++ /dev/null
> @@ -1,14 +0,0 @@
> -# SPDX-License-Identifier: CC0-1.0
> -
> -ipu3_test = [
> -    {'name': 'ipu3_pipeline_test', 'sources': ['ipu3_pipeline_test.cpp']},
> -]
> -
> -foreach test : ipu3_test
> -    exe = executable(test['name'], test['sources'],
> -                     dependencies : libcamera_private,
> -                     link_with : test_libraries,
> -                     include_directories : test_includes_internal)
> -
> -    test(test['name'], exe, suite : 'ipu3', is_parallel : false)
> -endforeach
> diff --git a/test/pipeline/meson.build b/test/pipeline/meson.build
> deleted file mode 100644
> index 6e7901fee38f..000000000000
> --- a/test/pipeline/meson.build
> +++ /dev/null
> @@ -1,4 +0,0 @@
> -# SPDX-License-Identifier: CC0-1.0
> -
> -subdir('ipu3')
> -subdir('rkisp1')
> diff --git a/test/pipeline/rkisp1/meson.build b/test/pipeline/rkisp1/meson.build
> deleted file mode 100644
> index 1d178ad9da6f..000000000000
> --- a/test/pipeline/rkisp1/meson.build
> +++ /dev/null
> @@ -1,14 +0,0 @@
> -# SPDX-License-Identifier: CC0-1.0
> -
> -rkisp1_test = [
> -    {'name': 'rkisp1_pipeline_test', 'sources': ['rkisp1_pipeline_test.cpp']},
> -]
> -
> -foreach test : rkisp1_test
> -    exe = executable(test['name'], test['sources'],
> -                     dependencies : libcamera_private,
> -                     link_with : test_libraries,
> -                     include_directories : test_includes_internal)
> -
> -    test(test['name'], exe, suite : 'rkisp1', is_parallel : false)
> -endforeach
> diff --git a/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp b/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
> deleted file mode 100644
> index acaf3c33b529..000000000000
> --- a/test/pipeline/rkisp1/rkisp1_pipeline_test.cpp
> +++ /dev/null
> @@ -1,115 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-or-later */
> -/*
> - * Copyright (C) 2020, Linaro
> - *
> - * Based on test/pipeline/ipu3/ipu3_pipeline_test.cpp
> - *
> - * rkisp1_pipeline_test.cpp - Rockchip RK3399 rkisp1 pipeline test
> - */
> -
> -#include <iostream>
> -
> -#include <sys/stat.h>
> -#include <sys/types.h>
> -#include <unistd.h>
> -
> -#include <libcamera/camera.h>
> -#include <libcamera/camera_manager.h>
> -
> -#include "libcamera/internal/device_enumerator.h"
> -#include "libcamera/internal/media_device.h"
> -#include "libcamera/internal/media_object.h"
> -
> -#include "test.h"
> -
> -using namespace std;
> -using namespace libcamera;
> -
> -/*
> - * Verify that the RK3399 pipeline handler gets matched and cameras
> - * are enumerated correctly.
> - *
> - * The test is supposed to be run on rockchip platform.
> - *
> - * The test lists all cameras registered in the system, if any camera is
> - * available at all.
> - */
> -class RKISP1PipelineTest : public Test
> -{
> -protected:
> -	int init();
> -	int run();
> -	void cleanup();
> -
> -private:
> -	CameraManager *cameraManager_;
> -	unsigned int sensors_;
> -};
> -
> -int RKISP1PipelineTest::init()
> -{
> -	unique_ptr<DeviceEnumerator> enumerator = DeviceEnumerator::create();
> -	if (!enumerator) {
> -		cerr << "Failed to create device enumerator" << endl;
> -		return TestFail;
> -	}
> -
> -	if (enumerator->enumerate()) {
> -		cerr << "Failed to enumerate media devices" << endl;
> -		return TestFail;
> -	}
> -
> -	DeviceMatch dm("rkisp1");
> -
> -	std::shared_ptr<MediaDevice> rkisp1 = enumerator->search(dm);
> -	if (!rkisp1) {
> -		cerr << "Failed to find rkisp1: test skip" << endl;
> -		return TestSkip;
> -	}
> -
> -	int ret = rkisp1->populate();
> -	if (ret) {
> -		cerr << "Failed to populate media device "
> -		     << rkisp1->deviceNode() << endl;
> -		return TestFail;
> -	}
> -
> -	sensors_ = 0;
> -	const vector<MediaEntity *> &entities = rkisp1->entities();
> -	for (MediaEntity *entity : entities) {
> -		if (entity->function() == MEDIA_ENT_F_CAM_SENSOR)
> -			sensors_++;
> -	}
> -
> -	cameraManager_ = new CameraManager();
> -	ret = cameraManager_->start();
> -	if (ret) {
> -		cerr << "Failed to start the CameraManager" << endl;
> -		return TestFail;
> -	}
> -
> -	return 0;
> -}
> -
> -int RKISP1PipelineTest::run()
> -{
> -	auto cameras = cameraManager_->cameras();
> -	for (const std::shared_ptr<Camera> &cam : cameras)
> -		cout << "Found camera '" << cam->id() << "'" << endl;
> -
> -	if (cameras.size() != sensors_) {
> -		cerr << cameras.size() << " cameras registered, but " << sensors_
> -		     << " were expected" << endl;
> -		return TestFail;
> -	}
> -
> -	return TestPass;
> -}
> -
> -void RKISP1PipelineTest::cleanup()
> -{
> -	cameraManager_->stop();
> -	delete cameraManager_;
> -}
> -
> -TEST_REGISTER(RKISP1PipelineTest)


More information about the libcamera-devel mailing list