summaryrefslogtreecommitdiff
path: root/test/buildtool/graph_traverser
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-07-02 13:21:14 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-07-05 13:32:39 +0200
commitd202e8f6051df5eb89d0f2eb1b9ac7109d204f56 (patch)
tree562d90c0a5396a259d11c4288162403489a6e4fd /test/buildtool/graph_traverser
parent5140befaa10f65145fe041b416b7764127efc379 (diff)
downloadjustbuild-d202e8f6051df5eb89d0f2eb1b9ac7109d204f56.tar.gz
Remove HermeticLocalTestFixture
...and create StorageConfig and Storage in place if needed.
Diffstat (limited to 'test/buildtool/graph_traverser')
-rw-r--r--test/buildtool/graph_traverser/TARGETS6
-rw-r--r--test/buildtool/graph_traverser/graph_traverser.test.hpp64
-rw-r--r--test/buildtool/graph_traverser/graph_traverser_local.test.cpp88
-rw-r--r--test/buildtool/graph_traverser/graph_traverser_remote.test.cpp59
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 */);
}