From bd100e777190f68c4da11d4f7a1c4bf8274211d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Tue, 10 Apr 2018 15:04:10 +0200 Subject: QWebSocket: Add 'bytesToWrite' Add the well-known 'bytesToWrite' function to QWebSocket. Previously the only way to know how many bytes were left to be written was to make a guesstimate on the overhead your message would get and then keep track of the amount sent using the 'bytesWritten' signal. The tests compare using '>' because there is overhead from the headers. [ChangeLog][QWebSocket] Added the bytesToWrite function to QWebSocket. Call this function to see how many bytes are left to write. Change-Id: I82f17a98b582ee3bc02f0c47597b4a6717761f12 Reviewed-by: Timur Pocheptsov Reviewed-by: Edward Welbourne --- tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp | 8 ++++++++ tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) (limited to 'tests') diff --git a/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp b/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp index ac54270..e80eeb1 100644 --- a/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp +++ b/tests/auto/websockets/qwebsocket/tst_qwebsocket.cpp @@ -434,9 +434,13 @@ void tst_QWebSocket::tst_sendTextMessage() QUrl urlConnected = arguments.at(0).toUrl(); QCOMPARE(urlConnected, url); + QCOMPARE(socket.bytesToWrite(), 0); socket.sendTextMessage(QStringLiteral("Hello world!")); + QVERIFY(socket.bytesToWrite() > 12); // 12 + a few extra bytes for header QVERIFY(textMessageReceived.wait(500)); + QCOMPARE(socket.bytesToWrite(), 0); + QCOMPARE(textMessageReceived.count(), 1); QCOMPARE(binaryMessageReceived.count(), 0); QCOMPARE(binaryFrameReceived.count(), 0); @@ -508,9 +512,13 @@ void tst_QWebSocket::tst_sendBinaryMessage() QTRY_COMPARE(socketConnectedSpy.count(), 1); QCOMPARE(socket.state(), QAbstractSocket::ConnectedState); + QCOMPARE(socket.bytesToWrite(), 0); socket.sendBinaryMessage(QByteArrayLiteral("Hello world!")); + QVERIFY(socket.bytesToWrite() > 12); // 12 + a few extra bytes for header QVERIFY(binaryMessageReceived.wait(500)); + QCOMPARE(socket.bytesToWrite(), 0); + QCOMPARE(textMessageReceived.count(), 0); QCOMPARE(textFrameReceived.count(), 0); QCOMPARE(binaryMessageReceived.count(), 1); diff --git a/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp b/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp index 8a3760d..a2f3c15 100644 --- a/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp +++ b/tests/auto/websockets/qwebsocketserver/tst_qwebsocketserver.cpp @@ -640,6 +640,14 @@ void tst_QWebSocketServer::tst_handleConnection() QTRY_COMPARE(wsMessageReceivedSpy.count(), 1); QList arguments = wsMessageReceivedSpy.takeFirst(); QCOMPARE(arguments.first().toString(), QString("dummy")); + + QSignalSpy clientMessageReceivedSpy(&webSocket, &QWebSocket::textMessageReceived); + webServerSocket->sendTextMessage("hello"); + QVERIFY(webServerSocket->bytesToWrite() > 5); // 5 + a few extra bytes for header + QTRY_COMPARE(webServerSocket->bytesToWrite(), 0); + QTRY_COMPARE(clientMessageReceivedSpy.count(), 1); + arguments = clientMessageReceivedSpy.takeFirst(); + QCOMPARE(arguments.first().toString(), QString("hello")); } QTEST_MAIN(tst_QWebSocketServer) -- cgit v1.2.1