diff options
| author | mattpetersepic <[email protected]> | 2022-02-01 08:06:36 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-02-01 08:06:36 -0700 |
| commit | 154743f2d2ff2b7163bcf8d7b76eea3e3579aaba (patch) | |
| tree | aef417b5c9a0d5502c7afdb01c4cc598071e956d /zenserver-test/cachepolicy-tests.cpp | |
| parent | Tweaked remote_build.py TTY output (diff) | |
| download | zen-154743f2d2ff2b7163bcf8d7b76eea3e3579aaba.tar.xz zen-154743f2d2ff2b7163bcf8d7b76eea3e3579aaba.zip | |
Cache policy support (#47)
Add HandleRpc methods for the remaining ICacheStore requests from unreal: PutCacheValues/GetCacheValues. We now have batched versions for PutCacheRecords,GetCacheRecords,PutCacheValues,GetCacheValues,GetCacheChunks. Add support for CachePolicy flags to all of these batched methods.
* Add Batched PutCacheValues/GetCacheValues. Rename old GetCacheValues to GetCacheChunks.
* HandleRpcGetCacheRecords: Receive a CacheRecordPolicy with each key, and skipdata on attachments we already have.
* Changes to CachePolicy copied from Release-5.0 depot. Change serialization to use the key BasePolicy instead of DefaultValuePolicy.
* GetChunks: Read CacheRecords from remote if necessary to find ContentId. Implement QueryLocal, StoreLocal, and SkipData.
Diffstat (limited to 'zenserver-test/cachepolicy-tests.cpp')
| -rw-r--r-- | zenserver-test/cachepolicy-tests.cpp | 47 |
1 files changed, 18 insertions, 29 deletions
diff --git a/zenserver-test/cachepolicy-tests.cpp b/zenserver-test/cachepolicy-tests.cpp index 686ff818c..d3135439c 100644 --- a/zenserver-test/cachepolicy-tests.cpp +++ b/zenserver-test/cachepolicy-tests.cpp @@ -23,8 +23,7 @@ TEST_CASE("cachepolicy") CachePolicy::QueryLocal, CachePolicy::StoreRemote, CachePolicy::SkipData, - CachePolicy::KeepAlive, - CachePolicy::Disable}; + CachePolicy::KeepAlive}; for (CachePolicy Atomic : SomeAtomics) { CHECK(ParseCachePolicy(WriteToString<128>(Atomic)) == Atomic); @@ -73,7 +72,8 @@ TEST_CASE("cacherecordpolicy") { SUBCASE("policy with no values") { - CachePolicy Policy = CachePolicy::SkipData | CachePolicy::QueryLocal; + CachePolicy Policy = CachePolicy::SkipData | CachePolicy::QueryLocal | CachePolicy::PartialRecord; + CachePolicy ValuePolicy = Policy & CacheValuePolicy::PolicyMask; CacheRecordPolicy RecordPolicy; CacheRecordPolicyBuilder Builder(Policy); RecordPolicy = Builder.Build(); @@ -81,8 +81,8 @@ TEST_CASE("cacherecordpolicy") { CHECK(RecordPolicy.IsUniform()); CHECK(RecordPolicy.GetRecordPolicy() == Policy); - CHECK(RecordPolicy.GetDefaultValuePolicy() == Policy); - CHECK(RecordPolicy.GetValuePolicy(Oid::NewOid()) == Policy); + CHECK(RecordPolicy.GetBasePolicy() == Policy); + CHECK(RecordPolicy.GetValuePolicy(Oid::NewOid()) == ValuePolicy); CHECK(RecordPolicy.GetValuePolicies().size() == 0); } SUBCASE("saveload") @@ -90,21 +90,22 @@ TEST_CASE("cacherecordpolicy") CbWriter Writer; RecordPolicy.Save(Writer); CbObject Saved = Writer.Save()->AsObject(); - CacheRecordPolicy Loaded = CacheRecordPolicy::Load(Saved); + CacheRecordPolicy Loaded = CacheRecordPolicy::Load(Saved).Get(); CHECK(Loaded.IsUniform()); CHECK(Loaded.GetRecordPolicy() == Policy); - CHECK(Loaded.GetDefaultValuePolicy() == Policy); - CHECK(Loaded.GetValuePolicy(Oid::NewOid()) == Policy); + CHECK(Loaded.GetBasePolicy() == Policy); + CHECK(Loaded.GetValuePolicy(Oid::NewOid()) == ValuePolicy); CHECK(Loaded.GetValuePolicies().size() == 0); } } SUBCASE("policy with values") { - CachePolicy DefaultPolicy = CachePolicy::StoreRemote | CachePolicy::QueryLocal; + CachePolicy DefaultPolicy = CachePolicy::StoreRemote | CachePolicy::QueryLocal | CachePolicy::PartialRecord; + CachePolicy DefaultValuePolicy = DefaultPolicy & CacheValuePolicy::PolicyMask; CachePolicy PartialOverlap = CachePolicy::StoreRemote; CachePolicy NoOverlap = CachePolicy::QueryRemote; - CachePolicy UnionPolicy = DefaultPolicy | PartialOverlap | NoOverlap; + CachePolicy UnionPolicy = DefaultPolicy | PartialOverlap | NoOverlap | CachePolicy::PartialRecord; CacheRecordPolicy RecordPolicy; CacheRecordPolicyBuilder Builder(DefaultPolicy); @@ -118,10 +119,10 @@ TEST_CASE("cacherecordpolicy") { CHECK(!RecordPolicy.IsUniform()); CHECK(RecordPolicy.GetRecordPolicy() == UnionPolicy); - CHECK(RecordPolicy.GetDefaultValuePolicy() == DefaultPolicy); + CHECK(RecordPolicy.GetBasePolicy() == DefaultPolicy); CHECK(RecordPolicy.GetValuePolicy(PartialOid) == PartialOverlap); CHECK(RecordPolicy.GetValuePolicy(NoOverlapOid) == NoOverlap); - CHECK(RecordPolicy.GetValuePolicy(OtherOid) == DefaultPolicy); + CHECK(RecordPolicy.GetValuePolicy(OtherOid) == DefaultValuePolicy); CHECK(RecordPolicy.GetValuePolicies().size() == 2); } SUBCASE("saveload") @@ -129,33 +130,21 @@ TEST_CASE("cacherecordpolicy") CbWriter Writer; RecordPolicy.Save(Writer); CbObject Saved = Writer.Save()->AsObject(); - CacheRecordPolicy Loaded = CacheRecordPolicy::Load(Saved); + CacheRecordPolicy Loaded = CacheRecordPolicy::Load(Saved).Get(); CHECK(!RecordPolicy.IsUniform()); CHECK(RecordPolicy.GetRecordPolicy() == UnionPolicy); - CHECK(RecordPolicy.GetDefaultValuePolicy() == DefaultPolicy); + CHECK(RecordPolicy.GetBasePolicy() == DefaultPolicy); CHECK(RecordPolicy.GetValuePolicy(PartialOid) == PartialOverlap); CHECK(RecordPolicy.GetValuePolicy(NoOverlapOid) == NoOverlap); - CHECK(RecordPolicy.GetValuePolicy(OtherOid) == DefaultPolicy); + CHECK(RecordPolicy.GetValuePolicy(OtherOid) == DefaultValuePolicy); CHECK(RecordPolicy.GetValuePolicies().size() == 2); } } SUBCASE("parsing invalid text") { - CacheRecordPolicy Loaded = CacheRecordPolicy::Load(CbObject()); - CHECK(Loaded.IsUniform()); - CHECK(Loaded.GetRecordPolicy() == CachePolicy::Default); - CHECK(Loaded.GetDefaultValuePolicy() == CachePolicy::Default); - CHECK(Loaded.GetValuePolicy(Oid::NewOid()) == CachePolicy::Default); - CHECK(Loaded.GetValuePolicies().size() == 0); - - CachePolicy Policy = CachePolicy::SkipData; - Loaded = CacheRecordPolicy::Load(CbObject(), Policy); - CHECK(Loaded.IsUniform()); - CHECK(Loaded.GetRecordPolicy() == Policy); - CHECK(Loaded.GetDefaultValuePolicy() == Policy); - CHECK(Loaded.GetValuePolicy(Oid::NewOid()) == Policy); - CHECK(Loaded.GetValuePolicies().size() == 0); + OptionalCacheRecordPolicy Loaded = CacheRecordPolicy::Load(CbObject()); + CHECK(Loaded.IsNull()); } } |