[{"id":25954,"web_url":"https://patchwork.libcamera.org/comment/25954/","msgid":"<Y4iQTKKzEA5qi7x2@pyrite.rasen.tech>","date":"2022-12-01T11:30:20","subject":"Re: [libcamera-devel] [PATCH v8 13/17] lc-compliance: Move camera\n\tsetup to CameraHolder class","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/people/17/","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"content":"On Tue, Aug 24, 2021 at 04:56:32PM -0300, Nícolas F. R. A. Prado wrote:\n> Different base classes can be used for different setups on tests, but\n> all of them will need to setup the camera for the test. To reuse that\n> code, move it to a separate CameraHolder class that is inherited by test\n> classes.\n> \n> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n\n> \n> ---\n> \n> Changes in v8:\n> - Moved CameraHolder to new test_base.{cpp,h} files\n> \n> Changes in v5:\n> - New\n> \n>  src/lc-compliance/capture_test.cpp | 18 ++++--------------\n>  src/lc-compliance/meson.build      |  1 +\n>  src/lc-compliance/test_base.cpp    | 28 ++++++++++++++++++++++++++++\n>  src/lc-compliance/test_base.h      | 24 ++++++++++++++++++++++++\n>  4 files changed, 57 insertions(+), 14 deletions(-)\n>  create mode 100644 src/lc-compliance/test_base.cpp\n>  create mode 100644 src/lc-compliance/test_base.h\n> \n> diff --git a/src/lc-compliance/capture_test.cpp b/src/lc-compliance/capture_test.cpp\n> index 6439cbd88f8e..49012048729e 100644\n> --- a/src/lc-compliance/capture_test.cpp\n> +++ b/src/lc-compliance/capture_test.cpp\n> @@ -10,15 +10,15 @@\n>  \n>  #include <gtest/gtest.h>\n>  \n> -#include \"environment.h\"\n>  #include \"simple_capture.h\"\n> +#include \"test_base.h\"\n>  \n>  using namespace libcamera;\n>  \n>  const std::vector<int> NUMREQUESTS = { 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 };\n>  const std::vector<StreamRole> ROLES = { Raw, StillCapture, VideoRecording, Viewfinder };\n>  \n> -class SingleStream : public testing::TestWithParam<std::tuple<StreamRole, int>>\n> +class SingleStream : public testing::TestWithParam<std::tuple<StreamRole, int>>, public CameraHolder\n>  {\n>  public:\n>  \tstatic std::string nameParameters(const testing::TestParamInfo<SingleStream::ParamType> &info);\n> @@ -26,8 +26,6 @@ public:\n>  protected:\n>  \tvoid SetUp() override;\n>  \tvoid TearDown() override;\n> -\n> -\tstd::shared_ptr<Camera> camera_;\n>  };\n>  \n>  /*\n> @@ -36,20 +34,12 @@ protected:\n>   */\n>  void SingleStream::SetUp()\n>  {\n> -\tEnvironment *env = Environment::get();\n> -\n> -\tcamera_ = env->cm()->get(env->cameraId());\n> -\n> -\tASSERT_EQ(camera_->acquire(), 0);\n> +\tacquireCamera();\n>  }\n>  \n>  void SingleStream::TearDown()\n>  {\n> -\tif (!camera_)\n> -\t\treturn;\n> -\n> -\tcamera_->release();\n> -\tcamera_.reset();\n> +\treleaseCamera();\n>  }\n>  \n>  std::string SingleStream::nameParameters(const testing::TestParamInfo<SingleStream::ParamType> &info)\n> diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build\n> index 4be14b694426..db593a6ec201 100644\n> --- a/src/lc-compliance/meson.build\n> +++ b/src/lc-compliance/meson.build\n> @@ -17,6 +17,7 @@ lc_compliance_sources = files([\n>      'environment.cpp',\n>      'main.cpp',\n>      'simple_capture.cpp',\n> +    'test_base.cpp',\n>  ])\n>  \n>  lc_compliance  = executable('lc-compliance', lc_compliance_sources,\n> diff --git a/src/lc-compliance/test_base.cpp b/src/lc-compliance/test_base.cpp\n> new file mode 100644\n> index 000000000000..c9957b9efd36\n> --- /dev/null\n> +++ b/src/lc-compliance/test_base.cpp\n> @@ -0,0 +1,28 @@\n> +/* SPDX-License-Identifier: GPL-2.0-or-later */\n> +/*\n> + * Copyright (C) 2021, Collabora Ltd.\n> + *\n> + * test_base.cpp - Base definitions for tests\n> + */\n> +\n> +#include \"test_base.h\"\n> +\n> +#include \"environment.h\"\n> +\n> +void CameraHolder::acquireCamera()\n> +{\n> +\tEnvironment *env = Environment::get();\n> +\n> +\tcamera_ = env->cm()->get(env->cameraId());\n> +\n> +\tASSERT_EQ(camera_->acquire(), 0);\n> +}\n> +\n> +void CameraHolder::releaseCamera()\n> +{\n> +\tif (!camera_)\n> +\t\treturn;\n> +\n> +\tcamera_->release();\n> +\tcamera_.reset();\n> +}\n> diff --git a/src/lc-compliance/test_base.h b/src/lc-compliance/test_base.h\n> new file mode 100644\n> index 000000000000..52347749ab10\n> --- /dev/null\n> +++ b/src/lc-compliance/test_base.h\n> @@ -0,0 +1,24 @@\n> +/* SPDX-License-Identifier: GPL-2.0-or-later */\n> +/*\n> + * Copyright (C) 2021, Collabora Ltd.\n> + *\n> + * test_base.h - Base definitions for tests\n> + */\n> +\n> +#ifndef __LC_COMPLIANCE_TEST_BASE_H__\n> +#define __LC_COMPLIANCE_TEST_BASE_H__\n> +\n> +#include <libcamera/libcamera.h>\n> +\n> +#include <gtest/gtest.h>\n> +\n> +class CameraHolder\n> +{\n> +protected:\n> +\tvoid acquireCamera();\n> +\tvoid releaseCamera();\n> +\n> +\tstd::shared_ptr<libcamera::Camera> camera_;\n> +};\n> +\n> +#endif /* __LC_COMPLIANCE_TEST_BASE_H__ */\n> -- \n> 2.33.0\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id D4287BE08B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  1 Dec 2022 11:30:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 835466333F;\n\tThu,  1 Dec 2022 12:30:28 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0BC2263335\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  1 Dec 2022 12:30:27 +0100 (CET)","from pyrite.rasen.tech (h175-177-042-159.catv02.itscom.jp\n\t[175.177.42.159])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 5927E33F;\n\tThu,  1 Dec 2022 12:30:25 +0100 (CET)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1669894228;\n\tbh=q3QII64fAEb2MRozr2FXZZ6grzN4PL8OnS1pH5mz/BM=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=vuTRLPboaKpLuudBH8XZkF6X3OMiTQ/3PjK93f2Fe6dgX+1VwVgNxZilUE2f1AMZR\n\tPDxvTCmBRqWH7qH++QwlCHftJ35Rbjno4DuPOnmasBF9lThEVVXUXuAQ3q9ul06418\n\tgrMo/M0i+WhhVIhbSqHRjJIWwpqRelDzKFkNtEiuP/aMFsu0SE4Pv77Qct08MmC6on\n\tvR/zhDD4ZEO/Nks+iVvQ9G9l9Zf/Px02Iemt8HQ/kbbaeSqN2jx92KHpwoAfu0CY4U\n\t09B0wu8cvKe1lCSRsqfj9vpddVjMFxkyDP4mF3cY90R12qx+PrVpoGXfzsv4gjErkr\n\tZqNmIjy7oKa8A==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1669894226;\n\tbh=q3QII64fAEb2MRozr2FXZZ6grzN4PL8OnS1pH5mz/BM=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=kUpIrff+cZYOaVVRQcI8eY3E0dSYhL1JMoC+QavxFvn/JjYGVLjPFshYEBuSUxhHn\n\tbbBaj7CoZhvfpn3rVL5P/VJwNoLBIoR/0NtQi4kDeZkjpU3lpFlxIneOL839ywIOsV\n\t4UX5WjXAfXWLiVxfsRSDbt1CHuk93pTpVU9CL0M8="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"kUpIrff+\"; dkim-atps=neutral","Date":"Thu, 1 Dec 2022 20:30:20 +0900","To":"=?iso-8859-1?q?N=EDcolas_F=2E_R=2E_A=2E?= Prado <nfraprado@collabora.com>","Message-ID":"<Y4iQTKKzEA5qi7x2@pyrite.rasen.tech>","References":"<20210824195636.1110845-1-nfraprado@collabora.com>\n\t<20210824195636.1110845-14-nfraprado@collabora.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20210824195636.1110845-14-nfraprado@collabora.com>","Subject":"Re: [libcamera-devel] [PATCH v8 13/17] lc-compliance: Move camera\n\tsetup to CameraHolder class","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Paul Elder via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Paul Elder <paul.elder@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org, kernel@collabora.com,\n\t=?iso-8859-1?q?Andr=E9?= Almeida <andrealmeid@collabora.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]