From af8092a86fc5465de3fe0bb2c9e1c24f3fec5965 Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Fri, 3 Jan 2020 14:31:49 +0200 Subject: [render-test] Use image from the cache for addImage operation Instead of trying to read it from the filesystem. --- render-test/metadata.hpp | 7 ++++--- render-test/parser.cpp | 22 ++++++++++++++++++---- render-test/runner.cpp | 15 ++++++++++++--- render-test/runner.hpp | 4 +++- 4 files changed, 37 insertions(+), 11 deletions(-) (limited to 'render-test') diff --git a/render-test/metadata.hpp b/render-test/metadata.hpp index 6b8e080471..e64e07ffc3 100644 --- a/render-test/metadata.hpp +++ b/render-test/metadata.hpp @@ -1,12 +1,12 @@ #pragma once +#include +#include +#include #include #include #include -#include -#include - #include "filesystem.hpp" #include @@ -185,6 +185,7 @@ class TestContext { public: virtual mbgl::HeadlessFrontend& getFrontend() = 0; virtual mbgl::Map& getMap() = 0; + virtual mbgl::FileSource& getFileSource() = 0; virtual TestRunnerMapObserver& getObserver() = 0; virtual TestMetadata& getMetadata() = 0; diff --git a/render-test/parser.cpp b/render-test/parser.cpp index c5fca18d64..484428976e 100644 --- a/render-test/parser.cpp +++ b/render-test/parser.cpp @@ -688,12 +688,26 @@ TestOperations parseTestOperations(TestMetadata& metadata) { imageName.erase(std::remove(imageName.begin(), imageName.end(), '"'), imageName.end()); std::string imagePath = operationArray[2].GetString(); - imagePath.erase(std::remove(imagePath.begin(), imagePath.end(), '"'), imagePath.end()); - result.emplace_back([imagePath, imageName, sdf, pixelRatio](TestContext& ctx) { - mbgl::optional maybeImage = mbgl::util::readFile(imagePath); + result.emplace_back([imageName, imagePath, sdf, pixelRatio](TestContext& ctx) { + mbgl::optional maybeImage; + bool requestCompleted = false; + + auto req = ctx.getFileSource().request(mbgl::Resource::image("mapbox://render-tests/" + imagePath), + [&](mbgl::Response response) { + if (response.data) { + maybeImage = *response.data; + } + + requestCompleted = true; + }); + + while (!requestCompleted) { + mbgl::util::RunLoop::Get()->runOnce(); + } + if (!maybeImage) { - ctx.getMetadata().errorMessage = std::string("Failed to load expected image ") + imagePath; + ctx.getMetadata().errorMessage += std::string("Failed to load expected image ") + imagePath; return false; } diff --git a/render-test/runner.cpp b/render-test/runner.cpp index eaf1934125..0492868051 100644 --- a/render-test/runner.cpp +++ b/render-test/runner.cpp @@ -651,9 +651,10 @@ uint32_t getImageTileOffset(const std::set& dims, uint32_t dim) { } // namespace -TestRunner::Impl::Impl(const TestMetadata& metadata, const Manifest& manifest) +TestRunner::Impl::Impl(const TestMetadata& metadata, const mbgl::ResourceOptions& resourceOptions) : observer(std::make_unique()), frontend(metadata.size, metadata.pixelRatio, swapBehavior(metadata.mapMode)), + fileSource(mbgl::FileSource::getSharedFileSource(resourceOptions)), map(frontend, *observer.get(), mbgl::MapOptions() @@ -661,7 +662,7 @@ TestRunner::Impl::Impl(const TestMetadata& metadata, const Manifest& manifest) .withSize(metadata.size) .withPixelRatio(metadata.pixelRatio) .withCrossSourceCollisions(metadata.crossSourceCollisions), - mbgl::ResourceOptions().withCachePath(manifest.getCachePath()).withAccessToken(manifest.getAccessToken())) {} + resourceOptions) {} TestRunner::Impl::~Impl() {} @@ -680,6 +681,12 @@ void TestRunner::run(TestMetadata& metadata) { assert(runnerImpl); return runnerImpl->map; } + + FileSource& getFileSource() override { + assert(runnerImpl); + return *runnerImpl->fileSource; + } + TestRunnerMapObserver& getObserver() override { assert(runnerImpl); return *runnerImpl->observer; @@ -703,7 +710,9 @@ void TestRunner::run(TestMetadata& metadata) { mbgl::util::toString(uint32_t(metadata.crossSourceCollisions)); if (maps.find(key) == maps.end()) { - maps[key] = std::make_unique(metadata, manifest); + maps[key] = std::make_unique( + metadata, + mbgl::ResourceOptions().withCachePath(manifest.getCachePath()).withAccessToken(manifest.getAccessToken())); } ctx.runnerImpl = maps[key].get(); diff --git a/render-test/runner.hpp b/render-test/runner.hpp index 75e552ead7..e6027e335c 100644 --- a/render-test/runner.hpp +++ b/render-test/runner.hpp @@ -2,6 +2,7 @@ #include #include +#include #include "manifest_parser.hpp" @@ -54,11 +55,12 @@ private: void checkProbingResults(TestMetadata&); struct Impl { - Impl(const TestMetadata&, const Manifest&); + Impl(const TestMetadata&, const mbgl::ResourceOptions&); ~Impl(); std::unique_ptr observer; mbgl::HeadlessFrontend frontend; + std::shared_ptr fileSource; mbgl::Map map; }; std::unordered_map> maps; -- cgit v1.2.1