aboutsummaryrefslogtreecommitdiff
path: root/zenserver-test/zenserver-test.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2022-02-21 14:22:38 +0100
committerPer Larsson <[email protected]>2022-02-21 14:22:38 +0100
commitfd9f9086b3ddd0c38fa87d7e49f6341dacdcc125 (patch)
tree50be00e62f1e0d3a0521d08d5c7f00fe7787e014 /zenserver-test/zenserver-test.cpp
parentBasic websocket service and test. (diff)
downloadzen-fd9f9086b3ddd0c38fa87d7e49f6341dacdcc125.tar.xz
zen-fd9f9086b3ddd0c38fa87d7e49f6341dacdcc125.zip
Refactored websocket message.
Diffstat (limited to 'zenserver-test/zenserver-test.cpp')
-rw-r--r--zenserver-test/zenserver-test.cpp54
1 files changed, 21 insertions, 33 deletions
diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp
index 73048b504..78829a2d1 100644
--- a/zenserver-test/zenserver-test.cpp
+++ b/zenserver-test/zenserver-test.cpp
@@ -2083,8 +2083,9 @@ TEST_CASE("http.package")
TEST_CASE("websocket.basic")
{
- std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
- const uint16_t PortNumber = 13337;
+ std::filesystem::path TestDir = TestEnv.CreateNewTestDir();
+ const uint16_t PortNumber = 13337;
+ const auto MaxWaitTime = std::chrono::seconds(5);
ZenServerInstance Inst(TestEnv);
Inst.SetTestDir(TestDir);
@@ -2095,43 +2096,30 @@ TEST_CASE("websocket.basic")
IoDispatcher IoDispatcher(IoCtx);
auto WebSocket = WebSocketClient::Create(IoCtx);
- std::atomic_bool Done{false};
- WebSocketEvent Event;
-
- WebSocket->On(WebSocketEvent::kConnected, [&]() {
- CbObjectWriter Req;
- Req.BeginObject("Header");
- Req << "Method"sv
- << "TestHelloZen"sv;
- Req << "CorrelationId" << uint64_t(1);
- Req.EndObject();
-
- WebSocket->SendMsg(Req.Save());
- });
+ auto ConnectFuture = WebSocket->Connect({.Host = "127.0.0.1", .Port = 8848, .Endpoint = "/zen"});
+ IoDispatcher.Run();
- WebSocket->On(WebSocketEvent::kDisconnected, [&]() {
- Event = WebSocketEvent::kDisconnected;
- Done = true;
- });
+ ConnectFuture.wait_for(MaxWaitTime);
+ CHECK(ConnectFuture.get());
- CbPackage Response;
- WebSocket->OnMessage([&](const CbPackage& Msg) {
- Response = Msg;
- Done = true;
- });
+ for (size_t Idx = 0; Idx < 10; Idx++)
+ {
+ CbObjectWriter Request;
+ Request << "Method"sv
+ << "SayHello"sv;
- WebSocket->Connect({.Host = "127.0.0.1", .Port = 8848, .Endpoint = "/zen"});
+ WebSocketMessage RequestMsg;
+ RequestMsg.SetMessageType(WebSocketMessageType::kRequest);
+ RequestMsg.SetBody(Request.Save());
- IoDispatcher.Run();
+ auto ResponseFuture = WebSocket->SendRequest(std::move(RequestMsg));
+ ResponseFuture.wait_for(MaxWaitTime);
- while (Done == false && IoDispatcher.IsRunning())
- {
- std::this_thread::sleep_for(std::chrono::seconds(2));
- };
+ CbObject Response = ResponseFuture.get().Body().GetObject();
+ std::string_view Message = Response["Result"].AsString();
- CbObject ResponseObject = Response.GetObject();
- std::string_view Message = ResponseObject["Result"].AsString();
- CHECK(Message == "Hello Friend!!"sv);
+ CHECK(Message == "Hello Friend!!"sv);
+ }
WebSocket->Disconnect();