aboutsummaryrefslogtreecommitdiff
path: root/zenserver-test/zenserver-test.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2021-10-03 16:25:43 +0200
committerPer Larsson <[email protected]>2021-10-03 16:25:43 +0200
commitc058fb0a11f9843d30bfdc3cd5d1d3a6bd26c3d5 (patch)
tree3b5cb8e3241a2a724a7872e2e33f062f632d0967 /zenserver-test/zenserver-test.cpp
parentFixed missing content type. (diff)
downloadzen-c058fb0a11f9843d30bfdc3cd5d1d3a6bd26c3d5.tar.xz
zen-c058fb0a11f9843d30bfdc3cd5d1d3a6bd26c3d5.zip
Added support for SkipData cache policy.
Diffstat (limited to 'zenserver-test/zenserver-test.cpp')
-rw-r--r--zenserver-test/zenserver-test.cpp106
1 files changed, 95 insertions, 11 deletions
diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp
index 0e5e73ffc..fe21aa834 100644
--- a/zenserver-test/zenserver-test.cpp
+++ b/zenserver-test/zenserver-test.cpp
@@ -1448,16 +1448,21 @@ TEST_CASE("zcache.policy")
return Buf;
};
- auto GeneratePackage = [](zen::IoHash& OutAttachmentKey) -> zen::CbPackage {
+ auto GeneratePackage = [](zen::IoHash& OutRecordKey, zen::IoHash& OutAttachmentKey) -> zen::CbPackage {
auto Data = zen::SharedBuffer::Clone(zen::MakeMemoryView<uint8_t>({1, 2, 3, 4, 5, 6, 7, 8, 9}));
auto CompressedData = zen::CompressedBuffer::Compress(Data);
OutAttachmentKey = zen::IoHash::FromBLAKE3(CompressedData.GetRawHash());
- zen::CbWriter Obj;
- Obj.BeginObject("obj"sv);
- Obj.AddBinaryAttachment("data", OutAttachmentKey);
- Obj.EndObject();
+
+ zen::CbWriter Writer;
+ Writer.BeginObject("obj"sv);
+ Writer.AddBinaryAttachment("data", OutAttachmentKey);
+ Writer.EndObject();
+ CbObject CacheRecord = Writer.Save().AsObject();
+
+ OutRecordKey = IoHash::HashBuffer(CacheRecord.GetBuffer().GetView());
+
zen::CbPackage Package;
- Package.SetObject(Obj.Save().AsObject());
+ Package.SetObject(CacheRecord);
Package.AddAttachment(zen::CbAttachment(CompressedData));
return Package;
@@ -1587,7 +1592,8 @@ TEST_CASE("zcache.policy")
LocalCfg.Spawn(LocalInst);
zen::IoHash Key;
- zen::CbPackage Package = GeneratePackage(Key);
+ zen::IoHash PayloadId;
+ zen::CbPackage Package = GeneratePackage(Key, PayloadId);
auto Buf = ToBuffer(Package);
// Store package upstream
@@ -1623,7 +1629,8 @@ TEST_CASE("zcache.policy")
LocalCfg.Spawn(LocalInst);
zen::IoHash Key;
- zen::CbPackage Package = GeneratePackage(Key);
+ zen::IoHash PayloadId;
+ zen::CbPackage Package = GeneratePackage(Key, PayloadId);
auto Buf = ToBuffer(Package);
// Store packge locally
@@ -1659,7 +1666,8 @@ TEST_CASE("zcache.policy")
LocalCfg.Spawn(LocalInst);
zen::IoHash Key;
- zen::CbPackage Package = GeneratePackage(Key);
+ zen::IoHash PayloadId;
+ zen::CbPackage Package = GeneratePackage(Key, PayloadId);
auto Buf = ToBuffer(Package);
// Store package locally and upstream
@@ -1692,7 +1700,8 @@ TEST_CASE("zcache.policy")
LocalCfg.Spawn(LocalInst);
zen::IoHash Key;
- zen::CbPackage Package = GeneratePackage(Key);
+ zen::IoHash PayloadId;
+ zen::CbPackage Package = GeneratePackage(Key, PayloadId);
auto Buf = ToBuffer(Package);
// Store package locally
@@ -1748,7 +1757,8 @@ TEST_CASE("zcache.policy")
LocalCfg.Spawn(LocalInst);
zen::IoHash Key;
- zen::CbPackage Package = GeneratePackage(Key);
+ zen::IoHash PayloadId;
+ zen::CbPackage Package = GeneratePackage(Key, PayloadId);
auto Buf = ToBuffer(Package);
// Store package upstream
@@ -1791,6 +1801,80 @@ TEST_CASE("zcache.policy")
CHECK(Package.GetAttachments().size() != 0);
}
}
+
+ SUBCASE("skip - 'data' returns empty cache record/payload")
+ {
+ ZenConfig Cfg = ZenConfig::New();
+ ZenServerInstance Instance(TestEnv);
+ const auto Bucket = "test"sv;
+
+ Cfg.Spawn(Instance);
+
+ zen::IoHash Key;
+ zen::IoHash PayloadId;
+ zen::CbPackage Package = GeneratePackage(Key, PayloadId);
+ auto Buf = ToBuffer(Package);
+
+ // Store package
+ {
+ cpr::Response Result = cpr::Put(cpr::Url{"{}/{}/{}"_format(Cfg.BaseUri, Bucket, Key)},
+ cpr::Body{(const char*)Buf.GetData(), Buf.GetSize()},
+ cpr::Header{{"Content-Type", "application/x-ue-cbpkg"}});
+ CHECK(Result.status_code == 201);
+ }
+
+ // Get package
+ {
+ cpr::Response Result = cpr::Get(cpr::Url{"{}/{}/{}?skip=data"_format(Cfg.BaseUri, Bucket, Key)},
+ cpr::Header{{"Accept", "application/x-ue-cbpkg"}});
+ CHECK(Result.status_code == 200);
+ CHECK(Result.text.size() == 0);
+ }
+
+ // Get record
+ {
+ cpr::Response Result = cpr::Get(cpr::Url{"{}/{}/{}?skip=data"_format(Cfg.BaseUri, Bucket, Key)},
+ cpr::Header{{"Accept", "application/x-ue-cbobject"}});
+ CHECK(Result.status_code == 200);
+ CHECK(Result.text.size() == 0);
+ }
+
+ // Get payload
+ {
+ cpr::Response Result = cpr::Get(cpr::Url{"{}/{}/{}/{}?skip=data"_format(Cfg.BaseUri, Bucket, Key, PayloadId)},
+ cpr::Header{{"Accept", "application/x-ue-comp"}});
+ CHECK(Result.status_code == 200);
+ CHECK(Result.text.size() == 0);
+ }
+ }
+
+ SUBCASE("skip - 'data' returns empty binary value")
+ {
+ ZenConfig Cfg = ZenConfig::New();
+ ZenServerInstance Instance(TestEnv);
+ const auto Bucket = "test"sv;
+
+ Cfg.Spawn(Instance);
+
+ zen::IoHash Key;
+ auto BinaryValue = GenerateData(1024, Key);
+
+ // Store binary cache value
+ {
+ cpr::Response Result = cpr::Put(cpr::Url{"{}/{}/{}"_format(Cfg.BaseUri, Bucket, Key)},
+ cpr::Body{(const char*)BinaryValue.GetData(), BinaryValue.GetSize()},
+ cpr::Header{{"Content-Type", "application/octet-stream"}});
+ CHECK(Result.status_code == 201);
+ }
+
+ // Get package
+ {
+ cpr::Response Result = cpr::Get(cpr::Url{"{}/{}/{}?skip=data"_format(Cfg.BaseUri, Bucket, Key)},
+ cpr::Header{{"Accept", "application/octet-stream"}});
+ CHECK(Result.status_code == 200);
+ CHECK(Result.text.size() == 0);
+ }
+ }
}
struct RemoteExecutionRequest