diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-11-21 15:52:23 +0200 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2019-11-22 15:29:25 +0200 |
commit | 17a544176807538c9e7a85048b81b014e97566e9 (patch) | |
tree | d8f4c267edeb93bb4c097d778dff81921b1df3e4 /render-test/render_test.cpp | |
parent | a02ed76d5bfcb2a4623eb3dd1256252ab2cf9281 (diff) | |
download | qtlocation-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.cpp | 24 |
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 = |