summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-09-16 18:52:34 +0200
committerMaksim Denisov <denisov.maksim@huawei.com>2024-09-18 09:45:19 +0200
commit1d748c1808e17998b4183574e3706ef1f7b6a5db (patch)
tree1266d562c6cdf7910f63c12c69b89c2046e8d683 /test
parent2ba863c83b946fb08acfa2257d838987d373208f (diff)
downloadjustbuild-1d748c1808e17998b4183574e3706ef1f7b6a5db.tar.gz
Add tests for ByteStreamUtils::{Read, Write}Request
Diffstat (limited to 'test')
-rw-r--r--test/buildtool/execution_api/TARGETS3
-rw-r--r--test/buildtool/execution_api/common/TARGETS21
-rw-r--r--test/buildtool/execution_api/common/bytestream_utils.test.cpp60
3 files changed, 83 insertions, 1 deletions
diff --git a/test/buildtool/execution_api/TARGETS b/test/buildtool/execution_api/TARGETS
index 1368ac08..8582cdbd 100644
--- a/test/buildtool/execution_api/TARGETS
+++ b/test/buildtool/execution_api/TARGETS
@@ -12,7 +12,8 @@
{ "type": ["@", "rules", "test", "suite"]
, "stage": ["execution_api"]
, "deps":
- [ ["./", "bazel", "TESTS"]
+ [ ["./", "common", "TESTS"]
+ , ["./", "bazel", "TESTS"]
, ["./", "local", "TESTS"]
, ["./", "execution_service", "TESTS"]
]
diff --git a/test/buildtool/execution_api/common/TARGETS b/test/buildtool/execution_api/common/TARGETS
index 6a7dff89..72c7160f 100644
--- a/test/buildtool/execution_api/common/TARGETS
+++ b/test/buildtool/execution_api/common/TARGETS
@@ -16,4 +16,25 @@
]
, "stage": ["test", "buildtool", "execution_api", "common"]
}
+, "bytestream_utils":
+ { "type": ["@", "rules", "CC/test", "test"]
+ , "name": ["bytestream_utils"]
+ , "srcs": ["bytestream_utils.test.cpp"]
+ , "private-deps":
+ [ ["@", "catch2", "", "catch2"]
+ , ["", "catch-main"]
+ , ["utils", "test_hash_function_type"]
+ , ["@", "src", "src/buildtool/common", "bazel_types"]
+ , ["@", "src", "src/buildtool/common", "bazel_digest_factory"]
+ , ["@", "src", "src/buildtool/crypto", "hash_function"]
+ , ["@", "src", "src/buildtool/execution_api/common", "bytestream_utils"]
+ , ["@", "src", "src/buildtool/execution_api/common", "common"]
+ ]
+ , "stage": ["test", "buildtool", "execution_api", "common"]
+ }
+, "TESTS":
+ { "type": ["@", "rules", "test", "suite"]
+ , "stage": ["common"]
+ , "deps": ["bytestream_utils"]
+ }
}
diff --git a/test/buildtool/execution_api/common/bytestream_utils.test.cpp b/test/buildtool/execution_api/common/bytestream_utils.test.cpp
new file mode 100644
index 00000000..1468b156
--- /dev/null
+++ b/test/buildtool/execution_api/common/bytestream_utils.test.cpp
@@ -0,0 +1,60 @@
+// Copyright 2024 Huawei Cloud Computing Technology Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/buildtool/execution_api/common/bytestream_utils.hpp"
+
+#include <functional>
+#include <string>
+
+#include "catch2/catch_test_macros.hpp"
+#include "src/buildtool/common/bazel_digest_factory.hpp"
+#include "src/buildtool/common/bazel_types.hpp"
+#include "src/buildtool/crypto/hash_function.hpp"
+#include "src/buildtool/execution_api/common/execution_common.hpp"
+#include "test/utils/hermeticity/test_hash_function_type.hpp"
+
+TEST_CASE("ReadRequest", "[common]") {
+ static constexpr auto* kInstanceName = "instance_name";
+ HashFunction const hash_function{TestHashType::ReadFromEnvironment()};
+
+ auto const digest = BazelDigestFactory::HashDataAs<ObjectType::File>(
+ hash_function, "test_string");
+
+ std::string const request =
+ ByteStreamUtils::ReadRequest{kInstanceName, digest}.ToString();
+ auto const parsed = ByteStreamUtils::ReadRequest::FromString(request);
+ REQUIRE(parsed);
+ CHECK(parsed->GetInstanceName().compare(kInstanceName) == 0);
+ CHECK(std::equal_to<bazel_re::Digest>{}(parsed->GetDigest(), digest));
+}
+
+TEST_CASE("WriteRequest", "[common]") {
+ static constexpr auto* kInstanceName = "instance_name";
+ HashFunction const hash_function{TestHashType::ReadFromEnvironment()};
+
+ auto id = CreateProcessUniqueId();
+ REQUIRE(id);
+ std::string const uuid = CreateUUIDVersion4(*id);
+
+ auto const digest = BazelDigestFactory::HashDataAs<ObjectType::File>(
+ hash_function, "test_string");
+
+ std::string const request =
+ ByteStreamUtils::WriteRequest{kInstanceName, uuid, digest}.ToString();
+ auto const parsed = ByteStreamUtils::WriteRequest::FromString(request);
+ REQUIRE(parsed);
+ CHECK(parsed->GetInstanceName().compare(kInstanceName) == 0);
+ CHECK(parsed->GetUUID().compare(uuid) == 0);
+ CHECK(std::equal_to<bazel_re::Digest>{}(parsed->GetDigest(), digest));
+}