aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver-test/zenserver-test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenserver-test/zenserver-test.cpp')
-rw-r--r--src/zenserver-test/zenserver-test.cpp321
1 files changed, 145 insertions, 176 deletions
diff --git a/src/zenserver-test/zenserver-test.cpp b/src/zenserver-test/zenserver-test.cpp
index 6aa58ee14..3efa57fdb 100644
--- a/src/zenserver-test/zenserver-test.cpp
+++ b/src/zenserver-test/zenserver-test.cpp
@@ -101,22 +101,23 @@ int
main(int argc, char** argv)
{
using namespace std::literals;
+ using namespace zen;
# if ZEN_USE_MIMALLOC
mi_version();
# endif
- zen::zencore_forcelinktests();
- zen::zenhttp_forcelinktests();
- zen::cacherequests_forcelink();
+ zencore_forcelinktests();
+ zenhttp_forcelinktests();
+ cacherequests_forcelink();
zen::logging::InitializeLogging();
zen::logging::SetLogLevel(zen::logging::level::Debug);
spdlog::set_formatter(std::make_unique<zen::logging::full_test_formatter>("test", std::chrono::system_clock::now()));
- std::filesystem::path ProgramBaseDir = std::filesystem::path(argv[0]).parent_path();
- std::filesystem::path TestBaseDir = ProgramBaseDir.parent_path().parent_path() / ".test";
+ std::filesystem::path ProgramBaseDir = GetRunningExecutablePath().parent_path();
+ std::filesystem::path TestBaseDir = std::filesystem::current_path() / ".test";
// This is pretty janky because we're passing most of the options through to the test
// framework, so we can't just use cxxopts (I think). This should ideally be cleaned up
@@ -153,11 +154,7 @@ TEST_CASE("default.single")
ZenServerInstance Instance(TestEnv);
Instance.SetTestDir(TestDir);
- Instance.SpawnServer(13337);
-
- ZEN_INFO("Waiting...");
-
- Instance.WaitUntilReady();
+ const uint16_t PortNumber = Instance.SpawnServerAndWaitUntilReady();
std::atomic<uint64_t> RequestCount{0};
std::atomic<uint64_t> BatchCounter{0};
@@ -170,7 +167,7 @@ TEST_CASE("default.single")
ZEN_INFO("query batch {} started (thread {})", BatchNo, ThreadId);
cpr::Session cli;
- cli.SetUrl(cpr::Url{"http://localhost:13337/test/hello"});
+ cli.SetUrl(cpr::Url{fmt::format("http://localhost:{}/test/hello", PortNumber)});
for (int i = 0; i < 10000; ++i)
{
@@ -206,17 +203,17 @@ TEST_CASE("multi.basic")
ZenServerInstance Instance1(TestEnv);
std::filesystem::path TestDir1 = TestEnv.CreateNewTestDir();
Instance1.SetTestDir(TestDir1);
- Instance1.SpawnServer(13337);
+ Instance1.SpawnServer();
ZenServerInstance Instance2(TestEnv);
std::filesystem::path TestDir2 = TestEnv.CreateNewTestDir();
Instance2.SetTestDir(TestDir2);
- Instance2.SpawnServer(13338);
+ Instance2.SpawnServer();
ZEN_INFO("Waiting...");
- Instance1.WaitUntilReady();
- Instance2.WaitUntilReady();
+ const uint16_t PortNum1 = Instance1.WaitUntilReady();
+ const uint16_t PortNum2 = Instance2.WaitUntilReady();
std::atomic<uint64_t> RequestCount{0};
std::atomic<uint64_t> BatchCounter{0};
@@ -242,10 +239,10 @@ TEST_CASE("multi.basic")
ZEN_INFO("Running multi-server test...");
- Concurrency::parallel_invoke([&] { IssueTestRequests(13337); },
- [&] { IssueTestRequests(13338); },
- [&] { IssueTestRequests(13337); },
- [&] { IssueTestRequests(13338); });
+ Concurrency::parallel_invoke([&] { IssueTestRequests(PortNum1); },
+ [&] { IssueTestRequests(PortNum2); },
+ [&] { IssueTestRequests(PortNum1); },
+ [&] { IssueTestRequests(PortNum2); });
uint64_t Elapsed = timer.GetElapsedTimeMs();
@@ -261,12 +258,10 @@ TEST_CASE("project.basic")
std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
- const uint16_t PortNumber = 13337;
-
ZenServerInstance Instance1(TestEnv);
Instance1.SetTestDir(TestDir);
- Instance1.SpawnServer(PortNumber);
- Instance1.WaitUntilReady();
+
+ const uint16_t PortNumber = Instance1.SpawnServerAndWaitUntilReady();
std::atomic<uint64_t> RequestCount{0};
@@ -423,29 +418,6 @@ TEST_CASE("project.basic")
zen::NiceRate(RequestCount, (uint32_t)Elapsed, "req"));
}
-# if 0 // this is extremely WIP
-TEST_CASE("project.pipe")
-{
- using namespace std::literals;
-
- std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
-
- const uint16_t PortNumber = 13337;
-
- ZenServerInstance Instance1(TestEnv);
- Instance1.SetTestDir(TestDir);
- Instance1.SpawnServer(PortNumber);
- Instance1.WaitUntilReady();
-
- zen::LocalProjectClient LocalClient(PortNumber);
-
- zen::CbObjectWriter Cbow;
- Cbow << "hey" << 42;
-
- zen::CbObject Response = LocalClient.MessageTransaction(Cbow.Save());
-}
-# endif
-
namespace utils {
struct ZenConfig
@@ -455,43 +427,46 @@ namespace utils {
std::string BaseUri;
std::string Args;
- static ZenConfig New(uint16_t Port = 13337, std::string Args = "")
+ static ZenConfig New(std::string Args = "")
+ {
+ return ZenConfig{.DataDir = TestEnv.CreateNewTestDir(), .Port = TestEnv.GetNewPortNumber(), .Args = std::move(Args)};
+ }
+
+ static ZenConfig New(uint16_t Port, std::string Args = "")
{
- return ZenConfig{.DataDir = TestEnv.CreateNewTestDir(),
- .Port = Port,
- .BaseUri = fmt::format("http://localhost:{}/z$", Port),
- .Args = std::move(Args)};
+ return ZenConfig{.DataDir = TestEnv.CreateNewTestDir(), .Port = Port, .Args = std::move(Args)};
}
- static ZenConfig NewWithUpstream(uint16_t UpstreamPort)
+ static ZenConfig NewWithUpstream(uint16_t Port, uint16_t UpstreamPort)
{
- return New(13337, fmt::format("--debug --upstream-thread-count=0 --upstream-zen-url=http://localhost:{}", UpstreamPort));
+ return New(Port, fmt::format("--debug --upstream-thread-count=0 --upstream-zen-url=http://localhost:{}", UpstreamPort));
}
- static ZenConfig NewWithThreadedUpstreams(std::span<uint16_t> UpstreamPorts, bool Debug)
+ static ZenConfig NewWithThreadedUpstreams(uint16_t NewPort, std::span<uint16_t> UpstreamPorts, bool Debug)
{
std::string Args = Debug ? "--debug" : "";
for (uint16_t Port : UpstreamPorts)
{
Args = fmt::format("{}{}--upstream-zen-url=http://localhost:{}", Args, Args.length() > 0 ? " " : "", Port);
}
- return New(13337, Args);
+ return New(NewPort, Args);
}
void Spawn(ZenServerInstance& Inst)
{
Inst.SetTestDir(DataDir);
Inst.SpawnServer(Port, Args);
- Inst.WaitUntilReady();
+ const uint16_t InstancePort = Inst.WaitUntilReady();
+
+ if (Port != InstancePort)
+ ZEN_DEBUG("relocation detected from {} to {}", Port, InstancePort);
+
+ Port = InstancePort;
+ BaseUri = fmt::format("http://localhost:{}/z$", Port);
}
};
- void SpawnServer(ZenServerInstance& Server, ZenConfig& Cfg)
- {
- Server.SetTestDir(Cfg.DataDir);
- Server.SpawnServer(Cfg.Port, Cfg.Args);
- Server.WaitUntilReady();
- }
+ void SpawnServer(ZenServerInstance& Server, ZenConfig& Cfg) { Cfg.Spawn(Server); }
} // namespace utils
@@ -501,18 +476,16 @@ TEST_CASE("zcache.basic")
std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
- const uint16_t PortNumber = 13337;
-
- const int kIterationCount = 100;
- const auto BaseUri = fmt::format("http://localhost:{}/z$", PortNumber);
+ const int kIterationCount = 100;
auto HashKey = [](int i) -> zen::IoHash { return zen::IoHash::HashBuffer(&i, sizeof i); };
{
ZenServerInstance Instance1(TestEnv);
Instance1.SetTestDir(TestDir);
- Instance1.SpawnServer(PortNumber);
- Instance1.WaitUntilReady();
+
+ const uint16_t PortNumber = Instance1.SpawnServerAndWaitUntilReady();
+ const std::string BaseUri = fmt::format("http://localhost:{}/z$", PortNumber);
// Populate with some simple data
@@ -569,8 +542,9 @@ TEST_CASE("zcache.basic")
{
ZenServerInstance Instance1(TestEnv);
Instance1.SetTestDir(TestDir);
- Instance1.SpawnServer(PortNumber);
- Instance1.WaitUntilReady();
+ const uint16_t PortNumber = Instance1.SpawnServerAndWaitUntilReady();
+
+ const std::string BaseUri = fmt::format("http://localhost:{}/z$", PortNumber);
// Retrieve data again
@@ -647,14 +621,12 @@ TEST_CASE("zcache.cbpackage")
SUBCASE("PUT/GET returns correct package")
{
- std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
- const uint16_t PortNumber = 13337;
- const auto BaseUri = fmt::format("http://localhost:{}/z$", PortNumber);
+ std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
ZenServerInstance Instance1(TestEnv);
Instance1.SetTestDir(TestDir);
- Instance1.SpawnServer(PortNumber);
- Instance1.WaitUntilReady();
+ const uint16_t PortNumber = Instance1.SpawnServerAndWaitUntilReady();
+ const std::string BaseUri = fmt::format("http://localhost:{}/z$", PortNumber);
const std::string_view Bucket = "mosdef"sv;
zen::IoHash Key;
@@ -687,24 +659,21 @@ TEST_CASE("zcache.cbpackage")
SUBCASE("PUT propagates upstream")
{
// Setup local and remote server
- std::filesystem::path LocalDataDir = TestEnv.CreateNewTestDir();
- std::filesystem::path RemoteDataDir = TestEnv.CreateNewTestDir();
- const uint16_t LocalPortNumber = 13337;
- const uint16_t RemotePortNumber = 13338;
-
- const auto LocalBaseUri = fmt::format("http://localhost:{}/z$", LocalPortNumber);
- const auto RemoteBaseUri = fmt::format("http://localhost:{}/z$", RemotePortNumber);
+ std::filesystem::path LocalDataDir = TestEnv.CreateNewTestDir();
+ std::filesystem::path RemoteDataDir = TestEnv.CreateNewTestDir();
ZenServerInstance RemoteInstance(TestEnv);
RemoteInstance.SetTestDir(RemoteDataDir);
- RemoteInstance.SpawnServer(RemotePortNumber);
- RemoteInstance.WaitUntilReady();
+ const uint16_t RemotePortNumber = RemoteInstance.SpawnServerAndWaitUntilReady();
ZenServerInstance LocalInstance(TestEnv);
LocalInstance.SetTestDir(LocalDataDir);
- LocalInstance.SpawnServer(LocalPortNumber,
+ LocalInstance.SpawnServer(TestEnv.GetNewPortNumber(),
fmt::format("--upstream-thread-count=0 --upstream-zen-url=http://localhost:{}", RemotePortNumber));
- LocalInstance.WaitUntilReady();
+ const uint16_t LocalPortNumber = LocalInstance.WaitUntilReady();
+
+ const auto LocalBaseUri = fmt::format("http://localhost:{}/z$", LocalPortNumber);
+ const auto RemoteBaseUri = fmt::format("http://localhost:{}/z$", RemotePortNumber);
const std::string_view Bucket = "mosdef"sv;
zen::IoHash Key;
@@ -750,24 +719,21 @@ TEST_CASE("zcache.cbpackage")
SUBCASE("GET finds upstream when missing in local")
{
// Setup local and remote server
- std::filesystem::path LocalDataDir = TestEnv.CreateNewTestDir();
- std::filesystem::path RemoteDataDir = TestEnv.CreateNewTestDir();
- const uint16_t LocalPortNumber = 13337;
- const uint16_t RemotePortNumber = 13338;
-
- const auto LocalBaseUri = fmt::format("http://localhost:{}/z$", LocalPortNumber);
- const auto RemoteBaseUri = fmt::format("http://localhost:{}/z$", RemotePortNumber);
+ std::filesystem::path LocalDataDir = TestEnv.CreateNewTestDir();
+ std::filesystem::path RemoteDataDir = TestEnv.CreateNewTestDir();
ZenServerInstance RemoteInstance(TestEnv);
RemoteInstance.SetTestDir(RemoteDataDir);
- RemoteInstance.SpawnServer(RemotePortNumber);
- RemoteInstance.WaitUntilReady();
+ const uint16_t RemotePortNumber = RemoteInstance.SpawnServerAndWaitUntilReady();
ZenServerInstance LocalInstance(TestEnv);
LocalInstance.SetTestDir(LocalDataDir);
- LocalInstance.SpawnServer(LocalPortNumber,
+ LocalInstance.SpawnServer(TestEnv.GetNewPortNumber(),
fmt::format("--upstream-thread-count=0 --upstream-zen-url=http://localhost:{}", RemotePortNumber));
- LocalInstance.WaitUntilReady();
+ const uint16_t LocalPortNumber = LocalInstance.WaitUntilReady();
+
+ const auto LocalBaseUri = fmt::format("http://localhost:{}/z$", LocalPortNumber);
+ const auto RemoteBaseUri = fmt::format("http://localhost:{}/z$", RemotePortNumber);
const std::string_view Bucket = "mosdef"sv;
zen::IoHash Key;
@@ -843,15 +809,17 @@ TEST_CASE("zcache.policy")
SUBCASE("query - 'local' does not query upstream (binary)")
{
- ZenConfig UpstreamCfg = ZenConfig::New(13338);
+ ZenConfig UpstreamCfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance UpstreamInst(TestEnv);
- ZenConfig LocalCfg = ZenConfig::NewWithUpstream(13338);
- ZenServerInstance LocalInst(TestEnv);
- const auto Bucket = "legacy"sv;
-
UpstreamCfg.Spawn(UpstreamInst);
+ const uint16_t UpstreamPort = UpstreamCfg.Port;
+
+ ZenConfig LocalCfg = ZenConfig::NewWithUpstream(TestEnv.GetNewPortNumber(), UpstreamPort);
+ ZenServerInstance LocalInst(TestEnv);
LocalCfg.Spawn(LocalInst);
+ const std::string_view Bucket = "legacy"sv;
+
zen::IoHash Key;
auto BinaryValue = GenerateData(1024, Key);
@@ -878,15 +846,17 @@ TEST_CASE("zcache.policy")
SUBCASE("store - 'local' does not store upstream (binary)")
{
- ZenConfig UpstreamCfg = ZenConfig::New(13338);
+ ZenConfig UpstreamCfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance UpstreamInst(TestEnv);
- ZenConfig LocalCfg = ZenConfig::NewWithUpstream(13338);
- ZenServerInstance LocalInst(TestEnv);
- const auto Bucket = "legacy"sv;
-
UpstreamCfg.Spawn(UpstreamInst);
+ const uint16_t UpstreamPort = UpstreamCfg.Port;
+
+ ZenConfig LocalCfg = ZenConfig::NewWithUpstream(TestEnv.GetNewPortNumber(), UpstreamPort);
+ ZenServerInstance LocalInst(TestEnv);
LocalCfg.Spawn(LocalInst);
+ const auto Bucket = "legacy"sv;
+
zen::IoHash Key;
auto BinaryValue = GenerateData(1024, Key);
@@ -913,15 +883,16 @@ TEST_CASE("zcache.policy")
SUBCASE("store - 'local/remote' stores local and upstream (binary)")
{
- ZenConfig UpstreamCfg = ZenConfig::New(13338);
+ ZenConfig UpstreamCfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance UpstreamInst(TestEnv);
- ZenConfig LocalCfg = ZenConfig::NewWithUpstream(13338);
- ZenServerInstance LocalInst(TestEnv);
- const auto Bucket = "legacy"sv;
-
UpstreamCfg.Spawn(UpstreamInst);
+
+ ZenConfig LocalCfg = ZenConfig::NewWithUpstream(TestEnv.GetNewPortNumber(), UpstreamCfg.Port);
+ ZenServerInstance LocalInst(TestEnv);
LocalCfg.Spawn(LocalInst);
+ const auto Bucket = "legacy"sv;
+
zen::IoHash Key;
auto BinaryValue = GenerateData(1024, Key);
@@ -948,15 +919,16 @@ TEST_CASE("zcache.policy")
SUBCASE("query - 'local' does not query upstream (cppackage)")
{
- ZenConfig UpstreamCfg = ZenConfig::New(13338);
+ ZenConfig UpstreamCfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance UpstreamInst(TestEnv);
- ZenConfig LocalCfg = ZenConfig::NewWithUpstream(13338);
- ZenServerInstance LocalInst(TestEnv);
- const auto Bucket = "legacy"sv;
-
UpstreamCfg.Spawn(UpstreamInst);
+
+ ZenConfig LocalCfg = ZenConfig::NewWithUpstream(TestEnv.GetNewPortNumber(), UpstreamCfg.Port);
+ ZenServerInstance LocalInst(TestEnv);
LocalCfg.Spawn(LocalInst);
+ const auto Bucket = "legacy"sv;
+
zen::IoHash Key;
zen::IoHash PayloadId;
zen::CbPackage Package = GeneratePackage(Key, PayloadId);
@@ -985,15 +957,16 @@ TEST_CASE("zcache.policy")
SUBCASE("store - 'local' does not store upstream (cbpackge)")
{
- ZenConfig UpstreamCfg = ZenConfig::New(13338);
+ ZenConfig UpstreamCfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance UpstreamInst(TestEnv);
- ZenConfig LocalCfg = ZenConfig::NewWithUpstream(13338);
- ZenServerInstance LocalInst(TestEnv);
- const auto Bucket = "legacy"sv;
-
UpstreamCfg.Spawn(UpstreamInst);
+
+ ZenConfig LocalCfg = ZenConfig::NewWithUpstream(TestEnv.GetNewPortNumber(), UpstreamCfg.Port);
+ ZenServerInstance LocalInst(TestEnv);
LocalCfg.Spawn(LocalInst);
+ const auto Bucket = "legacy"sv;
+
zen::IoHash Key;
zen::IoHash PayloadId;
zen::CbPackage Package = GeneratePackage(Key, PayloadId);
@@ -1022,15 +995,16 @@ TEST_CASE("zcache.policy")
SUBCASE("store - 'local/remote' stores local and upstream (cbpackage)")
{
- ZenConfig UpstreamCfg = ZenConfig::New(13338);
+ ZenConfig UpstreamCfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance UpstreamInst(TestEnv);
- ZenConfig LocalCfg = ZenConfig::NewWithUpstream(13338);
- ZenServerInstance LocalInst(TestEnv);
- const auto Bucket = "legacy"sv;
-
UpstreamCfg.Spawn(UpstreamInst);
+
+ ZenConfig LocalCfg = ZenConfig::NewWithUpstream(TestEnv.GetNewPortNumber(), UpstreamCfg.Port);
+ ZenServerInstance LocalInst(TestEnv);
LocalCfg.Spawn(LocalInst);
+ const auto Bucket = "legacy"sv;
+
zen::IoHash Key;
zen::IoHash PayloadId;
zen::CbPackage Package = GeneratePackage(Key, PayloadId);
@@ -1059,12 +1033,12 @@ TEST_CASE("zcache.policy")
SUBCASE("skip - 'data' returns cache record without attachments/empty payload")
{
- ZenConfig Cfg = ZenConfig::New();
+ ZenConfig Cfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance Instance(TestEnv);
- const auto Bucket = "test"sv;
-
Cfg.Spawn(Instance);
+ const auto Bucket = "test"sv;
+
zen::IoHash Key;
zen::IoHash PayloadId;
zen::CbPackage Package = GeneratePackage(Key, PayloadId);
@@ -1111,12 +1085,12 @@ TEST_CASE("zcache.policy")
SUBCASE("skip - 'data' returns empty binary value")
{
- ZenConfig Cfg = ZenConfig::New();
+ ZenConfig Cfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance Instance(TestEnv);
- const auto Bucket = "test"sv;
-
Cfg.Spawn(Instance);
+ const auto Bucket = "test"sv;
+
zen::IoHash Key;
auto BinaryValue = GenerateData(1024, Key);
@@ -1245,14 +1219,13 @@ TEST_CASE("zcache.rpc")
SUBCASE("get cache records")
{
- std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
- const uint16_t PortNumber = 13337;
- const auto BaseUri = fmt::format("http://localhost:{}/z$", PortNumber);
+ std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
ZenServerInstance Inst(TestEnv);
Inst.SetTestDir(TestDir);
- Inst.SpawnServer(PortNumber);
- Inst.WaitUntilReady();
+
+ const uint16_t BasePort = Inst.SpawnServerAndWaitUntilReady();
+ const std::string BaseUri = fmt::format("http://localhost:{}/z$", BasePort);
CachePolicy Policy = CachePolicy::Default;
std::vector<zen::CacheKey> Keys = PutCacheRecords(BaseUri, "ue4.ddc"sv, "mastodon"sv, 128);
@@ -1276,14 +1249,12 @@ TEST_CASE("zcache.rpc")
SUBCASE("get missing cache records")
{
- std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
- const uint16_t PortNumber = 13337;
- const auto BaseUri = fmt::format("http://localhost:{}/z$", PortNumber);
+ std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
ZenServerInstance Inst(TestEnv);
Inst.SetTestDir(TestDir);
- Inst.SpawnServer(PortNumber);
- Inst.WaitUntilReady();
+ const uint16_t BasePort = Inst.SpawnServerAndWaitUntilReady();
+ const std::string BaseUri = fmt::format("http://localhost:{}/z$", BasePort);
CachePolicy Policy = CachePolicy::Default;
std::vector<zen::CacheKey> ExistingKeys = PutCacheRecords(BaseUri, "ue4.ddc"sv, "mastodon"sv, 128);
@@ -1324,12 +1295,12 @@ TEST_CASE("zcache.rpc")
{
using namespace utils;
- ZenConfig UpstreamCfg = ZenConfig::New(13338);
+ ZenConfig UpstreamCfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance UpstreamServer(TestEnv);
- ZenConfig LocalCfg = ZenConfig::NewWithUpstream(13338);
- ZenServerInstance LocalServer(TestEnv);
-
SpawnServer(UpstreamServer, UpstreamCfg);
+
+ ZenConfig LocalCfg = ZenConfig::NewWithUpstream(TestEnv.GetNewPortNumber(), UpstreamCfg.Port);
+ ZenServerInstance LocalServer(TestEnv);
SpawnServer(LocalServer, LocalCfg);
std::vector<zen::CacheKey> Keys = PutCacheRecords(UpstreamCfg.BaseUri, "ue4.ddc"sv, "mastodon"sv, 4);
@@ -1349,12 +1320,12 @@ TEST_CASE("zcache.rpc")
{
using namespace utils;
- ZenConfig UpstreamCfg = ZenConfig::New(13338);
+ ZenConfig UpstreamCfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance UpstreamServer(TestEnv);
- ZenConfig LocalCfg = ZenConfig::NewWithUpstream(13338);
- ZenServerInstance LocalServer(TestEnv);
-
SpawnServer(UpstreamServer, UpstreamCfg);
+
+ ZenConfig LocalCfg = ZenConfig::NewWithUpstream(TestEnv.GetNewPortNumber(), UpstreamCfg.Port);
+ ZenServerInstance LocalServer(TestEnv);
SpawnServer(LocalServer, LocalCfg);
std::vector<zen::CacheKey> Keys = PutCacheRecords(UpstreamCfg.BaseUri, "ue4.ddc"sv, "mastodon"sv, 4);
@@ -1376,14 +1347,13 @@ TEST_CASE("zcache.rpc")
{
using namespace utils;
- std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
- const uint16_t PortNumber = 13337;
- const auto BaseUri = fmt::format("http://localhost:{}/z$", PortNumber);
+ std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
ZenServerInstance Inst(TestEnv);
Inst.SetTestDir(TestDir);
- Inst.SpawnServer(PortNumber);
- Inst.WaitUntilReady();
+
+ const uint16_t BasePort = Inst.SpawnServerAndWaitUntilReady();
+ const std::string BaseUri = fmt::format("http://localhost:{}/z$", BasePort);
std::vector<zen::CacheKey> SmallKeys = PutCacheRecords(BaseUri, "ue4.ddc"sv, "mastodon"sv, 4, 1024);
std::vector<zen::CacheKey> LargeKeys = PutCacheRecords(BaseUri, "ue4.ddc"sv, "mastodon"sv, 4, 1024 * 1024 * 16, SmallKeys.size());
@@ -1525,26 +1495,25 @@ TEST_CASE("zcache.failing.upstream")
using namespace std::literals;
using namespace utils;
- const uint16_t Upstream1PortNumber = 13338;
- ZenConfig Upstream1Cfg = ZenConfig::New(Upstream1PortNumber);
+ ZenConfig Upstream1Cfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance Upstream1Server(TestEnv);
+ SpawnServer(Upstream1Server, Upstream1Cfg);
- const uint16_t Upstream2PortNumber = 13339;
- ZenConfig Upstream2Cfg = ZenConfig::New(Upstream2PortNumber);
+ ZenConfig Upstream2Cfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance Upstream2Server(TestEnv);
+ SpawnServer(Upstream2Server, Upstream2Cfg);
- std::vector<std::uint16_t> UpstreamPorts = {Upstream1PortNumber, Upstream2PortNumber};
- ZenConfig LocalCfg = ZenConfig::NewWithThreadedUpstreams(UpstreamPorts, false);
+ std::vector<std::uint16_t> UpstreamPorts = {Upstream1Cfg.Port, Upstream2Cfg.Port};
+ ZenConfig LocalCfg = ZenConfig::NewWithThreadedUpstreams(TestEnv.GetNewPortNumber(), UpstreamPorts, false);
LocalCfg.Args += (" --upstream-thread-count 2");
ZenServerInstance LocalServer(TestEnv);
- const uint16_t LocalPortNumber = 13337;
- const auto LocalUri = fmt::format("http://localhost:{}/z$", LocalPortNumber);
- const auto Upstream1Uri = fmt::format("http://localhost:{}/z$", Upstream1PortNumber);
- const auto Upstream2Uri = fmt::format("http://localhost:{}/z$", Upstream2PortNumber);
-
- SpawnServer(Upstream1Server, Upstream1Cfg);
- SpawnServer(Upstream2Server, Upstream2Cfg);
SpawnServer(LocalServer, LocalCfg);
+
+ const uint16_t LocalPortNumber = LocalCfg.Port;
+ const auto LocalUri = fmt::format("http://localhost:{}/z$", LocalPortNumber);
+ const auto Upstream1Uri = fmt::format("http://localhost:{}/z$", Upstream1Cfg.Port);
+ const auto Upstream2Uri = fmt::format("http://localhost:{}/z$", Upstream2Cfg.Port);
+
bool Upstream1Running = true;
bool Upstream2Running = true;
@@ -1785,16 +1754,16 @@ TEST_CASE("zcache.rpc.allpolicies")
using namespace std::literals;
using namespace utils;
- ZenConfig UpstreamCfg = ZenConfig::New(13338);
+ ZenConfig UpstreamCfg = ZenConfig::New(TestEnv.GetNewPortNumber());
ZenServerInstance UpstreamServer(TestEnv);
- ZenConfig LocalCfg = ZenConfig::NewWithUpstream(13338);
- ZenServerInstance LocalServer(TestEnv);
- const uint16_t LocalPortNumber = 13337;
- const auto BaseUri = fmt::format("http://localhost:{}/z$", LocalPortNumber);
-
SpawnServer(UpstreamServer, UpstreamCfg);
+
+ ZenConfig LocalCfg = ZenConfig::NewWithUpstream(TestEnv.GetNewPortNumber(), UpstreamCfg.Port);
+ ZenServerInstance LocalServer(TestEnv);
SpawnServer(LocalServer, LocalCfg);
+ const auto BaseUri = fmt::format("http://localhost:{}/z$", LocalServer.GetBasePort());
+
std::string_view TestVersion = "F72150A02AE34B57A9EC91D36BA1CE08"sv;
std::string_view TestBucket = "allpoliciestest"sv;
std::string_view TestNamespace = "ue4.ddc"sv;
@@ -2321,7 +2290,7 @@ public:
Callback(*Instance);
- Instance->SpawnServer(13337 + i, AdditionalServerArgs);
+ Instance->SpawnServer(TestEnv.GetNewPortNumber(), AdditionalServerArgs);
}
for (int i = 0; i < m_ServerCount; ++i)