From 02c19b524e54bc8f2fc36fecd43310a5ed665fcd Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Sat, 22 May 2021 11:41:08 +0200 Subject: Structured cache changes - Changed cachestore to use BasicFile and TCasLog instead of local variants - Added structured cache persistence tests --- zenserver-test/zenserver-test.cpp | 69 +++++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 21 deletions(-) (limited to 'zenserver-test/zenserver-test.cpp') diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp index b9fa96ca0..dbe7ac9b9 100644 --- a/zenserver-test/zenserver-test.cpp +++ b/zenserver-test/zenserver-test.cpp @@ -1100,38 +1100,65 @@ TEST_CASE("z$.basic") const uint16_t PortNumber = 13337; - ZenServerInstance Instance1(TestEnv); - Instance1.SetTestDir(TestDir); - Instance1.SpawnServer(PortNumber); - Instance1.WaitUntilReady(); + const int kIterationCount = 100; + const auto BaseUri = "http://localhost:{}/z$"_format(PortNumber); - auto BaseUri = "http://localhost:{}/z$"_format(PortNumber); + { + ZenServerInstance Instance1(TestEnv); + Instance1.SetTestDir(TestDir); + Instance1.SpawnServer(PortNumber); + Instance1.WaitUntilReady(); - // Populate with some simple data + // Populate with some simple data - for (int i = 0; i < 100; ++i) - { - zen::CbObjectWriter Cbo; - Cbo << "index" << i; + for (int i = 0; i < kIterationCount; ++i) + { + zen::CbObjectWriter Cbo; + Cbo << "index" << i; + + zen::MemoryOutStream MemOut; + zen::BinaryWriter Writer{MemOut}; + Cbo.Save(Writer); + + zen::IoHash Key = zen::IoHash::HashMemory(&i, sizeof i); + + cpr::Response Result = cpr::Put(cpr::Url{"{}/{}/{}"_format(BaseUri, "test", Key)}, + cpr::Body{(const char*)MemOut.Data(), MemOut.Size()}, + cpr::Header{{"Content-Type", "application/x-ue-cb"}}); - zen::MemoryOutStream MemOut; - zen::BinaryWriter Writer{MemOut}; - Cbo.Save(Writer); + CHECK(Result.status_code == 201); + } + + // Retrieve data + + for (int i = 0; i < kIterationCount; ++i) + { + zen::IoHash Key = zen::IoHash::HashMemory(&i, sizeof i); - zen::IoHash Key = zen::IoHash::HashMemory(&i, sizeof i); + cpr::Response Result = cpr::Get(cpr::Url{"{}/{}/{}"_format(BaseUri, "test", Key)}); - cpr::Response Result = cpr::Put(cpr::Url{"{}/{}/{}"_format(BaseUri, "test", Key)}, - cpr::Body{(const char*)MemOut.Data(), MemOut.Size()}, - cpr::Header{{"Content-Type", "application/x-ue-cb"}}); + CHECK(Result.status_code == 200); + } } - // Retrieve data + // Verify that the data persists between process runs (the previous server has exited at this point) - for (int i = 0; i < 100; ++i) { - zen::IoHash Key = zen::IoHash::HashMemory(&i, sizeof i); + ZenServerInstance Instance1(TestEnv); + Instance1.SetTestDir(TestDir); + Instance1.SpawnServer(PortNumber); + Instance1.WaitUntilReady(); - cpr::Response Result = cpr::Get(cpr::Url{"{}/{}/{}"_format(BaseUri, "test", Key)}); + // Retrieve data again + + for (int i = 0; i < kIterationCount; ++i) + { + zen::IoHash Key = zen::IoHash::HashMemory(&i, sizeof i); + + cpr::Response Result = cpr::Get(cpr::Url{"{}/{}/{}"_format(BaseUri, "test", Key)}); + + CHECK(Result.status_code == 200); + } } } -- cgit v1.2.3