From b5662a170fb202aab23d587d578a36c768f44123 Mon Sep 17 00:00:00 2001 From: Alexey Edelev Date: Fri, 4 Nov 2022 19:31:32 +0100 Subject: [PATCH] grpc: Add the missing call of the finished() signal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the missing call of the finished() signal to the native-based implementation of gRPC stream. Emit both errorOccured and finished when the stream is finished with error. This behavior is aligned with the behavior of QNetworkReply. Task-number: QTBUG-108212 Change-Id: I3f45e33c89aca1cd258066a9f7b3df846ceeccc2 Reviewed-by: MÃ¥rten Nordheim --- src/grpc/qgrpcchannel.cpp | 1 + src/grpc/qgrpchttp2channel.cpp | 3 +-- tests/auto/grpc/client/tst_grpc_client.cpp | 11 +---------- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/grpc/qgrpcchannel.cpp b/src/grpc/qgrpcchannel.cpp index b4fd26c9..98d6504f 100644 --- a/src/grpc/qgrpcchannel.cpp +++ b/src/grpc/qgrpcchannel.cpp @@ -289,6 +289,7 @@ void QGrpcChannelPrivate::stream(QGrpcStream *stream, const QString &service, if (sub->status.code() != QGrpcStatus::Ok) { stream->errorOccurred(sub->status); } + stream->finished(); }); *abortConnection = QObject::connect(stream, &QGrpcStream::finished, sub.get(), diff --git a/src/grpc/qgrpchttp2channel.cpp b/src/grpc/qgrpchttp2channel.cpp index 74acbe6b..e8294c50 100644 --- a/src/grpc/qgrpchttp2channel.cpp +++ b/src/grpc/qgrpchttp2channel.cpp @@ -390,9 +390,8 @@ void QGrpcHttp2Channel::stream(QGrpcStream *grpcStream, const QString &service, grpcStream->errorOccurred(QGrpcStatus{ grpcStatus, QLatin1StringView(networkReply->rawHeader(GrpcStatusMessage)) }); - } else { - grpcStream->finished(); } + grpcStream->finished(); break; } default: diff --git a/tests/auto/grpc/client/tst_grpc_client.cpp b/tests/auto/grpc/client/tst_grpc_client.cpp index 42e37490..7579ea4b 100644 --- a/tests/auto/grpc/client/tst_grpc_client.cpp +++ b/tests/auto/grpc/client/tst_grpc_client.cpp @@ -260,9 +260,6 @@ void QtGrpcClientTest::StreamStringTest() void QtGrpcClientTest::StreamStringAndAbortTest() { - // TODO - QSKIP("Fix-me: QTBUG-10821"); - SimpleStringMessage result; SimpleStringMessage request; request.setTestFieldString("Stream"); @@ -284,15 +281,12 @@ void QtGrpcClientTest::StreamStringAndAbortTest() void QtGrpcClientTest::StreamStringAndDeferredAbortTest() { - // TODO - QSKIP("Fix-me: QTBUG-10821"); - SimpleStringMessage result; SimpleStringMessage request; request.setTestFieldString("Stream"); auto stream = _client->streamTestMethodServerStream(request); - QTimer::singleShot(3100, stream.get(), [stream]() { stream->abort(); }); + QTimer::singleShot(3400, stream.get(), [stream]() { stream->abort(); }); QSignalSpy streamFinishedSpy(stream.get(), &QGrpcStream::finished); QVERIFY(streamFinishedSpy.isValid()); @@ -456,9 +450,6 @@ void QtGrpcClientTest::StreamAndGetAsyncReplyTest() void QtGrpcClientTest::MultipleStreamsTest() { - // TODO - QSKIP("Fix-me: QTBUG-10821"); - SimpleStringMessage result; SimpleStringMessage request; request.setTestFieldString("Stream");