[{"id":17406,"web_url":"https://patchwork.libcamera.org/comment/17406/","msgid":"<YLqbwlGKu7G+AY4M@oden.dyn.berto.se>","date":"2021-06-04T21:31:46","subject":"Re: [libcamera-devel] [PATCH v5 3/5] lc-compliance: Add Environment\n\tsingleton","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Nícolas,\n\nThanks for your work.\n\nOn 2021-05-24 16:13:07 -0300, Nícolas F. R. A. Prado wrote:\n> Add a singleton Environment class in order to make the camera available\n> inside all tests. This is needed for the Googletest refactor, otherwise\n> the tests, which are statically declared, won't be able to access the\n> camera.\n> \n> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>\n> ---\n> Changes in v5:\n> - Thanks to Laurent:\n>   - Stored CameraManager and cameraId instead of Camera in Environment\n> - Thanks to Laurent & Niklas:\n>   - Improved Environment singleton class instantiation and destruction\n> \n> Added in v4\n> \n>  src/lc-compliance/environment.cpp | 20 ++++++++++++++++++++\n>  src/lc-compliance/environment.h   | 31 +++++++++++++++++++++++++++++++\n>  src/lc-compliance/meson.build     |  1 +\n>  3 files changed, 52 insertions(+)\n>  create mode 100644 src/lc-compliance/environment.cpp\n>  create mode 100644 src/lc-compliance/environment.h\n> \n> diff --git a/src/lc-compliance/environment.cpp b/src/lc-compliance/environment.cpp\n> new file mode 100644\n> index 000000000000..fbe75fcc2cfb\n> --- /dev/null\n> +++ b/src/lc-compliance/environment.cpp\n> @@ -0,0 +1,20 @@\n> +/* SPDX-License-Identifier: GPL-2.0-or-later */\n> +/*\n> + * Copyright (C) 2021, Collabora Ltd.\n> + *\n> + * environment.cpp - Common environment for tests\n> + */\n> +\n> +#include \"environment.h\"\n> +\n> +Environment *Environment::get()\n> +{\n> +\tstatic Environment instance;\n> +\treturn &instance;\n> +}\n> +\n> +void Environment::setup(std::shared_ptr<CameraManager> cm, std::string cameraId)\n> +{\n> +\tcm_ = cm;\n> +\tcameraId_ = cameraId;\n> +}\n> diff --git a/src/lc-compliance/environment.h b/src/lc-compliance/environment.h\n> new file mode 100644\n> index 000000000000..e9e55e022d97\n> --- /dev/null\n> +++ b/src/lc-compliance/environment.h\n> @@ -0,0 +1,31 @@\n> +/* SPDX-License-Identifier: GPL-2.0-or-later */\n> +/*\n> + * Copyright (C) 2021, Collabora Ltd.\n> + *\n> + * environment.h - Common environment for tests\n> + */\n> +#ifndef __LC_COMPLIANCE_ENVIRONMENT_H__\n> +#define __LC_COMPLIANCE_ENVIRONMENT_H__\n> +\n> +#include <libcamera/libcamera.h>\n> +\n> +using namespace libcamera;\n> +\n> +class Environment\n> +{\n> +public:\n> +\tstatic Environment *get();\n> +\n> +\tvoid setup(std::shared_ptr<CameraManager> cm, std::string cameraId);\n> +\n> +\tstd::string cameraId() const { return cameraId_; }\n\nnit: This could return a const reference.\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> +\tstd::shared_ptr<CameraManager> cm() const { return cm_; }\n> +\n> +private:\n> +\tEnvironment() {};\n> +\n> +\tstd::string cameraId_;\n> +\tstd::shared_ptr<CameraManager> cm_;\n> +};\n> +\n> +#endif /* __LC_COMPLIANCE_ENVIRONMENT_H__ */\n> diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build\n> index a2bfcceb1259..6dd49085569f 100644\n> --- a/src/lc-compliance/meson.build\n> +++ b/src/lc-compliance/meson.build\n> @@ -12,6 +12,7 @@ lc_compliance_enabled = true\n>  lc_compliance_sources = files([\n>      '../cam/event_loop.cpp',\n>      '../cam/options.cpp',\n> +    'environment.cpp',\n>      'main.cpp',\n>      'results.cpp',\n>      'simple_capture.cpp',\n> -- \n> 2.31.1\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 AB2CCC3206\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  4 Jun 2021 21:31:52 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E39EA68926;\n\tFri,  4 Jun 2021 23:31:51 +0200 (CEST)","from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com\n\t[IPv6:2a00:1450:4864:20::22e])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 945E968925\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  4 Jun 2021 23:31:49 +0200 (CEST)","by mail-lj1-x22e.google.com with SMTP id d2so9172111ljj.11\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 04 Jun 2021 14:31:49 -0700 (PDT)","from localhost (h-62-63-236-217.A463.priv.bahnhof.se.\n\t[62.63.236.217]) by smtp.gmail.com with ESMTPSA id\n\tu27sm710932lfo.167.2021.06.04.14.31.47\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tFri, 04 Jun 2021 14:31:47 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"DdPIviD3\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=vdk6buj6iq4zSerKq9atnA9SXt1hJZFXoq2Kd6EKaDQ=;\n\tb=DdPIviD3uDnQQQzjMdTranyG7ZwUfIWP8F817xMRPTst3N4E8pmqp69PdGFj7z2BN5\n\tfN1CCaKiDWAMqu0FTTicnp7Uc/fzX0AB97O/ey50MPY3zrMK/BlhhBOYd+MqV3RjsvOR\n\t8NeXp9oEjXZmbxxhxpRJzDPw8m0+6np9O+eJNf9x4ROTY88PXPzyrdUfTRoMVoUq43hj\n\tvE35Mxc07F14cYeVpzyHGnN5YKHdo0ZfBdoB6arHocdhrp2VJfAkcm2tiJoTX7P4FIVl\n\tLWDTJ737V311B62n42/4N6l83NV1guIDuyVwU1Iew3dhwBkx3DiCxRCjhILwtZZfSuzo\n\t3FNw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=vdk6buj6iq4zSerKq9atnA9SXt1hJZFXoq2Kd6EKaDQ=;\n\tb=hxE9bborvo7pezDCCL0o4TpRnE3fF+Ah/Z7upHws7LVd3eBGtgOEZiv0rSrSQ5tSFA\n\t7rpHeamNYvU1INg1MYUNZHTVgPrxDCGXpS5J6xbWj2NnBfHB+qR0Ux2ss9XoWlIAzdM7\n\tFc6hKlUO1CEGAhbbju0s4SBGIgZAYfT30FJWJQMnadBSlUv9xNdTTexsZ8qJWqHTsXNn\n\tEBKu5+EtlLiVyZwOX8N5UXJcF5Be0u+ec6onTT07ro2A0zVzmfGMzWbi2vLwB14p1w2L\n\tOXAjV30TBh2WScxaNYr9OqigQtuIx/VObdAusXcMHd1negJ0/Y6xcWi07H42ocPFeRiQ\n\tMDZA==","X-Gm-Message-State":"AOAM533R1Unpi4ZwSWVbg9vnyC62743Zgve3BNhrS/PM0SlDIvrybqkZ\n\t4u/4Ow/qKgOLXDdk1yFPgDSabHen6TjdwEzB","X-Google-Smtp-Source":"ABdhPJwSl66MRSHbu020MJuZ2NpzVn+Q6UW9j765QuivOITeIEl94EbJmISZmKLPBcy18LTgwqD4HA==","X-Received":"by 2002:a2e:89ce:: with SMTP id c14mr5158680ljk.91.1622842308809;\n\tFri, 04 Jun 2021 14:31:48 -0700 (PDT)","Date":"Fri, 4 Jun 2021 23:31:46 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"=?iso-8859-1?q?N=EDcolas_F=2E_R=2E_A=2E?= Prado <nfraprado@collabora.com>","Message-ID":"<YLqbwlGKu7G+AY4M@oden.dyn.berto.se>","References":"<20210524191309.90238-1-nfraprado@collabora.com>\n\t<20210524191309.90238-4-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":"<20210524191309.90238-4-nfraprado@collabora.com>","Subject":"Re: [libcamera-devel] [PATCH v5 3/5] lc-compliance: Add Environment\n\tsingleton","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,\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>"}}]