aboutsummaryrefslogtreecommitdiff
path: root/zenserver-test/zenserver-test.cpp
diff options
context:
space:
mode:
authorPer Larsson <[email protected]>2022-02-18 14:48:41 +0100
committerPer Larsson <[email protected]>2022-02-18 14:48:41 +0100
commit08cc02bf1b5cad75ed7b97c0dc7cfc082da537c4 (patch)
tree8fd8e7189c9807280003eabb3040cb35db2e5cd4 /zenserver-test/zenserver-test.cpp
parentWeb socket client is shared between I/O thead and client. (diff)
downloadzen-08cc02bf1b5cad75ed7b97c0dc7cfc082da537c4.tar.xz
zen-08cc02bf1b5cad75ed7b97c0dc7cfc082da537c4.zip
Basic websocket service and test.
Diffstat (limited to 'zenserver-test/zenserver-test.cpp')
-rw-r--r--zenserver-test/zenserver-test.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp
index b7d157d5a..73048b504 100644
--- a/zenserver-test/zenserver-test.cpp
+++ b/zenserver-test/zenserver-test.cpp
@@ -2095,31 +2095,47 @@ TEST_CASE("websocket.basic")
IoDispatcher IoDispatcher(IoCtx);
auto WebSocket = WebSocketClient::Create(IoCtx);
- std::atomic_bool Signaled{false};
+ std::atomic_bool Done{false};
WebSocketEvent Event;
WebSocket->On(WebSocketEvent::kConnected, [&]() {
- Event = WebSocketEvent::kConnected;
- Signaled = true;
+ CbObjectWriter Req;
+ Req.BeginObject("Header");
+ Req << "Method"sv
+ << "TestHelloZen"sv;
+ Req << "CorrelationId" << uint64_t(1);
+ Req.EndObject();
+
+ WebSocket->SendMsg(Req.Save());
});
WebSocket->On(WebSocketEvent::kDisconnected, [&]() {
- Event = WebSocketEvent::kDisconnected;
- Signaled = true;
+ Event = WebSocketEvent::kDisconnected;
+ Done = true;
+ });
+
+ CbPackage Response;
+ WebSocket->OnMessage([&](const CbPackage& Msg) {
+ Response = Msg;
+ Done = true;
});
WebSocket->Connect({.Host = "127.0.0.1", .Port = 8848, .Endpoint = "/zen"});
IoDispatcher.Run();
- while (Signaled == false && IoDispatcher.IsRunning())
+ while (Done == false && IoDispatcher.IsRunning())
{
- std::this_thread::sleep_for(std::chrono::seconds(5));
+ std::this_thread::sleep_for(std::chrono::seconds(2));
};
- CHECK(Event == WebSocketEvent::kConnected);
+ CbObject ResponseObject = Response.GetObject();
+ std::string_view Message = ResponseObject["Result"].AsString();
+ CHECK(Message == "Hello Friend!!"sv);
WebSocket->Disconnect();
+
+ IoDispatcher.Stop();
}
# if 0