summaryrefslogtreecommitdiff
path: root/render-test/render_test.cpp
diff options
context:
space:
mode:
authorAlexander Shalamov <alexander.shalamov@mapbox.com>2019-11-21 15:52:23 +0200
committerAlexander Shalamov <alexander.shalamov@mapbox.com>2019-11-22 15:29:25 +0200
commit17a544176807538c9e7a85048b81b014e97566e9 (patch)
treed8f4c267edeb93bb4c097d778dff81921b1df3e4 /render-test/render_test.cpp
parenta02ed76d5bfcb2a4623eb3dd1256252ab2cf9281 (diff)
downloadqtlocation-mapboxgl-17a544176807538c9e7a85048b81b014e97566e9.tar.gz
[test-runner] Add render test runner options for injecting probes
This allows injection of memory, gfx and network probes before and after operations defined in render test are run.
Diffstat (limited to 'render-test/render_test.cpp')
-rw-r--r--render-test/render_test.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/render-test/render_test.cpp b/render-test/render_test.cpp
index 5753065a7e..657e507d1a 100644
--- a/render-test/render_test.cpp
+++ b/render-test/render_test.cpp
@@ -40,10 +40,14 @@ void operator delete(void* ptr, size_t) noexcept {
#endif
namespace {
-using ArgumentsTuple = std::tuple<bool, bool, uint32_t, std::string, std::vector<std::string>, std::string>;
+using ArgumentsTuple =
+ std::tuple<bool, bool, uint32_t, std::string, std::vector<std::string>, std::string, std::set<std::string>>;
ArgumentsTuple parseArguments(int argc, char** argv) {
args::ArgumentParser argumentParser("Mapbox GL Test Runner");
+ static const std::unordered_map<std::string, std::string> probeMap{
+ {"memory", "probeMemory"}, {"network", "probeNetwork"}, {"gfx", "probeGFX"}};
+
args::HelpFlag helpFlag(argumentParser, "help", "Display this help menu", {'h', "help"});
args::Flag recycleMapFlag(argumentParser, "recycle map", "Toggle reusing the map object", {'r', "recycle-map"});
@@ -53,6 +57,12 @@ ArgumentsTuple parseArguments(int argc, char** argv) {
argumentParser, "manifestPath", "Test manifest file path", {'p', "manifestPath"});
args::ValueFlag<std::string> testFilterValue(argumentParser, "filter", "Test filter regex", {'f', "filter"});
args::PositionalList<std::string> testNameValues(argumentParser, "URL", "Test name(s)");
+ args::MapFlagList<std::string, std::string> probes(
+ argumentParser,
+ "probe",
+ "Probe to be injected into a test. Supported values are: [memory, gfx, network]",
+ {"probe"},
+ probeMap);
try {
argumentParser.ParseCLI(argc, argv);
@@ -86,6 +96,9 @@ ArgumentsTuple parseArguments(int argc, char** argv) {
exit(4);
}
+ const auto& probeValues = args::get(probes);
+ std::set<std::string> injectedProbes(probeValues.begin(), probeValues.end());
+
auto testNames = testNameValues ? args::get(testNameValues) : std::vector<std::string>{};
auto testFilter = testFilterValue ? args::get(testFilterValue) : std::string{};
const auto shuffle = shuffleFlag ? args::get(shuffleFlag) : false;
@@ -95,7 +108,8 @@ ArgumentsTuple parseArguments(int argc, char** argv) {
seed,
manifestPath.string(),
std::move(testNames),
- std::move(testFilter)};
+ std::move(testFilter),
+ std::move(injectedProbes)};
}
} // namespace
namespace mbgl {
@@ -107,8 +121,10 @@ int runRenderTests(int argc, char** argv, std::function<void()> testStatus) {
std::string manifestPath;
std::vector<std::string> testNames;
std::string testFilter;
+ std::set<std::string> injectedProbes;
- std::tie(recycleMap, shuffle, seed, manifestPath, testNames, testFilter) = parseArguments(argc, argv);
+ std::tie(recycleMap, shuffle, seed, manifestPath, testNames, testFilter, injectedProbes) =
+ parseArguments(argc, argv);
auto manifestData = ManifestParser::parseManifest(manifestPath, testNames, testFilter);
if (!manifestData) {
exit(5);
@@ -159,7 +175,7 @@ int runRenderTests(int argc, char** argv, std::function<void()> testStatus) {
bool errored = !metadata.errorMessage.empty();
if (!errored) {
- errored = !runner.run(metadata) || !metadata.errorMessage.empty();
+ errored = !runner.run(metadata, injectedProbes) || !metadata.errorMessage.empty();
}
bool passed =