MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / automaticPong

Method automaticPong

Tests/Libraries/Http/HttpWebSocketLifecycleTest.cpp:267–299  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

265}
266
267void SC::HttpWebSocketLifecycleTest::automaticPong()
268{
269 const uint8_t maskKey[4] = {1, 2, 3, 4};
270
271 HttpWebSocketEndpoint client;
272 client.reset(HttpWebSocketEndpointRole::Client);
273 char pingStorage[64] = {0};
274 Span<const char> pingFrame;
275 SC_TEST_EXPECT(client.sendPing("hi"_a8.toCharSpan(), maskKey, pingStorage, pingFrame));
276
277 HttpWebSocketEndpoint server;
278 server.reset(HttpWebSocketEndpointRole::Server);
279
280 size_t consumed = 0;
281 SC_TEST_EXPECT(server.receive({pingStorage, pingFrame.sizeInBytes()}, consumed));
282 SC_TEST_EXPECT(consumed == pingFrame.sizeInBytes());
283 SC_TEST_EXPECT(server.hasPendingControlFrame());
284
285 Span<const char> pongFrame;
286 SC_TEST_EXPECT(server.getPendingControlFrame(pongFrame));
287
288 FrameCollector collector;
289 HttpWebSocketFrameReader reader;
290 reader.reset(HttpWebSocketEndpointRole::Client);
291 reader.onFrameHeader.bind<FrameCollector, &FrameCollector::onHeader>(collector);
292 reader.onFramePayload.bind<FrameCollector, &FrameCollector::onPayload>(collector);
293
294 size_t pongConsumed = 0;
295 SC_TEST_EXPECT(reader.parse({const_cast<char*>(pongFrame.data()), pongFrame.sizeInBytes()}, pongConsumed));
296 SC_TEST_EXPECT(collector.headers == 1);
297 SC_TEST_EXPECT(collector.header.opcode == HttpWebSocketOpcode::Pong);
298 SC_TEST_EXPECT(bytesEqual({collector.payload, collector.payloadSize}, "hi"));
299}
300
301void SC::HttpWebSocketLifecycleTest::closeEcho()
302{

Callers

nothing calls this directly

Calls 8

bytesEqualFunction · 0.85
sendPingMethod · 0.80
resetMethod · 0.45
receiveMethod · 0.45
sizeInBytesMethod · 0.45
parseMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected