diff options
Diffstat (limited to 'test/buildtool/execution_engine/executor')
5 files changed, 162 insertions, 53 deletions
diff --git a/test/buildtool/execution_engine/executor/TARGETS b/test/buildtool/execution_engine/executor/TARGETS index 991cecc3..896b7803 100644 --- a/test/buildtool/execution_engine/executor/TARGETS +++ b/test/buildtool/execution_engine/executor/TARGETS @@ -10,10 +10,12 @@ , "srcs": ["executor.test.cpp"] , "private-deps": [ ["@", "src", "src/buildtool/common", "artifact_factory"] + , ["@", "src", "src/buildtool/common", "common"] , ["@", "src", "src/buildtool/common", "config"] , ["@", "src", "src/buildtool/execution_api/common", "common"] , ["@", "src", "src/buildtool/execution_engine/dag", "dag"] , ["@", "src", "src/buildtool/execution_engine/executor", "executor"] + , ["@", "src", "src/buildtool/progress_reporting", "progress"] , ["", "catch-main"] , ["@", "catch2", "", "catch2"] ] @@ -27,11 +29,13 @@ , "private-deps": [ "executor_api_tests" , ["@", "src", "src/buildtool/common", "artifact_factory"] + , ["@", "src", "src/buildtool/common", "common"] , ["@", "src", "src/buildtool/common", "config"] , ["@", "src", "src/buildtool/execution_api/local", "local"] , ["@", "src", "src/buildtool/execution_api/remote", "config"] , ["@", "src", "src/buildtool/execution_engine/dag", "dag"] , ["@", "src", "src/buildtool/execution_engine/executor", "executor"] + , ["@", "src", "src/buildtool/progress_reporting", "progress"] , ["utils", "catch-main-remote-execution"] , ["utils", "local_hermeticity"] , ["@", "catch2", "", "catch2"] @@ -46,10 +50,12 @@ , "private-deps": [ "executor_api_tests" , ["@", "src", "src/buildtool/common", "artifact_factory"] + , ["@", "src", "src/buildtool/common", "common"] , ["@", "src", "src/buildtool/common", "config"] , ["@", "src", "src/buildtool/execution_api/remote", "bazel"] , ["@", "src", "src/buildtool/execution_api/remote", "config"] , ["@", "src", "src/buildtool/execution_engine/executor", "executor"] + , ["@", "src", "src/buildtool/progress_reporting", "progress"] , ["utils", "catch-main-remote-execution"] , ["@", "catch2", "", "catch2"] ] diff --git a/test/buildtool/execution_engine/executor/executor.test.cpp b/test/buildtool/execution_engine/executor/executor.test.cpp index 0b4561e0..72bd23bb 100644 --- a/test/buildtool/execution_engine/executor/executor.test.cpp +++ b/test/buildtool/execution_engine/executor/executor.test.cpp @@ -19,9 +19,11 @@ #include "catch2/catch_test_macros.hpp" #include "src/buildtool/common/artifact_factory.hpp" #include "src/buildtool/common/repository_config.hpp" +#include "src/buildtool/common/statistics.hpp" #include "src/buildtool/execution_api/common/execution_api.hpp" #include "src/buildtool/execution_engine/executor/executor.hpp" #include "src/buildtool/file_system/file_system_manager.hpp" +#include "src/buildtool/progress_reporting/progress.hpp" /// \brief Mockup API test config. struct TestApiConfig { @@ -267,7 +269,10 @@ TEST_CASE("Executor: Process artifact", "[executor]") { SECTION("Processing succeeds for valid config") { auto api = TestApi::Ptr{new TestApi{config}}; - Executor runner{&repo_config, api.get(), api.get(), {}, {}}; + Statistics stats{}; + Progress progress{}; + Executor runner{ + &repo_config, api.get(), api.get(), {}, {}, &stats, &progress}; CHECK(runner.Process(g.ArtifactNodeWithId(local_cpp_id))); CHECK(runner.Process(g.ArtifactNodeWithId(known_cpp_id))); @@ -277,7 +282,10 @@ TEST_CASE("Executor: Process artifact", "[executor]") { config.artifacts["local.cpp"].uploads = false; auto api = TestApi::Ptr{new TestApi{config}}; - Executor runner{&repo_config, api.get(), api.get(), {}, {}}; + Statistics stats{}; + Progress progress{}; + Executor runner{ + &repo_config, api.get(), api.get(), {}, {}, &stats, &progress}; CHECK(not runner.Process(g.ArtifactNodeWithId(local_cpp_id))); CHECK(runner.Process(g.ArtifactNodeWithId(known_cpp_id))); @@ -287,7 +295,10 @@ TEST_CASE("Executor: Process artifact", "[executor]") { config.artifacts["known.cpp"].available = false; auto api = TestApi::Ptr{new TestApi{config}}; - Executor runner{&repo_config, api.get(), api.get(), {}, {}}; + Statistics stats{}; + Progress progress{}; + Executor runner{ + &repo_config, api.get(), api.get(), {}, {}, &stats, &progress}; CHECK(runner.Process(g.ArtifactNodeWithId(local_cpp_id))); CHECK(not runner.Process(g.ArtifactNodeWithId(known_cpp_id))); @@ -320,7 +331,10 @@ TEST_CASE("Executor: Process action", "[executor]") { SECTION("Processing succeeds for valid config") { auto api = TestApi::Ptr{new TestApi{config}}; - Executor runner{&repo_config, api.get(), api.get(), {}, {}}; + Statistics stats{}; + Progress progress{}; + Executor runner{ + &repo_config, api.get(), api.get(), {}, {}, &stats, &progress}; CHECK(runner.Process(g.ArtifactNodeWithId(local_cpp_id))); CHECK(runner.Process(g.ArtifactNodeWithId(known_cpp_id))); @@ -333,7 +347,10 @@ TEST_CASE("Executor: Process action", "[executor]") { config.response.cached = false; auto api = TestApi::Ptr{new TestApi{config}}; - Executor runner{&repo_config, api.get(), api.get(), {}, {}}; + Statistics stats{}; + Progress progress{}; + Executor runner{ + &repo_config, api.get(), api.get(), {}, {}, &stats, &progress}; CHECK(runner.Process(g.ArtifactNodeWithId(local_cpp_id))); CHECK(runner.Process(g.ArtifactNodeWithId(known_cpp_id))); @@ -346,7 +363,10 @@ TEST_CASE("Executor: Process action", "[executor]") { config.artifacts["output2.exe"].available = false; auto api = TestApi::Ptr{new TestApi{config}}; - Executor runner{&repo_config, api.get(), api.get(), {}, {}}; + Statistics stats{}; + Progress progress{}; + Executor runner{ + &repo_config, api.get(), api.get(), {}, {}, &stats, &progress}; CHECK(runner.Process(g.ArtifactNodeWithId(local_cpp_id))); CHECK(runner.Process(g.ArtifactNodeWithId(known_cpp_id))); @@ -362,7 +382,10 @@ TEST_CASE("Executor: Process action", "[executor]") { config.execution.failed = true; auto api = TestApi::Ptr{new TestApi{config}}; - Executor runner{&repo_config, api.get(), api.get(), {}, {}}; + Statistics stats{}; + Progress progress{}; + Executor runner{ + &repo_config, api.get(), api.get(), {}, {}, &stats, &progress}; CHECK(runner.Process(g.ArtifactNodeWithId(local_cpp_id))); CHECK(runner.Process(g.ArtifactNodeWithId(known_cpp_id))); @@ -375,7 +398,10 @@ TEST_CASE("Executor: Process action", "[executor]") { config.response.exit_code = 1; auto api = TestApi::Ptr{new TestApi{config}}; - Executor runner{&repo_config, api.get(), api.get(), {}, {}}; + Statistics stats{}; + Progress progress{}; + Executor runner{ + &repo_config, api.get(), api.get(), {}, {}, &stats, &progress}; CHECK(runner.Process(g.ArtifactNodeWithId(local_cpp_id))); CHECK(runner.Process(g.ArtifactNodeWithId(known_cpp_id))); @@ -391,7 +417,10 @@ TEST_CASE("Executor: Process action", "[executor]") { config.execution.outputs = {"output1.exe" /*, "output2.exe"*/}; auto api = TestApi::Ptr{new TestApi{config}}; - Executor runner{&repo_config, api.get(), api.get(), {}, {}}; + Statistics stats{}; + Progress progress{}; + Executor runner{ + &repo_config, api.get(), api.get(), {}, {}, &stats, &progress}; CHECK(runner.Process(g.ArtifactNodeWithId(local_cpp_id))); CHECK(runner.Process(g.ArtifactNodeWithId(known_cpp_id))); diff --git a/test/buildtool/execution_engine/executor/executor_api.test.hpp b/test/buildtool/execution_engine/executor/executor_api.test.hpp index b851c5b8..634cc38f 100644 --- a/test/buildtool/execution_engine/executor/executor_api.test.hpp +++ b/test/buildtool/execution_engine/executor/executor_api.test.hpp @@ -18,15 +18,18 @@ #include <functional> #include "catch2/catch_test_macros.hpp" +#include "gsl/gsl" #include "src/buildtool/common/artifact.hpp" #include "src/buildtool/common/artifact_description.hpp" #include "src/buildtool/common/artifact_factory.hpp" #include "src/buildtool/common/repository_config.hpp" +#include "src/buildtool/common/statistics.hpp" #include "src/buildtool/execution_api/common/execution_api.hpp" #include "src/buildtool/execution_api/remote/config.hpp" #include "src/buildtool/execution_engine/dag/dag.hpp" #include "src/buildtool/execution_engine/executor/executor.hpp" #include "src/buildtool/file_system/file_system_manager.hpp" +#include "src/buildtool/progress_reporting/progress.hpp" #include "test/utils/test_env.hpp" using ApiFactory = std::function<IExecutionApi::Ptr()>; @@ -80,11 +83,14 @@ template <class Executor> return tree_artifact->Content().Info(); } -static inline void RunHelloWorldCompilation(RepositoryConfig* repo_config, - ApiFactory const& factory, - bool is_hermetic = true, - int expected_queued = 0, - int expected_cached = 0) { +static inline void RunHelloWorldCompilation( + RepositoryConfig* repo_config, + gsl::not_null<Statistics*> const& stats, + gsl::not_null<Progress*> const& progress, + ApiFactory const& factory, + bool is_hermetic = true, + int expected_queued = 0, + int expected_cached = 0) { using path = std::filesystem::path; SetupConfig(repo_config); auto const main_cpp_desc = @@ -119,7 +125,9 @@ static inline void RunHelloWorldCompilation(RepositoryConfig* repo_config, api.get(), api.get(), RemoteExecutionConfig::PlatformProperties(), - RemoteExecutionConfig::DispatchList()}; + RemoteExecutionConfig::DispatchList(), + stats, + progress}; // upload local artifacts auto const* main_cpp_node = g.ArtifactNodeWithId(main_cpp_id); @@ -129,8 +137,8 @@ static inline void RunHelloWorldCompilation(RepositoryConfig* repo_config, // process action CHECK(runner.Process(g.ArtifactNodeWithId(exec_id)->BuilderActionNode())); if (is_hermetic) { - CHECK(Statistics::Instance().ActionsQueuedCounter() == expected_queued); - CHECK(Statistics::Instance().ActionsCachedCounter() == expected_cached); + CHECK(stats->ActionsQueuedCounter() == expected_queued); + CHECK(stats->ActionsCachedCounter() == expected_cached); } auto tmpdir = GetTestDir(); @@ -147,12 +155,15 @@ static inline void RunHelloWorldCompilation(RepositoryConfig* repo_config, } } -static inline void RunGreeterCompilation(RepositoryConfig* repo_config, - ApiFactory const& factory, - std::string const& greetcpp, - bool is_hermetic = true, - int expected_queued = 0, - int expected_cached = 0) { +static inline void RunGreeterCompilation( + RepositoryConfig* repo_config, + gsl::not_null<Statistics*> const& stats, + gsl::not_null<Progress*> const& progress, + ApiFactory const& factory, + std::string const& greetcpp, + bool is_hermetic = true, + int expected_queued = 0, + int expected_cached = 0) { using path = std::filesystem::path; SetupConfig(repo_config); auto const greet_hpp_desc = @@ -234,7 +245,9 @@ static inline void RunGreeterCompilation(RepositoryConfig* repo_config, api.get(), api.get(), RemoteExecutionConfig::PlatformProperties(), - RemoteExecutionConfig::DispatchList()}; + RemoteExecutionConfig::DispatchList(), + stats, + progress}; // upload local artifacts for (auto const& id : {greet_hpp_id, greet_cpp_id, main_cpp_id}) { @@ -250,8 +263,8 @@ static inline void RunGreeterCompilation(RepositoryConfig* repo_config, runner.Process(g.ArtifactNodeWithId(libgreet_id)->BuilderActionNode())); CHECK(runner.Process(g.ArtifactNodeWithId(exec_id)->BuilderActionNode())); if (is_hermetic) { - CHECK(Statistics::Instance().ActionsQueuedCounter() == expected_queued); - CHECK(Statistics::Instance().ActionsCachedCounter() == expected_cached); + CHECK(stats->ActionsQueuedCounter() == expected_queued); + CHECK(stats->ActionsCachedCounter() == expected_cached); } auto tmpdir = GetTestDir(); @@ -277,32 +290,41 @@ static inline void RunGreeterCompilation(RepositoryConfig* repo_config, [[maybe_unused]] static void TestHelloWorldCompilation( RepositoryConfig* repo_config, + gsl::not_null<Statistics*> const& stats, + gsl::not_null<Progress*> const& progress, ApiFactory const& factory, bool is_hermetic = true) { SetupConfig(repo_config); // expecting 1 action queued, 0 results from cache // NOLINTNEXTLINE - RunHelloWorldCompilation(repo_config, factory, is_hermetic, 1, 0); + RunHelloWorldCompilation( + repo_config, stats, progress, factory, is_hermetic, 1, 0); SECTION("Running same compilation again") { // expecting 2 actions queued, 1 result from cache // NOLINTNEXTLINE - RunHelloWorldCompilation(repo_config, factory, is_hermetic, 2, 1); + RunHelloWorldCompilation( + repo_config, stats, progress, factory, is_hermetic, 2, 1); } } [[maybe_unused]] static void TestGreeterCompilation( RepositoryConfig* repo_config, + gsl::not_null<Statistics*> const& stats, + gsl::not_null<Progress*> const& progress, ApiFactory const& factory, bool is_hermetic = true) { SetupConfig(repo_config); // expecting 3 action queued, 0 results from cache // NOLINTNEXTLINE - RunGreeterCompilation(repo_config, factory, "greet.cpp", is_hermetic, 3, 0); + RunGreeterCompilation( + repo_config, stats, progress, factory, "greet.cpp", is_hermetic, 3, 0); SECTION("Running same compilation again") { // expecting 6 actions queued, 3 results from cache RunGreeterCompilation(repo_config, + stats, + progress, factory, "greet.cpp", is_hermetic, @@ -313,6 +335,8 @@ static inline void RunGreeterCompilation(RepositoryConfig* repo_config, SECTION("Running modified compilation") { // expecting 6 actions queued, 2 results from cache RunGreeterCompilation(repo_config, + stats, + progress, factory, "greet_mod.cpp", is_hermetic, @@ -321,11 +345,14 @@ static inline void RunGreeterCompilation(RepositoryConfig* repo_config, } } -static inline void TestUploadAndDownloadTrees(RepositoryConfig* repo_config, - ApiFactory const& factory, - bool /*is_hermetic*/ = true, - int /*expected_queued*/ = 0, - int /*expected_cached*/ = 0) { +static inline void TestUploadAndDownloadTrees( + RepositoryConfig* repo_config, + gsl::not_null<Statistics*> const& stats, + gsl::not_null<Progress*> const& progress, + ApiFactory const& factory, + bool /*is_hermetic*/ = true, + int /*expected_queued*/ = 0, + int /*expected_cached*/ = 0) { SetupConfig(repo_config); auto tmpdir = GetTestDir(); auto* env_path = std::getenv("PATH"); @@ -366,7 +393,9 @@ static inline void TestUploadAndDownloadTrees(RepositoryConfig* repo_config, api.get(), api.get(), RemoteExecutionConfig::PlatformProperties(), - RemoteExecutionConfig::DispatchList()}; + RemoteExecutionConfig::DispatchList(), + stats, + progress}; REQUIRE(runner.Process(g.ArtifactNodeWithId(foo_id))); REQUIRE(runner.Process(g.ArtifactNodeWithId(bar_id))); @@ -468,11 +497,14 @@ static inline void TestUploadAndDownloadTrees(RepositoryConfig* repo_config, } } -static inline void TestRetrieveOutputDirectories(RepositoryConfig* repo_config, - ApiFactory const& factory, - bool /*is_hermetic*/ = true, - int /*expected_queued*/ = 0, - int /*expected_cached*/ = 0) { +static inline void TestRetrieveOutputDirectories( + RepositoryConfig* repo_config, + gsl::not_null<Statistics*> const& stats, + gsl::not_null<Progress*> const& progress, + ApiFactory const& factory, + bool /*is_hermetic*/ = true, + int /*expected_queued*/ = 0, + int /*expected_cached*/ = 0) { SetupConfig(repo_config); auto tmpdir = GetTestDir(); @@ -522,7 +554,9 @@ static inline void TestRetrieveOutputDirectories(RepositoryConfig* repo_config, api.get(), api.get(), RemoteExecutionConfig::PlatformProperties(), - RemoteExecutionConfig::DispatchList()}; + RemoteExecutionConfig::DispatchList(), + stats, + progress}; REQUIRE(runner.Process(action)); // read output @@ -570,7 +604,9 @@ static inline void TestRetrieveOutputDirectories(RepositoryConfig* repo_config, api.get(), api.get(), RemoteExecutionConfig::PlatformProperties(), - RemoteExecutionConfig::DispatchList()}; + RemoteExecutionConfig::DispatchList(), + stats, + progress}; REQUIRE(runner.Process(action)); // read output @@ -634,7 +670,9 @@ static inline void TestRetrieveOutputDirectories(RepositoryConfig* repo_config, api.get(), api.get(), RemoteExecutionConfig::PlatformProperties(), - RemoteExecutionConfig::DispatchList()}; + RemoteExecutionConfig::DispatchList(), + stats, + progress}; REQUIRE(runner.Process(action)); // read output @@ -703,7 +741,9 @@ static inline void TestRetrieveOutputDirectories(RepositoryConfig* repo_config, api.get(), api.get(), RemoteExecutionConfig::PlatformProperties(), - RemoteExecutionConfig::DispatchList()}; + RemoteExecutionConfig::DispatchList(), + stats, + progress}; CHECK_FALSE(runner.Process(action)); } @@ -725,7 +765,9 @@ static inline void TestRetrieveOutputDirectories(RepositoryConfig* repo_config, api.get(), api.get(), RemoteExecutionConfig::PlatformProperties(), - RemoteExecutionConfig::DispatchList()}; + RemoteExecutionConfig::DispatchList(), + stats, + progress}; CHECK_FALSE(runner.Process(action)); } } diff --git a/test/buildtool/execution_engine/executor/executor_api_local.test.cpp b/test/buildtool/execution_engine/executor/executor_api_local.test.cpp index f196e98b..26d8993f 100755 --- a/test/buildtool/execution_engine/executor/executor_api_local.test.cpp +++ b/test/buildtool/execution_engine/executor/executor_api_local.test.cpp @@ -14,9 +14,11 @@ #include "catch2/catch_test_macros.hpp" #include "src/buildtool/common/repository_config.hpp" +#include "src/buildtool/common/statistics.hpp" #include "src/buildtool/execution_api/local/local_api.hpp" #include "src/buildtool/execution_api/remote/config.hpp" #include "src/buildtool/execution_engine/executor/executor.hpp" +#include "src/buildtool/progress_reporting/progress.hpp" #include "test/buildtool/execution_engine/executor/executor_api.test.hpp" #include "test/utils/hermeticity/local.hpp" @@ -32,30 +34,42 @@ TEST_CASE_METHOD(HermeticLocalTestFixture, "Executor<LocalApi>: Compile hello world", "[executor]") { RepositoryConfig repo_config{}; - TestHelloWorldCompilation( - &repo_config, [&] { return std::make_unique<LocalApi>(&repo_config); }); + Statistics stats{}; + Progress progress{}; + TestHelloWorldCompilation(&repo_config, &stats, &progress, [&] { + return std::make_unique<LocalApi>(&repo_config); + }); } TEST_CASE_METHOD(HermeticLocalTestFixture, "Executor<LocalApi>: Compile greeter", "[executor]") { RepositoryConfig repo_config{}; - TestGreeterCompilation( - &repo_config, [&] { return std::make_unique<LocalApi>(&repo_config); }); + Statistics stats{}; + Progress progress{}; + TestGreeterCompilation(&repo_config, &stats, &progress, [&] { + return std::make_unique<LocalApi>(&repo_config); + }); } TEST_CASE_METHOD(HermeticLocalTestFixture, "Executor<LocalApi>: Upload and download trees", "[executor]") { RepositoryConfig repo_config{}; - TestUploadAndDownloadTrees( - &repo_config, [&] { return std::make_unique<LocalApi>(&repo_config); }); + Statistics stats{}; + Progress progress{}; + TestUploadAndDownloadTrees(&repo_config, &stats, &progress, [&] { + return std::make_unique<LocalApi>(&repo_config); + }); } TEST_CASE_METHOD(HermeticLocalTestFixture, "Executor<LocalApi>: Retrieve output directories", "[executor]") { RepositoryConfig repo_config{}; - TestRetrieveOutputDirectories( - &repo_config, [&] { return std::make_unique<LocalApi>(&repo_config); }); + Statistics stats{}; + Progress progress{}; + TestRetrieveOutputDirectories(&repo_config, &stats, &progress, [&] { + return std::make_unique<LocalApi>(&repo_config); + }); } diff --git a/test/buildtool/execution_engine/executor/executor_api_remote_bazel.test.cpp b/test/buildtool/execution_engine/executor/executor_api_remote_bazel.test.cpp index 4df56ec2..56094fc3 100755 --- a/test/buildtool/execution_engine/executor/executor_api_remote_bazel.test.cpp +++ b/test/buildtool/execution_engine/executor/executor_api_remote_bazel.test.cpp @@ -14,9 +14,11 @@ #include "catch2/catch_test_macros.hpp" #include "src/buildtool/common/repository_config.hpp" +#include "src/buildtool/common/statistics.hpp" #include "src/buildtool/execution_api/remote/bazel/bazel_api.hpp" #include "src/buildtool/execution_api/remote/config.hpp" #include "src/buildtool/execution_engine/executor/executor.hpp" +#include "src/buildtool/progress_reporting/progress.hpp" #include "test/buildtool/execution_engine/executor/executor_api.test.hpp" TEST_CASE("Executor<BazelApi>: Upload blob", "[executor]") { @@ -32,6 +34,8 @@ TEST_CASE("Executor<BazelApi>: Upload blob", "[executor]") { TEST_CASE("Executor<BazelApi>: Compile hello world", "[executor]") { RepositoryConfig repo_config{}; + Statistics stats{}; + Progress progress{}; ExecutionConfiguration config; config.skip_cache_lookup = false; @@ -39,6 +43,8 @@ TEST_CASE("Executor<BazelApi>: Compile hello world", "[executor]") { TestHelloWorldCompilation( &repo_config, + &stats, + &progress, [&] { return BazelApi::Ptr{new BazelApi{ "remote-execution", info->host, info->port, config}}; @@ -48,6 +54,8 @@ TEST_CASE("Executor<BazelApi>: Compile hello world", "[executor]") { TEST_CASE("Executor<BazelApi>: Compile greeter", "[executor]") { RepositoryConfig repo_config{}; + Statistics stats{}; + Progress progress{}; ExecutionConfiguration config; config.skip_cache_lookup = false; @@ -55,6 +63,8 @@ TEST_CASE("Executor<BazelApi>: Compile greeter", "[executor]") { TestGreeterCompilation( &repo_config, + &stats, + &progress, [&] { return BazelApi::Ptr{new BazelApi{ "remote-execution", info->host, info->port, config}}; @@ -64,6 +74,8 @@ TEST_CASE("Executor<BazelApi>: Compile greeter", "[executor]") { TEST_CASE("Executor<BazelApi>: Upload and download trees", "[executor]") { RepositoryConfig repo_config{}; + Statistics stats{}; + Progress progress{}; ExecutionConfiguration config; config.skip_cache_lookup = false; @@ -71,6 +83,8 @@ TEST_CASE("Executor<BazelApi>: Upload and download trees", "[executor]") { TestUploadAndDownloadTrees( &repo_config, + &stats, + &progress, [&] { return BazelApi::Ptr{new BazelApi{ "remote-execution", info->host, info->port, config}}; @@ -80,6 +94,8 @@ TEST_CASE("Executor<BazelApi>: Upload and download trees", "[executor]") { TEST_CASE("Executor<BazelApi>: Retrieve output directories", "[executor]") { RepositoryConfig repo_config{}; + Statistics stats{}; + Progress progress{}; ExecutionConfiguration config; config.skip_cache_lookup = false; @@ -87,6 +103,8 @@ TEST_CASE("Executor<BazelApi>: Retrieve output directories", "[executor]") { TestRetrieveOutputDirectories( &repo_config, + &stats, + &progress, [&] { return BazelApi::Ptr{new BazelApi{ "remote-execution", info->host, info->port, config}}; |