aboutsummaryrefslogtreecommitdiff
path: root/zenserver-test/zenserver-test.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-09-20 10:58:23 +0200
committerPer Larsson <[email protected]>2021-09-20 10:58:23 +0200
commitf4b7639b0f26d16c9a482b2db5eb598e851d7bb3 (patch)
tree6b16ab3c3542cd8167a0cac48fec78f78d00656c /zenserver-test/zenserver-test.cpp
parentMerge branch 'main' of https://github.com/EpicGames/zen (diff)
downloadzen-f4b7639b0f26d16c9a482b2db5eb598e851d7bb3.tar.xz
zen-f4b7639b0f26d16c9a482b2db5eb598e851d7bb3.zip
Respect skip attachments when retrieved from upstream cache.
Diffstat (limited to 'zenserver-test/zenserver-test.cpp')
-rw-r--r--zenserver-test/zenserver-test.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp
index dca583399..7cd2bb1d1 100644
--- a/zenserver-test/zenserver-test.cpp
+++ b/zenserver-test/zenserver-test.cpp
@@ -1737,6 +1737,62 @@ TEST_CASE("zcache.policy")
CHECK(Package.GetAttachments().size() != 0);
}
}
+
+ SUBCASE("skip - 'attachments' does not return attachments when retrieved from upstream")
+ {
+ ZenConfig UpstreamCfg = ZenConfig::New(13338);
+ ZenServerInstance UpstreamInst(TestEnv);
+ ZenConfig LocalCfg = ZenConfig::NewWithUpstream(13338);
+ ZenServerInstance LocalInst(TestEnv);
+ const auto Bucket = "texture"sv;
+
+ UpstreamCfg.Spawn(UpstreamInst);
+ LocalCfg.Spawn(LocalInst);
+
+ zen::IoHash Key;
+ zen::CbPackage Package = GeneratePackage(Key);
+ auto Buf = ToBuffer(Package);
+
+ // Store package upstream
+ {
+ CHECK(Package.GetAttachments().size() != 0);
+ cpr::Response Result = cpr::Put(cpr::Url{"{}/{}/{}"_format(UpstreamCfg.BaseUri, Bucket, Key)},
+ cpr::Body{(const char*)Buf.GetData(), Buf.GetSize()},
+ cpr::Header{{"Content-Type", "application/x-ue-cbpkg"}});
+ CHECK(Result.status_code == 201);
+ }
+
+ {
+ cpr::Response Result = cpr::Get(cpr::Url{"{}/{}/{}?skip=attachments"_format(LocalCfg.BaseUri, Bucket, Key)},
+ cpr::Header{{"Accept", "application/x-ue-cbpkg"}});
+ CHECK(Result.status_code == 200);
+
+ zen::IoBuffer Body(zen::IoBuffer::Wrap, Result.text.data(), Result.text.size());
+ zen::CbPackage Package;
+ const bool Ok = Package.TryLoad(Body);
+
+ CbObject CacheRecord = Package.GetObject();
+ std::vector<IoHash> AttachmentKeys;
+
+ CacheRecord.IterateAttachments(
+ [&AttachmentKeys](CbFieldView AttachmentKey) { AttachmentKeys.push_back(AttachmentKey.AsHash()); });
+
+ CHECK(AttachmentKeys.size() != 0);
+ CHECK(Package.GetAttachments().size() == 0);
+ }
+
+ {
+ cpr::Response Result =
+ cpr::Get(cpr::Url{"{}/{}/{}"_format(LocalCfg.BaseUri, Bucket, Key)}, cpr::Header{{"Accept", "application/x-ue-cbpkg"}});
+ CHECK(Result.status_code == 200);
+
+ zen::IoBuffer Body(zen::IoBuffer::Wrap, Result.text.data(), Result.text.size());
+ zen::CbPackage Package;
+ const bool Ok = Package.TryLoad(Body);
+
+ CHECK(Package.GetAttachments().size() != 0);
+ }
+ }
}
struct RemoteExecutionRequest