diff options
author | Maksim Denisov <denisov.maksim@huawei.com> | 2024-07-02 13:21:14 +0200 |
---|---|---|
committer | Maksim Denisov <denisov.maksim@huawei.com> | 2024-07-05 13:32:39 +0200 |
commit | d202e8f6051df5eb89d0f2eb1b9ac7109d204f56 (patch) | |
tree | 562d90c0a5396a259d11c4288162403489a6e4fd /test/buildtool/graph_traverser | |
parent | 5140befaa10f65145fe041b416b7764127efc379 (diff) | |
download | justbuild-d202e8f6051df5eb89d0f2eb1b9ac7109d204f56.tar.gz |
Remove HermeticLocalTestFixture
...and create StorageConfig and Storage in place if needed.
Diffstat (limited to 'test/buildtool/graph_traverser')
4 files changed, 137 insertions, 80 deletions
diff --git a/test/buildtool/graph_traverser/TARGETS b/test/buildtool/graph_traverser/TARGETS index d04e4365..bbf9e8ec 100644 --- a/test/buildtool/graph_traverser/TARGETS +++ b/test/buildtool/graph_traverser/TARGETS @@ -29,8 +29,10 @@ [ "graph_traverser_tests" , ["@", "catch2", "", "catch2"] , ["", "catch-main"] - , ["utils", "local_hermeticity"] , ["utils", "test_auth_config"] + , ["utils", "test_storage_config"] + , ["@", "src", "src/buildtool/storage", "config"] + , ["@", "src", "src/buildtool/storage", "storage"] ] , "stage": ["test", "buildtool", "graph_traverser"] } @@ -44,6 +46,8 @@ , ["@", "catch2", "", "catch2"] , ["utils", "catch-main-remote-execution"] , ["utils", "test_auth_config"] + , ["@", "src", "src/buildtool/storage", "storage"] + , ["@", "src", "src/buildtool/storage", "config"] ] , "stage": ["test", "buildtool", "graph_traverser"] } diff --git a/test/buildtool/graph_traverser/graph_traverser.test.hpp b/test/buildtool/graph_traverser/graph_traverser.test.hpp index e8fe20bd..e83f876d 100644 --- a/test/buildtool/graph_traverser/graph_traverser.test.hpp +++ b/test/buildtool/graph_traverser/graph_traverser.test.hpp @@ -154,17 +154,17 @@ inline void SetLauncher() { } // namespace [[maybe_unused]] static void TestHelloWorldCopyMessage( + StorageConfig const& storage_config, + Storage const& storage, gsl::not_null<Auth const*> const& auth, bool is_hermetic = true) { TestProject p("hello_world_copy_message"); - auto const storage = Storage::Create(&StorageConfig::Instance()); - SetLauncher(); auto const clargs = p.CmdLineArgs(); Statistics stats{}; Progress progress{}; - ApiBundle const apis{&StorageConfig::Instance(), + ApiBundle const apis{&storage_config, &storage, p.GetRepoConfig(), auth, @@ -195,7 +195,7 @@ inline void SetLauncher() { SECTION("Executable is retrieved as executable") { auto const clargs_exec = p.CmdLineArgs("_entry_points_get_executable"); - ApiBundle const apis{&StorageConfig::Instance(), + ApiBundle const apis{&storage_config, &storage, p.GetRepoConfig(), auth, @@ -228,17 +228,17 @@ inline void SetLauncher() { } [[maybe_unused]] static void TestCopyLocalFile( + StorageConfig const& storage_config, + Storage const& storage, gsl::not_null<Auth const*> const& auth, bool is_hermetic = true) { TestProject p("copy_local_file"); - auto const storage = Storage::Create(&StorageConfig::Instance()); - SetLauncher(); auto const clargs = p.CmdLineArgs(); Statistics stats{}; Progress progress{}; - ApiBundle const apis{&StorageConfig::Instance(), + ApiBundle const apis{&storage_config, &storage, p.GetRepoConfig(), auth, @@ -265,17 +265,17 @@ inline void SetLauncher() { } [[maybe_unused]] static void TestSequencePrinterBuildLibraryOnly( + StorageConfig const& storage_config, + Storage const& storage, gsl::not_null<Auth const*> const& auth, bool is_hermetic = true) { TestProject p("sequence_printer_build_library_only"); - auto const storage = Storage::Create(&StorageConfig::Instance()); - SetLauncher(); auto const clargs = p.CmdLineArgs(); Statistics stats{}; Progress progress{}; - ApiBundle const apis{&StorageConfig::Instance(), + ApiBundle const apis{&storage_config, &storage, p.GetRepoConfig(), auth, @@ -322,18 +322,18 @@ inline void SetLauncher() { } [[maybe_unused]] static void TestHelloWorldWithKnownSource( + StorageConfig const& storage_config, + Storage const& storage, gsl::not_null<Auth const*> const& auth, bool is_hermetic = true) { TestProject full_hello_world("hello_world_copy_message"); - auto const storage = Storage::Create(&StorageConfig::Instance()); - SetLauncher(); auto const clargs_update_cpp = full_hello_world.CmdLineArgs("_entry_points_upload_source"); Statistics stats{}; Progress progress{}; - ApiBundle const apis{&StorageConfig::Instance(), + ApiBundle const apis{&storage_config, &storage, full_hello_world.GetRepoConfig(), auth, @@ -385,17 +385,17 @@ inline void SetLauncher() { } } -static void TestBlobsUploadedAndUsed(gsl::not_null<Auth const*> const& auth, +static void TestBlobsUploadedAndUsed(StorageConfig const& storage_config, + Storage const& storage, + gsl::not_null<Auth const*> const& auth, bool is_hermetic = true) { TestProject p("use_uploaded_blobs"); auto const clargs = p.CmdLineArgs(); - auto const storage = Storage::Create(&StorageConfig::Instance()); - SetLauncher(); Statistics stats{}; Progress progress{}; - ApiBundle const apis{&StorageConfig::Instance(), + ApiBundle const apis{&storage_config, &storage, p.GetRepoConfig(), auth, @@ -430,17 +430,17 @@ static void TestBlobsUploadedAndUsed(gsl::not_null<Auth const*> const& auth, } static void TestEnvironmentVariablesSetAndUsed( + StorageConfig const& storage_config, + Storage const& storage, gsl::not_null<Auth const*> const& auth, bool is_hermetic = true) { TestProject p("use_env_variables"); auto const clargs = p.CmdLineArgs(); - auto const storage = Storage::Create(&StorageConfig::Instance()); - SetLauncher(); Statistics stats{}; Progress progress{}; - ApiBundle const apis{&StorageConfig::Instance(), + ApiBundle const apis{&storage_config, &storage, p.GetRepoConfig(), auth, @@ -474,17 +474,17 @@ static void TestEnvironmentVariablesSetAndUsed( } } -static void TestTreesUsed(gsl::not_null<Auth const*> const& auth, +static void TestTreesUsed(StorageConfig const& storage_config, + Storage const& storage, + gsl::not_null<Auth const*> const& auth, bool is_hermetic = true) { TestProject p("use_trees"); auto const clargs = p.CmdLineArgs(); - auto const storage = Storage::Create(&StorageConfig::Instance()); - SetLauncher(); Statistics stats{}; Progress progress{}; - ApiBundle const apis{&StorageConfig::Instance(), + ApiBundle const apis{&storage_config, &storage, p.GetRepoConfig(), auth, @@ -518,17 +518,17 @@ static void TestTreesUsed(gsl::not_null<Auth const*> const& auth, } } -static void TestNestedTreesUsed(gsl::not_null<Auth const*> const& auth, +static void TestNestedTreesUsed(StorageConfig const& storage_config, + Storage const& storage, + gsl::not_null<Auth const*> const& auth, bool is_hermetic = true) { TestProject p("use_nested_trees"); auto const clargs = p.CmdLineArgs(); - auto const storage = Storage::Create(&StorageConfig::Instance()); - SetLauncher(); Statistics stats{}; Progress progress{}; - ApiBundle const apis{&StorageConfig::Instance(), + ApiBundle const apis{&storage_config, &storage, p.GetRepoConfig(), auth, @@ -562,15 +562,15 @@ static void TestNestedTreesUsed(gsl::not_null<Auth const*> const& auth, } } -static void TestFlakyHelloWorldDetected(gsl::not_null<Auth const*> const& auth, +static void TestFlakyHelloWorldDetected(StorageConfig const& storage_config, + Storage const& storage, + gsl::not_null<Auth const*> const& auth, bool /*is_hermetic*/ = true) { TestProject p("flaky_hello_world"); - auto const storage = Storage::Create(&StorageConfig::Instance()); - Statistics stats{}; Progress progress{}; - ApiBundle const apis{&StorageConfig::Instance(), + ApiBundle const apis{&storage_config, &storage, p.GetRepoConfig(), auth, diff --git a/test/buildtool/graph_traverser/graph_traverser_local.test.cpp b/test/buildtool/graph_traverser/graph_traverser_local.test.cpp index 88990dc8..007d1386 100644 --- a/test/buildtool/graph_traverser/graph_traverser_local.test.cpp +++ b/test/buildtool/graph_traverser/graph_traverser_local.test.cpp @@ -14,69 +14,83 @@ #include "catch2/catch_test_macros.hpp" #include "src/buildtool/auth/authentication.hpp" +#include "src/buildtool/storage/config.hpp" +#include "src/buildtool/storage/storage.hpp" #include "test/buildtool/graph_traverser/graph_traverser.test.hpp" -#include "test/utils/hermeticity/local.hpp" +#include "test/utils/hermeticity/test_storage_config.hpp" #include "test/utils/remote_execution/test_auth_config.hpp" -TEST_CASE_METHOD(HermeticLocalTestFixture, - "Local: Output created when entry point is local artifact", - "[graph_traverser]") { +TEST_CASE("Local: Output created when entry point is local artifact", + "[graph_traverser]") { + auto const storage_config = TestStorageConfig::Create(); + auto const storage = Storage::Create(&storage_config.Get()); Auth auth{}; /*no TLS needed*/ - TestCopyLocalFile(&auth); + + TestCopyLocalFile(storage_config.Get(), storage, &auth); } -TEST_CASE_METHOD(HermeticLocalTestFixture, - "Local: Output created and contents are correct", - "[graph_traverser]") { +TEST_CASE("Local: Output created and contents are correct", + "[graph_traverser]") { + auto const storage_config = TestStorageConfig::Create(); + auto const storage = Storage::Create(&storage_config.Get()); Auth auth{}; /*no TLS needed*/ - TestHelloWorldCopyMessage(&auth); + + TestHelloWorldCopyMessage(storage_config.Get(), storage, &auth); } -TEST_CASE_METHOD(HermeticLocalTestFixture, - "Local: Actions are not re-run", - "[graph_traverser]") { +TEST_CASE("Local: Actions are not re-run", "[graph_traverser]") { + auto const storage_config = TestStorageConfig::Create(); + auto const storage = Storage::Create(&storage_config.Get()); Auth auth{}; /*no TLS needed*/ - TestSequencePrinterBuildLibraryOnly(&auth); + + TestSequencePrinterBuildLibraryOnly(storage_config.Get(), storage, &auth); } -TEST_CASE_METHOD(HermeticLocalTestFixture, - "Local: KNOWN artifact", - "[graph_traverser]") { +TEST_CASE("Local: KNOWN artifact", "[graph_traverser]") { + auto const storage_config = TestStorageConfig::Create(); + auto const storage = Storage::Create(&storage_config.Get()); Auth auth{}; /*no TLS needed*/ - TestHelloWorldWithKnownSource(&auth); + + TestHelloWorldWithKnownSource(storage_config.Get(), storage, &auth); } -TEST_CASE_METHOD(HermeticLocalTestFixture, - "Local: Blobs uploaded and correctly used", - "[graph_traverser]") { +TEST_CASE("Local: Blobs uploaded and correctly used", "[graph_traverser]") { + auto const storage_config = TestStorageConfig::Create(); + auto const storage = Storage::Create(&storage_config.Get()); Auth auth{}; /*no TLS needed*/ - TestBlobsUploadedAndUsed(&auth); + + TestBlobsUploadedAndUsed(storage_config.Get(), storage, &auth); } -TEST_CASE_METHOD(HermeticLocalTestFixture, - "Local: Environment variables are set and used", - "[graph_traverser]") { +TEST_CASE("Local: Environment variables are set and used", + "[graph_traverser]") { + auto const storage_config = TestStorageConfig::Create(); + auto const storage = Storage::Create(&storage_config.Get()); Auth auth{}; /*no TLS needed*/ - TestEnvironmentVariablesSetAndUsed(&auth); + + TestEnvironmentVariablesSetAndUsed(storage_config.Get(), storage, &auth); } -TEST_CASE_METHOD(HermeticLocalTestFixture, - "Local: Trees correctly used", - "[graph_traverser]") { +TEST_CASE("Local: Trees correctly used", "[graph_traverser]") { + auto const storage_config = TestStorageConfig::Create(); + auto const storage = Storage::Create(&storage_config.Get()); Auth auth{}; /*no TLS needed*/ - TestTreesUsed(&auth); + + TestTreesUsed(storage_config.Get(), storage, &auth); } -TEST_CASE_METHOD(HermeticLocalTestFixture, - "Local: Nested trees correctly used", - "[graph_traverser]") { +TEST_CASE("Local: Nested trees correctly used", "[graph_traverser]") { + auto const storage_config = TestStorageConfig::Create(); + auto const storage = Storage::Create(&storage_config.Get()); Auth auth{}; /*no TLS needed*/ - TestNestedTreesUsed(&auth); + + TestNestedTreesUsed(storage_config.Get(), storage, &auth); } -TEST_CASE_METHOD(HermeticLocalTestFixture, - "Local: Detect flaky actions", - "[graph_traverser]") { +TEST_CASE("Local: Detect flaky actions", "[graph_traverser]") { + auto const storage_config = TestStorageConfig::Create(); + auto const storage = Storage::Create(&storage_config.Get()); Auth auth{}; /*no TLS needed*/ - TestFlakyHelloWorldDetected(&auth); + + TestFlakyHelloWorldDetected(storage_config.Get(), storage, &auth); } diff --git a/test/buildtool/graph_traverser/graph_traverser_remote.test.cpp b/test/buildtool/graph_traverser/graph_traverser_remote.test.cpp index e24a8d4e..d9de3b10 100644 --- a/test/buildtool/graph_traverser/graph_traverser_remote.test.cpp +++ b/test/buildtool/graph_traverser/graph_traverser_remote.test.cpp @@ -13,72 +13,111 @@ // limitations under the License. #include "catch2/catch_test_macros.hpp" +#include "src/buildtool/storage/config.hpp" +#include "src/buildtool/storage/storage.hpp" #include "test/buildtool/graph_traverser/graph_traverser.test.hpp" #include "test/utils/remote_execution/test_auth_config.hpp" +[[nodiscard]] static auto CreateConfig() -> StorageConfig { + auto cache_dir = FileSystemManager::GetCurrentDirectory() / "cache"; + auto storage_config = StorageConfig::Instance(); + if (not FileSystemManager::RemoveDirectory(cache_dir, true) or + not FileSystemManager::CreateDirectoryExclusive(cache_dir) or + not storage_config.SetBuildRoot(cache_dir)) { + std::exit(EXIT_FAILURE); + } + return storage_config; +} + TEST_CASE("Remote: Output created and contents are correct", "[graph_traverser]") { + StorageConfig const storage_config = CreateConfig(); + auto const storage = Storage::Create(&storage_config); auto auth_config = TestAuthConfig::ReadAuthConfigFromEnvironment(); REQUIRE(auth_config); - TestHelloWorldCopyMessage(&*auth_config, false /* not hermetic */); + TestHelloWorldCopyMessage( + storage_config, storage, &*auth_config, false /* not hermetic */); } TEST_CASE("Remote: Output created when entry point is local artifact", "[graph_traverser]") { + StorageConfig const storage_config = CreateConfig(); + auto const storage = Storage::Create(&storage_config); auto auth_config = TestAuthConfig::ReadAuthConfigFromEnvironment(); REQUIRE(auth_config); - TestCopyLocalFile(&*auth_config, false /* not hermetic */); + TestCopyLocalFile( + storage_config, storage, &*auth_config, false /* not hermetic */); } TEST_CASE("Remote: Actions are not re-run", "[graph_traverser]") { + StorageConfig const storage_config = CreateConfig(); + auto const storage = Storage::Create(&storage_config); auto auth_config = TestAuthConfig::ReadAuthConfigFromEnvironment(); REQUIRE(auth_config); - TestSequencePrinterBuildLibraryOnly(&*auth_config, - false /* not hermetic */); + TestSequencePrinterBuildLibraryOnly( + storage_config, storage, &*auth_config, false /* not hermetic */); } TEST_CASE("Remote: KNOWN artifact", "[graph_traverser]") { + StorageConfig const storage_config = CreateConfig(); + auto const storage = Storage::Create(&storage_config); auto auth_config = TestAuthConfig::ReadAuthConfigFromEnvironment(); REQUIRE(auth_config); - TestHelloWorldWithKnownSource(&*auth_config, false /* not hermetic */); + TestHelloWorldWithKnownSource( + storage_config, storage, &*auth_config, false /* not hermetic */); } TEST_CASE("Remote: Blobs uploaded and correctly used", "[graph_traverser]") { + StorageConfig const storage_config = CreateConfig(); + auto const storage = Storage::Create(&storage_config); auto auth_config = TestAuthConfig::ReadAuthConfigFromEnvironment(); REQUIRE(auth_config); - TestBlobsUploadedAndUsed(&*auth_config, false /* not hermetic */); + TestBlobsUploadedAndUsed( + storage_config, storage, &*auth_config, false /* not hermetic */); } TEST_CASE("Remote: Environment variables are set and used", "[graph_traverser]") { + StorageConfig const storage_config = CreateConfig(); + auto const storage = Storage::Create(&storage_config); auto auth_config = TestAuthConfig::ReadAuthConfigFromEnvironment(); REQUIRE(auth_config); - TestEnvironmentVariablesSetAndUsed(&*auth_config, false /* not hermetic */); + TestEnvironmentVariablesSetAndUsed( + storage_config, storage, &*auth_config, false /* not hermetic */); } TEST_CASE("Remote: Trees correctly used", "[graph_traverser]") { + StorageConfig const storage_config = CreateConfig(); + auto const storage = Storage::Create(&storage_config); auto auth_config = TestAuthConfig::ReadAuthConfigFromEnvironment(); REQUIRE(auth_config); - TestTreesUsed(&*auth_config, false /* not hermetic */); + TestTreesUsed( + storage_config, storage, &*auth_config, false /* not hermetic */); } TEST_CASE("Remote: Nested trees correctly used", "[graph_traverser]") { + StorageConfig const storage_config = CreateConfig(); + auto const storage = Storage::Create(&storage_config); auto auth_config = TestAuthConfig::ReadAuthConfigFromEnvironment(); REQUIRE(auth_config); - TestNestedTreesUsed(&*auth_config, false /* not hermetic */); + TestNestedTreesUsed( + storage_config, storage, &*auth_config, false /* not hermetic */); } TEST_CASE("Remote: Detect flaky actions", "[graph_traverser]") { + StorageConfig const storage_config = CreateConfig(); + auto const storage = Storage::Create(&storage_config); auto auth_config = TestAuthConfig::ReadAuthConfigFromEnvironment(); REQUIRE(auth_config); - TestFlakyHelloWorldDetected(&*auth_config, false /* not hermetic */); + TestFlakyHelloWorldDetected( + storage_config, storage, &*auth_config, false /* not hermetic */); } |