diff options
author | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2021-01-27 01:23:51 +0100 |
---|---|---|
committer | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2021-04-12 10:48:56 +0200 |
commit | 02bc1108578e8b8eb68fa7d9ae3eeea558723931 (patch) | |
tree | 42e99d5d3cfa45b25651e0175b44400823efdfe2 /src/lc-compliance/results.h | |
parent | 43ab65df8dd2fd6ef3336fdb1f56909661de2475 (diff) |
lc-compliance: Add a libcamera compliance tool
Add a compliance tool to ease testing of cameras. In contrast to the
unit-tests under test/ that aims to test the internal components of
libcamera the compliance tool aims to test application use-cases and to
some extent the public API.
This change adds the boilerplate code of a simple framework for the
creation of tests. The tests aim both to demonstrate the tool and to
catch real problems. The tests added are:
- Test that if one queues exactly N requests to a camera exactly N
requests are eventually completed.
- Test that a configured camera can be started and stopped multiple
times in an attempt to exercise cleanup code paths otherwise not
often tested with 'cam' for example.
Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Tested-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>
Diffstat (limited to 'src/lc-compliance/results.h')
-rw-r--r-- | src/lc-compliance/results.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/lc-compliance/results.h b/src/lc-compliance/results.h new file mode 100644 index 00000000..2a3722b8 --- /dev/null +++ b/src/lc-compliance/results.h @@ -0,0 +1,47 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2020, Google Inc. + * + * results.h - Test result aggregator + */ +#ifndef __LC_COMPLIANCE_RESULTS_H__ +#define __LC_COMPLIANCE_RESULTS_H__ + +#include <string> +#include <utility> + +/* \todo Check if result aggregator can be shared with self tests in test/ */ +class Results +{ +public: + enum Status { + Fail, + Pass, + Skip, + }; + + using Result = std::pair<Status, std::string>; + + Results(unsigned int planned) + : planned_(planned), passed_(0), failed_(0), skipped_(0) + { + } + + void add(const Result &result); + void add(Status status, const std::string &message); + void fail(const std::string &message); + void pass(const std::string &message); + void skip(const std::string &message); + + int summary() const; + +private: + void printResult(const Result &result); + + unsigned int planned_; + unsigned int passed_; + unsigned int failed_; + unsigned int skipped_; +}; + +#endif /* __LC_COMPLIANCE_RESULTS_H__ */ |