summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShobhit Adlakha <adlakhashobhit@gmail.com>2019-05-13 12:50:04 -0400
committerShobhit Adlakha <adlakhashobhit@gmail.com>2019-05-13 12:50:04 -0400
commit6df30a70a576ca6a00a88c377a68a63745e8907d (patch)
treeaa390508bf9bc2a5b5523c349b45681274a10926
parentab9b43f46439c689ca85ced64433e80b8ab6d511 (diff)
downloadsdl_core-6df30a70a576ca6a00a88c377a68a63745e8907d.tar.gz
Added RPC Passthrough request timeout
-rw-r--r--src/components/application_manager/test/rpc_passing_handler_test.cc53
1 files changed, 52 insertions, 1 deletions
diff --git a/src/components/application_manager/test/rpc_passing_handler_test.cc b/src/components/application_manager/test/rpc_passing_handler_test.cc
index 5976fb23f5..9d0500823d 100644
--- a/src/components/application_manager/test/rpc_passing_handler_test.cc
+++ b/src/components/application_manager/test/rpc_passing_handler_test.cc
@@ -362,7 +362,7 @@ TEST_F(RPCPassingHandlerTest,
{
InSequence dummy;
// Call RPCPassThrough with response smart object
- // Will cycle to core (no other app services in list)
+ // Will cycle to next compatible active app service
EXPECT_CALL(mock_app_manager_, get_settings());
EXPECT_CALL(mock_app_manager_settings_, rpc_pass_through_timeout());
EXPECT_CALL(mock_app_manager_, GetRPCService());
@@ -373,6 +373,57 @@ TEST_F(RPCPassingHandlerTest,
EXPECT_EQ(result, true);
}
+TEST_F(RPCPassingHandlerTest, RPCPassingTest_REQUEST_Timeout) {
+ int32_t correlation_id = 1;
+ uint32_t connection_key = 1;
+ app_services_.push_back(
+ CreateAppService(connection_key + 1, "service 1", "NAVIGATION"));
+
+ smart_objects::SmartObject request =
+ CreatePassThroughRequest(connection_key, correlation_id);
+ smart_objects::SmartObject forwarded_request =
+ CreatePassThroughRequest(connection_key + 1, correlation_id);
+
+ {
+ InSequence dummy;
+ // Call RPCPassThrough with request smart object
+
+ // Will call PopulateRPCRequestQueue
+ EXPECT_CALL(mock_app_service_manager_, GetActiveServices())
+ .WillOnce(Return(app_services_));
+ EXPECT_CALL(mock_app_manager_,
+ IncreaseForwardedRequestTimeout(connection_key, correlation_id))
+ .Times(app_services_.size());
+
+ // Will call ForwardRequesttoMobile
+ EXPECT_CALL(mock_app_manager_, get_settings());
+ EXPECT_CALL(mock_app_manager_settings_, rpc_pass_through_timeout())
+ .WillOnce(Return(1));
+ EXPECT_CALL(mock_app_manager_, GetRPCService());
+ EXPECT_CALL(mock_rpc_service_,
+ SendMessageToMobile(Pointee(forwarded_request), false));
+ }
+
+ bool result = rpc_passing_handler_->RPCPassThrough(request);
+ EXPECT_EQ(result, true);
+
+ {
+ InSequence dummy;
+ // Request timeout will trigger perform next request
+ // Will cycle to core (no other app services in list)
+ EXPECT_CALL(mock_app_manager_, application(connection_key));
+ EXPECT_CALL(*mock_app_ptr_, msg_version());
+ EXPECT_CALL(mock_app_manager_, GetRPCHandler());
+ EXPECT_CALL(mock_rpc_handler_, ValidateRpcSO(request, _, _, false))
+ .WillOnce(Return(true));
+ EXPECT_CALL(mock_app_manager_, GetRPCService());
+ EXPECT_CALL(mock_rpc_service_,
+ ManageMobileCommand(Pointee(request),
+ am::commands::Command::SOURCE_MOBILE));
+ }
+ sleep(1);
+}
+
} // namespace application_manager_test
} // namespace components
} // namespace test