summaryrefslogtreecommitdiff
path: root/test/buildtool/execution_api/common/bytestream_utils.test.cpp
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/buildtool/execution_api/common/bytestream_utils.test.cpp
parent2ba863c83b946fb08acfa2257d838987d373208f (diff)
downloadjustbuild-1d748c1808e17998b4183574e3706ef1f7b6a5db.tar.gz
Add tests for ByteStreamUtils::{Read, Write}Request
Diffstat (limited to 'test/buildtool/execution_api/common/bytestream_utils.test.cpp')
-rw-r--r--test/buildtool/execution_api/common/bytestream_utils.test.cpp60
1 files changed, 60 insertions, 0 deletions
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));
+}