aboutsummaryrefslogtreecommitdiff
path: root/zenserver-test/zenserver-test.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-09-20 12:10:43 +0200
committerStefan Boberg <[email protected]>2021-09-20 12:10:43 +0200
commit524b35a2cf7c0a2146f28767e10b6e4103eeda85 (patch)
treed2b2c2ee9ba150faaf1a37b0cfc347c5224c15cc /zenserver-test/zenserver-test.cpp
parentMoved more code into zen namespace, for consistency (diff)
parentRespect skip attachments when retrieved from upstream cache. (diff)
downloadzen-524b35a2cf7c0a2146f28767e10b6e4103eeda85.tar.xz
zen-524b35a2cf7c0a2146f28767e10b6e4103eeda85.zip
Resolved merge from main
Diffstat (limited to 'zenserver-test/zenserver-test.cpp')
-rw-r--r--zenserver-test/zenserver-test.cpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp
index 0608fe8f3..7cd2bb1d1 100644
--- a/zenserver-test/zenserver-test.cpp
+++ b/zenserver-test/zenserver-test.cpp
@@ -1684,6 +1684,115 @@ TEST_CASE("zcache.policy")
CHECK(Result.status_code == 200);
}
}
+
+ SUBCASE("skip - 'attachments' does not return attachments")
+ {
+ ZenConfig LocalCfg = ZenConfig::New();
+ ZenServerInstance LocalInst(TestEnv);
+ const auto Bucket = "texture"sv;
+
+ LocalCfg.Spawn(LocalInst);
+
+ zen::IoHash Key;
+ zen::CbPackage Package = GeneratePackage(Key);
+ auto Buf = ToBuffer(Package);
+
+ // Store package locally
+ {
+ CHECK(Package.GetAttachments().size() != 0);
+ cpr::Response Result = cpr::Put(cpr::Url{"{}/{}/{}"_format(LocalCfg.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);
+ }
+ }
+
+ 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