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.cpp38
1 files changed, 30 insertions, 8 deletions
diff --git a/src/zenserver-test/zenserver-test.cpp b/src/zenserver-test/zenserver-test.cpp
index 8c95835fd..2f52e3225 100644
--- a/src/zenserver-test/zenserver-test.cpp
+++ b/src/zenserver-test/zenserver-test.cpp
@@ -2933,6 +2933,28 @@ TEST_CASE("project.remote")
CHECK(SourceOps == TargetOps);
};
+ auto WaitForCompletion = [&Session](ZenServerInstance& Server, const cpr::Response& Response) {
+ CHECK(IsHttpSuccessCode(Response.status_code));
+ uint64_t JobId = ParseInt<uint64_t>(Response.text).value_or(0);
+ CHECK(JobId != 0);
+ Session.SetUrl(fmt::format("{}/admin/jobs/{}", Server.GetBaseUri(), JobId));
+ Session.SetHeader(cpr::Header{{"Accept", std::string(ToString(ZenContentType::kCbObject))}});
+ while (true)
+ {
+ cpr::Response StatusResponse = Session.Get();
+ CHECK(IsHttpSuccessCode(StatusResponse.status_code));
+ CbObject ReponseObject =
+ LoadCompactBinaryObject(IoBuffer(IoBuffer::Wrap, StatusResponse.text.data(), StatusResponse.text.size()));
+ std::string_view Status = ReponseObject["Status"sv].AsString();
+ CHECK(Status != "Aborted"sv);
+ if (Status == "Complete"sv)
+ {
+ return;
+ }
+ Sleep(10);
+ }
+ };
+
SUBCASE("File")
{
ScopedTemporaryDirectory TempDir;
@@ -2961,7 +2983,7 @@ TEST_CASE("project.remote")
Session.SetBody(AsBody(Payload));
Session.SetHeader(cpr::Header{{"Content-Type", "application/x-ue-cb"}});
cpr::Response Response = Session.Post();
- CHECK(IsHttpSuccessCode(Response.status_code));
+ WaitForCompletion(Servers.GetInstance(0), Response);
}
{
MakeProject(Session, Servers.GetInstance(1).GetBaseUri(), "proj0_copy");
@@ -2990,7 +3012,7 @@ TEST_CASE("project.remote")
Session.SetHeader(cpr::Header{{"Content-Type", "application/x-ue-cb"}});
cpr::Response Response = Session.Post();
- CHECK(IsHttpSuccessCode(Response.status_code));
+ WaitForCompletion(Servers.GetInstance(1), Response);
}
ValidateAttachments(1, "proj0_copy", "oplog0_copy");
ValidateOplog(1, "proj0_copy", "oplog0_copy");
@@ -3025,7 +3047,7 @@ TEST_CASE("project.remote")
Session.SetBody(AsBody(Payload));
Session.SetHeader(cpr::Header{{"Content-Type", "application/x-ue-cb"}});
cpr::Response Response = Session.Post();
- CHECK(IsHttpSuccessCode(Response.status_code));
+ WaitForCompletion(Servers.GetInstance(0), Response);
}
{
MakeProject(Session, Servers.GetInstance(1).GetBaseUri(), "proj0_copy");
@@ -3052,7 +3074,7 @@ TEST_CASE("project.remote")
Session.SetBody(AsBody(Payload));
Session.SetHeader(cpr::Header{{"Content-Type", "application/x-ue-cb"}});
cpr::Response Response = Session.Post();
- CHECK(IsHttpSuccessCode(Response.status_code));
+ WaitForCompletion(Servers.GetInstance(1), Response);
}
ValidateAttachments(1, "proj0_copy", "oplog0_copy");
ValidateOplog(1, "proj0_copy", "oplog0_copy");
@@ -3086,7 +3108,7 @@ TEST_CASE("project.remote")
Session.SetBody(AsBody(Payload));
Session.SetHeader(cpr::Header{{"Content-Type", "application/x-ue-cb"}});
cpr::Response Response = Session.Post();
- CHECK(IsHttpSuccessCode(Response.status_code));
+ WaitForCompletion(Servers.GetInstance(0), Response);
}
{
MakeProject(Session, Servers.GetInstance(1).GetBaseUri(), "proj0_copy");
@@ -3113,7 +3135,7 @@ TEST_CASE("project.remote")
Session.SetBody(AsBody(Payload));
Session.SetHeader(cpr::Header{{"Content-Type", "application/x-ue-cb"}});
cpr::Response Response = Session.Post();
- CHECK(IsHttpSuccessCode(Response.status_code));
+ WaitForCompletion(Servers.GetInstance(1), Response);
}
ValidateAttachments(1, "proj0_copy", "oplog0_copy");
ValidateOplog(1, "proj0_copy", "oplog0_copy");
@@ -3154,7 +3176,7 @@ TEST_CASE("project.remote")
Session.SetBody(AsBody(Payload));
Session.SetHeader(cpr::Header{{"Content-Type", "application/x-ue-cb"}});
cpr::Response Response = Session.Post();
- CHECK(IsHttpSuccessCode(Response.status_code));
+ WaitForCompletion(Servers.GetInstance(0), Response);
}
ValidateAttachments(1, "proj0_copy", "oplog0_copy");
ValidateOplog(1, "proj0_copy", "oplog0_copy");
@@ -3188,7 +3210,7 @@ TEST_CASE("project.remote")
Session.SetBody(AsBody(Payload));
Session.SetHeader(cpr::Header{{"Content-Type", "application/x-ue-cb"}});
cpr::Response Response = Session.Post();
- CHECK(IsHttpSuccessCode(Response.status_code));
+ WaitForCompletion(Servers.GetInstance(2), Response);
}
ValidateAttachments(2, "proj1", "oplog1");
ValidateOplog(2, "proj1", "oplog1");