|
@@ -88,10 +88,8 @@ TEST_F(ClientTest, StringEchoAsyncTest)
|
|
|
QEventLoop waiter;
|
|
|
|
|
|
AsyncReply *reply = testClient.testMethod(request);
|
|
|
- QObject::connect(reply, &AsyncReply::finished, &m_app, [reply, &result, &waiter, &testClient]() {
|
|
|
- if (testClient.lastError() == AbstractChannel::StatusCodes::Ok) {
|
|
|
- result = reply->read<SimpleStringMessage>();
|
|
|
- }
|
|
|
+ QObject::connect(reply, &AsyncReply::finished, &m_app, [reply, &result, &waiter]() {
|
|
|
+ result = reply->read<SimpleStringMessage>();
|
|
|
waiter.quit();
|
|
|
});
|
|
|
|
|
@@ -107,10 +105,8 @@ TEST_F(ClientTest, StringEchoAsync2Test)
|
|
|
SimpleStringMessage request;
|
|
|
request.setTestFieldString("Hello beach!");
|
|
|
QEventLoop waiter;
|
|
|
- testClient.testMethod(request, &m_app, [&result, &waiter, &testClient](AsyncReply *reply) {
|
|
|
- if (testClient.lastError() == AbstractChannel::StatusCodes::Ok) {
|
|
|
- result = reply->read<SimpleStringMessage>();
|
|
|
- }
|
|
|
+ testClient.testMethod(request, &m_app, [&result, &waiter](AsyncReply *reply) {
|
|
|
+ result = reply->read<SimpleStringMessage>();
|
|
|
waiter.quit();
|
|
|
});
|
|
|
|
|
@@ -118,7 +114,7 @@ TEST_F(ClientTest, StringEchoAsync2Test)
|
|
|
ASSERT_STREQ(result.testFieldString().toStdString().c_str(), "Hello beach!");
|
|
|
}
|
|
|
|
|
|
-TEST_F(ClientTest, StringEchoAsyncAbortTest)
|
|
|
+TEST_F(ClientTest, StringEchoImmediateAsyncAbortTest)
|
|
|
{
|
|
|
TestServiceClient testClient;
|
|
|
testClient.attachChannel(std::make_shared<Http2Channel>(m_echoServerAddress, InsecureCredentials()));
|
|
@@ -126,38 +122,52 @@ TEST_F(ClientTest, StringEchoAsyncAbortTest)
|
|
|
SimpleStringMessage request;
|
|
|
request.setTestFieldString("sleep");
|
|
|
QEventLoop waiter;
|
|
|
-
|
|
|
- bool errorCalled = false;
|
|
|
AsyncReply *reply = testClient.testMethod(request);
|
|
|
+
|
|
|
result.setTestFieldString("Result not changed by echo");
|
|
|
- QObject::connect(reply, &AsyncReply::finished, &m_app, [reply, &result, &waiter, &testClient]() {
|
|
|
- if (testClient.lastError() == AbstractChannel::StatusCodes::Ok) {
|
|
|
- result = reply->read<SimpleStringMessage>();
|
|
|
- }
|
|
|
+ QObject::connect(reply, &AsyncReply::finished, &m_app, [&waiter, &result, reply]() {
|
|
|
+ result = reply->read<SimpleStringMessage>();
|
|
|
waiter.quit();
|
|
|
});
|
|
|
|
|
|
- QObject::connect(reply, &AsyncReply::error, reply, [&errorCalled](AbstractChannel::StatusCodes){
|
|
|
- errorCalled = true;
|
|
|
+ AbstractChannel::StatusCode asyncStatus = AbstractChannel::StatusCode::Ok;
|
|
|
+ QObject::connect(reply, &AsyncReply::error, reply, [&asyncStatus](AbstractChannel::StatusCode code){
|
|
|
+ asyncStatus = code;
|
|
|
});
|
|
|
+
|
|
|
+ AbstractChannel::StatusCode clientStatus = AbstractChannel::StatusCode::Ok;
|
|
|
+ QObject::connect(&testClient, &TestServiceClient::error, reply, [&clientStatus](AbstractChannel::StatusCode code, QString errMsg){
|
|
|
+ clientStatus = code;
|
|
|
+ std::cerr << code << ":" << errMsg.toStdString();
|
|
|
+ });
|
|
|
+
|
|
|
QTimer::singleShot(5000, &waiter, &QEventLoop::quit);
|
|
|
reply->abort();
|
|
|
-
|
|
|
waiter.exec();
|
|
|
+
|
|
|
+ ASSERT_EQ(clientStatus, AbstractChannel::StatusCode::Aborted);
|
|
|
+ ASSERT_EQ(asyncStatus, AbstractChannel::StatusCode::Aborted);
|
|
|
ASSERT_STREQ(result.testFieldString().toStdString().c_str(), "Result not changed by echo");
|
|
|
- ASSERT_EQ(testClient.lastError(), AbstractChannel::StatusCodes::Aborted);
|
|
|
- ASSERT_TRUE(errorCalled);
|
|
|
+}
|
|
|
|
|
|
+TEST_F(ClientTest, StringEchoDeferredAsyncAbortTest)
|
|
|
+{
|
|
|
+ TestServiceClient testClient;
|
|
|
+ testClient.attachChannel(std::make_shared<Http2Channel>(m_echoServerAddress, InsecureCredentials()));
|
|
|
+ SimpleStringMessage result;
|
|
|
+ SimpleStringMessage request;
|
|
|
+ request.setTestFieldString("sleep");
|
|
|
+ QEventLoop waiter;
|
|
|
+ AsyncReply *reply = testClient.testMethod(request);
|
|
|
|
|
|
- errorCalled = false;
|
|
|
+ result.setTestFieldString("Result not changed by echo");
|
|
|
+ bool errorCalled = false;
|
|
|
reply = testClient.testMethod(request);
|
|
|
- QObject::connect(reply, &AsyncReply::finished, &m_app, [reply, &result, &waiter, &testClient]() {
|
|
|
- if (testClient.lastError() == AbstractChannel::StatusCodes::Ok) {
|
|
|
- result = reply->read<SimpleStringMessage>();
|
|
|
- }
|
|
|
+ QObject::connect(reply, &AsyncReply::finished, &m_app, [reply, &result, &waiter]() {
|
|
|
+ result = reply->read<SimpleStringMessage>();
|
|
|
waiter.quit();
|
|
|
});
|
|
|
- QObject::connect(reply, &AsyncReply::error, reply, [&errorCalled](AbstractChannel::StatusCodes){
|
|
|
+ QObject::connect(reply, &AsyncReply::error, reply, [&errorCalled](AbstractChannel::StatusCode){
|
|
|
errorCalled = true;
|
|
|
});
|
|
|
|
|
@@ -167,7 +177,6 @@ TEST_F(ClientTest, StringEchoAsyncAbortTest)
|
|
|
waiter.exec();
|
|
|
|
|
|
ASSERT_STREQ(result.testFieldString().toStdString().c_str(), "Result not changed by echo");
|
|
|
- ASSERT_EQ(testClient.lastError(), AbstractChannel::StatusCodes::Aborted);
|
|
|
ASSERT_TRUE(errorCalled);
|
|
|
}
|
|
|
|
|
@@ -199,7 +208,6 @@ TEST_F(ClientTest, StringEchoStreamTest)
|
|
|
|
|
|
ASSERT_EQ(i, 4);
|
|
|
ASSERT_STREQ(result.testFieldString().toStdString().c_str(), "Stream1Stream2Stream3Stream4");
|
|
|
- ASSERT_EQ(testClient.lastError(), AbstractChannel::StatusCodes::Ok);
|
|
|
}
|
|
|
|
|
|
TEST_F(ClientTest, StringEchoStreamTestRetUpdates)
|
|
@@ -225,7 +233,6 @@ TEST_F(ClientTest, StringEchoStreamTestRetUpdates)
|
|
|
|
|
|
ASSERT_EQ(i, 4);
|
|
|
ASSERT_STREQ(result->testFieldString().toStdString().c_str(), "Stream4");
|
|
|
- ASSERT_EQ(testClient.lastError(), AbstractChannel::StatusCodes::Ok);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -254,5 +261,4 @@ TEST_F(ClientTest, HugeBlobEchoStreamTest)
|
|
|
|
|
|
QByteArray returnDataHash = QCryptographicHash::hash(result.testBytes(), QCryptographicHash::Sha256);
|
|
|
ASSERT_TRUE(returnDataHash == dataHash);
|
|
|
- ASSERT_EQ(testClient.lastError(), AbstractChannel::StatusCodes::Ok);
|
|
|
}
|