Message ID | 20210524191309.90238-4-nfraprado@collabora.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi Nícolas, Thanks for your work. On 2021-05-24 16:13:07 -0300, Nícolas F. R. A. Prado wrote: > Add a singleton Environment class in order to make the camera available > inside all tests. This is needed for the Googletest refactor, otherwise > the tests, which are statically declared, won't be able to access the > camera. > > Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com> > --- > Changes in v5: > - Thanks to Laurent: > - Stored CameraManager and cameraId instead of Camera in Environment > - Thanks to Laurent & Niklas: > - Improved Environment singleton class instantiation and destruction > > Added in v4 > > src/lc-compliance/environment.cpp | 20 ++++++++++++++++++++ > src/lc-compliance/environment.h | 31 +++++++++++++++++++++++++++++++ > src/lc-compliance/meson.build | 1 + > 3 files changed, 52 insertions(+) > create mode 100644 src/lc-compliance/environment.cpp > create mode 100644 src/lc-compliance/environment.h > > diff --git a/src/lc-compliance/environment.cpp b/src/lc-compliance/environment.cpp > new file mode 100644 > index 000000000000..fbe75fcc2cfb > --- /dev/null > +++ b/src/lc-compliance/environment.cpp > @@ -0,0 +1,20 @@ > +/* SPDX-License-Identifier: GPL-2.0-or-later */ > +/* > + * Copyright (C) 2021, Collabora Ltd. > + * > + * environment.cpp - Common environment for tests > + */ > + > +#include "environment.h" > + > +Environment *Environment::get() > +{ > + static Environment instance; > + return &instance; > +} > + > +void Environment::setup(std::shared_ptr<CameraManager> cm, std::string cameraId) > +{ > + cm_ = cm; > + cameraId_ = cameraId; > +} > diff --git a/src/lc-compliance/environment.h b/src/lc-compliance/environment.h > new file mode 100644 > index 000000000000..e9e55e022d97 > --- /dev/null > +++ b/src/lc-compliance/environment.h > @@ -0,0 +1,31 @@ > +/* SPDX-License-Identifier: GPL-2.0-or-later */ > +/* > + * Copyright (C) 2021, Collabora Ltd. > + * > + * environment.h - Common environment for tests > + */ > +#ifndef __LC_COMPLIANCE_ENVIRONMENT_H__ > +#define __LC_COMPLIANCE_ENVIRONMENT_H__ > + > +#include <libcamera/libcamera.h> > + > +using namespace libcamera; > + > +class Environment > +{ > +public: > + static Environment *get(); > + > + void setup(std::shared_ptr<CameraManager> cm, std::string cameraId); > + > + std::string cameraId() const { return cameraId_; } nit: This could return a const reference. Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> > + std::shared_ptr<CameraManager> cm() const { return cm_; } > + > +private: > + Environment() {}; > + > + std::string cameraId_; > + std::shared_ptr<CameraManager> cm_; > +}; > + > +#endif /* __LC_COMPLIANCE_ENVIRONMENT_H__ */ > diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build > index a2bfcceb1259..6dd49085569f 100644 > --- a/src/lc-compliance/meson.build > +++ b/src/lc-compliance/meson.build > @@ -12,6 +12,7 @@ lc_compliance_enabled = true > lc_compliance_sources = files([ > '../cam/event_loop.cpp', > '../cam/options.cpp', > + 'environment.cpp', > 'main.cpp', > 'results.cpp', > 'simple_capture.cpp', > -- > 2.31.1 >
diff --git a/src/lc-compliance/environment.cpp b/src/lc-compliance/environment.cpp new file mode 100644 index 000000000000..fbe75fcc2cfb --- /dev/null +++ b/src/lc-compliance/environment.cpp @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2021, Collabora Ltd. + * + * environment.cpp - Common environment for tests + */ + +#include "environment.h" + +Environment *Environment::get() +{ + static Environment instance; + return &instance; +} + +void Environment::setup(std::shared_ptr<CameraManager> cm, std::string cameraId) +{ + cm_ = cm; + cameraId_ = cameraId; +} diff --git a/src/lc-compliance/environment.h b/src/lc-compliance/environment.h new file mode 100644 index 000000000000..e9e55e022d97 --- /dev/null +++ b/src/lc-compliance/environment.h @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2021, Collabora Ltd. + * + * environment.h - Common environment for tests + */ +#ifndef __LC_COMPLIANCE_ENVIRONMENT_H__ +#define __LC_COMPLIANCE_ENVIRONMENT_H__ + +#include <libcamera/libcamera.h> + +using namespace libcamera; + +class Environment +{ +public: + static Environment *get(); + + void setup(std::shared_ptr<CameraManager> cm, std::string cameraId); + + std::string cameraId() const { return cameraId_; } + std::shared_ptr<CameraManager> cm() const { return cm_; } + +private: + Environment() {}; + + std::string cameraId_; + std::shared_ptr<CameraManager> cm_; +}; + +#endif /* __LC_COMPLIANCE_ENVIRONMENT_H__ */ diff --git a/src/lc-compliance/meson.build b/src/lc-compliance/meson.build index a2bfcceb1259..6dd49085569f 100644 --- a/src/lc-compliance/meson.build +++ b/src/lc-compliance/meson.build @@ -12,6 +12,7 @@ lc_compliance_enabled = true lc_compliance_sources = files([ '../cam/event_loop.cpp', '../cam/options.cpp', + 'environment.cpp', 'main.cpp', 'results.cpp', 'simple_capture.cpp',
Add a singleton Environment class in order to make the camera available inside all tests. This is needed for the Googletest refactor, otherwise the tests, which are statically declared, won't be able to access the camera. Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com> --- Changes in v5: - Thanks to Laurent: - Stored CameraManager and cameraId instead of Camera in Environment - Thanks to Laurent & Niklas: - Improved Environment singleton class instantiation and destruction Added in v4 src/lc-compliance/environment.cpp | 20 ++++++++++++++++++++ src/lc-compliance/environment.h | 31 +++++++++++++++++++++++++++++++ src/lc-compliance/meson.build | 1 + 3 files changed, 52 insertions(+) create mode 100644 src/lc-compliance/environment.cpp create mode 100644 src/lc-compliance/environment.h