diff options
| author | Per Larsson <[email protected]> | 2022-02-21 14:22:38 +0100 |
|---|---|---|
| committer | Per Larsson <[email protected]> | 2022-02-21 14:22:38 +0100 |
| commit | fd9f9086b3ddd0c38fa87d7e49f6341dacdcc125 (patch) | |
| tree | 50be00e62f1e0d3a0521d08d5c7f00fe7787e014 /zenserver-test/zenserver-test.cpp | |
| parent | Basic websocket service and test. (diff) | |
| download | zen-fd9f9086b3ddd0c38fa87d7e49f6341dacdcc125.tar.xz zen-fd9f9086b3ddd0c38fa87d7e49f6341dacdcc125.zip | |
Refactored websocket message.
Diffstat (limited to 'zenserver-test/zenserver-test.cpp')
| -rw-r--r-- | zenserver-test/zenserver-test.cpp | 54 |
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(); |