[{"id":18467,"web_url":"https://patchwork.libcamera.org/comment/18467/","msgid":"<YQc4/lxPMk6PV0KL@pendragon.ideasonboard.com>","date":"2021-08-02T00:14:54","subject":"Re: [libcamera-devel] [PATCH v7 05/11] lc-compliance: Move camera\n\tsetup to CameraHolder class","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Nícolas,\n\nThank you for the patch.\n\nOn Thu, Jul 22, 2021 at 08:28:45PM -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\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n> \n> No changes in v7\n> \n> No changes in v6\n> \n> Added in v5\n> \n>  src/lc-compliance/capture_test.cpp | 41 +++++++++++++++++++++---------\n>  1 file changed, 29 insertions(+), 12 deletions(-)\n> \n> diff --git a/src/lc-compliance/capture_test.cpp b/src/lc-compliance/capture_test.cpp\n> index 6439cbd88f8e..949407d3191e 100644\n> --- a/src/lc-compliance/capture_test.cpp\n> +++ b/src/lc-compliance/capture_test.cpp\n> @@ -18,23 +18,16 @@ using namespace libcamera;\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 CameraHolder\n>  {\n> -public:\n> -\tstatic std::string nameParameters(const testing::TestParamInfo<SingleStream::ParamType> &info);\n> -\n>  protected:\n> -\tvoid SetUp() override;\n> -\tvoid TearDown() override;\n> +\tvoid acquireCamera();\n> +\tvoid releaseCamera();\n>  \n>  \tstd::shared_ptr<Camera> camera_;\n>  };\n>  \n> -/*\n> - * We use gtest's SetUp() and TearDown() instead of constructor and destructor\n> - * in order to be able to assert on them.\n> - */\n> -void SingleStream::SetUp()\n> +void CameraHolder::acquireCamera()\n>  {\n>  \tEnvironment *env = Environment::get();\n>  \n> @@ -43,7 +36,7 @@ void SingleStream::SetUp()\n>  \tASSERT_EQ(camera_->acquire(), 0);\n>  }\n>  \n> -void SingleStream::TearDown()\n> +void CameraHolder::releaseCamera()\n>  {\n>  \tif (!camera_)\n>  \t\treturn;\n> @@ -52,6 +45,30 @@ void SingleStream::TearDown()\n>  \tcamera_.reset();\n>  }\n>  \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> +\n> +protected:\n> +\tvoid SetUp() override;\n> +\tvoid TearDown() override;\n> +};\n> +\n> +/*\n> + * We use gtest's SetUp() and TearDown() instead of constructor and destructor\n> + * in order to be able to assert on them.\n> + */\n> +void SingleStream::SetUp()\n> +{\n> +\tacquireCamera();\n> +}\n> +\n> +void SingleStream::TearDown()\n> +{\n> +\treleaseCamera();\n> +}\n> +\n>  std::string SingleStream::nameParameters(const testing::TestParamInfo<SingleStream::ParamType> &info)\n>  {\n>  \tstd::map<StreamRole, std::string> rolesMap = { { Raw, \"Raw\" },","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 C65DDC3232\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  2 Aug 2021 00:15:05 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 83DB4687C3;\n\tMon,  2 Aug 2021 02:15:05 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6E374687B6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  2 Aug 2021 02:15:04 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0F8A387C;\n\tMon,  2 Aug 2021 02:15:04 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"TyO72Cbp\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1627863304;\n\tbh=inE0Xu3im5qnaW/MDkdAE+qCAyrhAes1L/9U/Brho8M=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=TyO72CbpbPm45xqg4bdfXtMfY2+Dg+WEhDDrcn71Xo89NOrqgAr9nUfKcNAXns3hF\n\tNHhqVd9N+kLsbTujr2clxuNPPCjaMP9CSs5WmcmYSjB710kYsAyLRuK4Ii6aujO6+R\n\tkJm4uIfMxG9l7dujBdtEbuQfHPW7PlMdjL/lX3B0=","Date":"Mon, 2 Aug 2021 03:14:54 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"=?utf-8?b?TsOtY29sYXMgRi4gUi4gQS4=?= Prado <nfraprado@collabora.com>","Message-ID":"<YQc4/lxPMk6PV0KL@pendragon.ideasonboard.com>","References":"<20210722232851.747614-1-nfraprado@collabora.com>\n\t<20210722232851.747614-6-nfraprado@collabora.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20210722232851.747614-6-nfraprado@collabora.com>","Subject":"Re: [libcamera-devel] [PATCH v7 05/11] 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>","Cc":"libcamera-devel@lists.libcamera.org, kernel@collabora.com, =?utf-8?q?A?=\n\t=?utf-8?b?bmRyw6k=?= Almeida <andrealmeid@collabora.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]