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

Method closeEcho

Tests/Libraries/Http/HttpWebSocketLifecycleTest.cpp:301–335  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

299}
300
301void SC::HttpWebSocketLifecycleTest::closeEcho()
302{
303 const uint8_t maskKey[4] = {9, 8, 7, 6};
304
305 HttpWebSocketEndpoint client;
306 client.reset(HttpWebSocketEndpointRole::Client);
307 char closeStorage[64] = {0};
308 Span<const char> closeFrame;
309 SC_TEST_EXPECT(client.sendClose(1000, "bye"_a8.toCharSpan(), maskKey, closeStorage, closeFrame));
310
311 HttpWebSocketEndpoint server;
312 server.reset(HttpWebSocketEndpointRole::Server);
313
314 size_t consumed = 0;
315 SC_TEST_EXPECT(server.receive({closeStorage, closeFrame.sizeInBytes()}, consumed));
316 SC_TEST_EXPECT(server.hasCloseBeenReceived());
317 SC_TEST_EXPECT(server.hasCloseBeenSent());
318
319 Span<const char> echoFrame;
320 SC_TEST_EXPECT(server.getPendingControlFrame(echoFrame));
321
322 FrameCollector collector;
323 HttpWebSocketFrameReader reader;
324 reader.reset(HttpWebSocketEndpointRole::Client);
325 reader.onFrameHeader.bind<FrameCollector, &FrameCollector::onHeader>(collector);
326 reader.onFramePayload.bind<FrameCollector, &FrameCollector::onPayload>(collector);
327
328 size_t echoConsumed = 0;
329 SC_TEST_EXPECT(reader.parse({const_cast<char*>(echoFrame.data()), echoFrame.sizeInBytes()}, echoConsumed));
330 SC_TEST_EXPECT(collector.header.opcode == HttpWebSocketOpcode::Close);
331 SC_TEST_EXPECT(collector.payloadSize == 5);
332 SC_TEST_EXPECT(static_cast<uint8_t>(collector.payload[0]) == 0x03);
333 SC_TEST_EXPECT(static_cast<uint8_t>(collector.payload[1]) == 0xE8);
334 SC_TEST_EXPECT(bytesEqual({collector.payload + 2, collector.payloadSize - 2}, "bye"));
335}
336
337void SC::HttpWebSocketLifecycleTest::pendingControlBackpressure()
338{

Callers

nothing calls this directly

Calls 8

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

Tested by

no test coverage detected