From de574b1336e2e06f2e4af4ded9060a5fcc9a2137 Mon Sep 17 00:00:00 2001 From: Shobhit Adlakha Date: Wed, 11 Mar 2020 14:25:07 -0400 Subject: Fix/SDL does not send BC.PolicyUpdate to HMI if no apps are registered (#3280) * Temporary fix for allowing core to send the policyupdate rpc * Remove CanUpdate call in PolicyManagerImpl::StartPTExchange and restore CanUpdate behavior * Fix regular policy unit tests * Fix extern policy unit tests --- .../policy_external/src/policy_manager_impl.cc | 2 +- .../include/policy/policy_manager_impl_test_base.h | 1 + .../test/policy_manager_impl_ptu_test.cc | 2 ++ .../test/policy_manager_impl_test.cc | 6 ++++++ .../test/policy_manager_impl_test_base.cc | 2 ++ .../policy_regular/src/policy_manager_impl.cc | 2 +- .../policy_regular/test/policy_manager_impl_test.cc | 21 +++++++++++++++++++++ 7 files changed, 34 insertions(+), 2 deletions(-) (limited to 'src/components/policy') diff --git a/src/components/policy/policy_external/src/policy_manager_impl.cc b/src/components/policy/policy_external/src/policy_manager_impl.cc index 5c1d8b0b01..41ebbca759 100644 --- a/src/components/policy/policy_external/src/policy_manager_impl.cc +++ b/src/components/policy/policy_external/src/policy_manager_impl.cc @@ -755,7 +755,7 @@ void PolicyManagerImpl::StartPTExchange() { return; } LOG4CXX_INFO(logger_, "Policy want to call RequestPTUpdate"); - if (listener_ && listener_->CanUpdate()) { + if (listener_) { LOG4CXX_INFO(logger_, "Listener CanUpdate"); if (update_status_manager_.IsUpdateRequired()) { update_status_manager_.PendingUpdate(); diff --git a/src/components/policy/policy_external/test/include/policy/policy_manager_impl_test_base.h b/src/components/policy/policy_external/test/include/policy/policy_manager_impl_test_base.h index 816b99cc2f..40b57f9ed3 100644 --- a/src/components/policy/policy_external/test/include/policy/policy_manager_impl_test_base.h +++ b/src/components/policy/policy_external/test/include/policy/policy_manager_impl_test_base.h @@ -117,6 +117,7 @@ class PolicyManagerImplTest : public ::testing::Test { MockUpdateStatusManager update_manager_; NiceMock listener_; NiceMock ptu_retry_handler_; + PolicyTableSPtr default_pt_snapshot_; void SetUp() OVERRIDE; diff --git a/src/components/policy/policy_external/test/policy_manager_impl_ptu_test.cc b/src/components/policy/policy_external/test/policy_manager_impl_ptu_test.cc index 920d2e1272..d5be757139 100644 --- a/src/components/policy/policy_external/test/policy_manager_impl_ptu_test.cc +++ b/src/components/policy/policy_external/test/policy_manager_impl_ptu_test.cc @@ -980,6 +980,8 @@ TEST_F(PolicyManagerImplTest2, TEST_F(PolicyManagerImplTest, LoadPT_SetInvalidUpdatePT_PTIsNotLoaded) { // Arrange + EXPECT_CALL(*cache_manager_, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); policy_manager_->ForcePTExchange(); policy_manager_->OnUpdateStarted(); Json::Value table(Json::objectValue); diff --git a/src/components/policy/policy_external/test/policy_manager_impl_test.cc b/src/components/policy/policy_external/test/policy_manager_impl_test.cc index f824d37dfb..388630a68f 100644 --- a/src/components/policy/policy_external/test/policy_manager_impl_test.cc +++ b/src/components/policy/policy_external/test/policy_manager_impl_test.cc @@ -106,6 +106,8 @@ TEST_F(PolicyManagerImplTest, LoadPT_SetPT_PTIsLoaded) { // Arrange EXPECT_CALL(*cache_manager_, DaysBeforeExchange(_)) .WillOnce(Return(kNonZero)); + ON_CALL(*cache_manager_, GenerateSnapshot()) + .WillByDefault(Return(default_pt_snapshot_)); policy_manager_->ForcePTExchange(); policy_manager_->SetSendOnUpdateFlags(true); policy_manager_->OnUpdateStarted(); @@ -254,6 +256,8 @@ TEST_F(PolicyManagerImplTest2, GetPolicyTableStatus_ExpectUpToDate) { TEST_F(PolicyManagerImplTest, SetUpdateStarted_GetPolicyTableStatus_Expect_Updating) { // Arrange + EXPECT_CALL(*cache_manager_, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); policy_manager_->ForcePTExchange(); EXPECT_CALL(*cache_manager_, SaveUpdateRequired(true)); policy_manager_->OnUpdateStarted(); @@ -306,6 +310,8 @@ TEST_F(PolicyManagerImplTest, MarkUnpairedDevice) { EXPECT_CALL(*cache_manager_, IgnitionCyclesBeforeExchange()); EXPECT_CALL(*cache_manager_, DaysBeforeExchange(_)); // Act + EXPECT_CALL(*cache_manager_, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); policy_manager_->MarkUnpairedDevice(unpaired_device_id_); } diff --git a/src/components/policy/policy_external/test/policy_manager_impl_test_base.cc b/src/components/policy/policy_external/test/policy_manager_impl_test_base.cc index dc1d7a06ef..7c2d231708 100644 --- a/src/components/policy/policy_external/test/policy_manager_impl_test_base.cc +++ b/src/components/policy/policy_external/test/policy_manager_impl_test_base.cc @@ -220,6 +220,8 @@ void PolicyManagerImplTest::SetUp() { ON_CALL(listener_, GetRegisteredLinks(_)).WillByDefault(Return()); ON_CALL(listener_, ptu_retry_handler()) .WillByDefault(ReturnRef(ptu_retry_handler_)); + Json::Value table = createPTforLoad(); + default_pt_snapshot_ = std::make_shared(&table); } void PolicyManagerImplTest::TearDown() { diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc index 8ea461ac41..6f646af8df 100644 --- a/src/components/policy/policy_regular/src/policy_manager_impl.cc +++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc @@ -662,7 +662,7 @@ void PolicyManagerImpl::StartPTExchange() { return; } - if (listener_ && listener_->CanUpdate()) { + if (listener_) { if (ignition_check) { CheckTriggers(); ignition_check = false; diff --git a/src/components/policy/policy_regular/test/policy_manager_impl_test.cc b/src/components/policy/policy_regular/test/policy_manager_impl_test.cc index 08e8dd4023..abf9a2ec14 100644 --- a/src/components/policy/policy_regular/test/policy_manager_impl_test.cc +++ b/src/components/policy/policy_regular/test/policy_manager_impl_test.cc @@ -77,6 +77,8 @@ namespace custom_str = utils::custom_string; typedef std::multimap UserConsentPromptToRpcsConnections; +typedef std::shared_ptr PolicyTableSPtr; + namespace { std::string kSpeed = "speed"; std::string kRPM = "rpm"; @@ -153,6 +155,7 @@ class PolicyManagerImplTest : public ::testing::Test { NiceMock update_status_manager; const std::string device_id; std::shared_ptr access_remote; + PolicyTableSPtr default_pt_snapshot_; void SetUp() OVERRIDE { manager = new PolicyManagerImpl(); @@ -161,6 +164,8 @@ class PolicyManagerImplTest : public ::testing::Test { manager->set_cache_manager(cache_manager); access_remote = std::make_shared(); manager->set_access_remote(access_remote); + // Json::Value table = createPTforLoad(); + default_pt_snapshot_ = std::make_shared(); } void TearDown() OVERRIDE { @@ -985,6 +990,8 @@ TEST_F(PolicyManagerImplTest, ResetPT) { TEST_F(PolicyManagerImplTest, LoadPT_SetPT_PTIsLoaded) { // Arrange + EXPECT_CALL(*cache_manager, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); manager->ForcePTExchange(); manager->OnUpdateStarted(); Json::Value table = CreatePTforLoad(); @@ -1021,6 +1028,8 @@ TEST_F(PolicyManagerImplTest, LoadPT_SetPT_PTIsLoaded) { TEST_F(PolicyManagerImplTest, LoadPT_FunctionalGroup_removeRPC_SendUpdate) { // Arrange + EXPECT_CALL(*cache_manager, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); manager->ForcePTExchange(); manager->OnUpdateStarted(); Json::Value table = CreatePTforLoad(); @@ -1056,6 +1065,8 @@ TEST_F(PolicyManagerImplTest, LoadPT_FunctionalGroup_removeRPC_SendUpdate) { TEST_F(PolicyManagerImplTest, LoadPT_FunctionalGroup_removeRPCParams_SendUpdate) { // Arrange + EXPECT_CALL(*cache_manager, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); manager->ForcePTExchange(); manager->OnUpdateStarted(); Json::Value table = CreatePTforLoad(); @@ -1093,6 +1104,8 @@ TEST_F(PolicyManagerImplTest, TEST_F(PolicyManagerImplTest, LoadPT_FunctionalGroup_removeRPC_HMILevels_SendUpdate) { // Arrange + EXPECT_CALL(*cache_manager, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); manager->ForcePTExchange(); manager->OnUpdateStarted(); Json::Value table = CreatePTforLoad(); @@ -1130,6 +1143,8 @@ TEST_F(PolicyManagerImplTest, TEST_F(PolicyManagerImplTest, LoadPT_FunctionalGroup_addRPC_HMILevels_SendUpdate) { // Arrange + EXPECT_CALL(*cache_manager, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); manager->ForcePTExchange(); manager->OnUpdateStarted(); Json::Value table = CreatePTforLoad(); @@ -1168,6 +1183,8 @@ TEST_F(PolicyManagerImplTest, TEST_F(PolicyManagerImplTest, LoadPT_FunctionalGroup_addRPCParams_SendUpdate) { using namespace application_manager; // Arrange + EXPECT_CALL(*cache_manager, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); manager->ForcePTExchange(); manager->OnUpdateStarted(); Json::Value table = CreatePTforLoad(); @@ -1204,6 +1221,8 @@ TEST_F(PolicyManagerImplTest, LoadPT_FunctionalGroup_addRPCParams_SendUpdate) { TEST_F(PolicyManagerImplTest, LoadPT_FunctionalGroup_NoUpdate_DONT_SendUpdate) { // Arrange + EXPECT_CALL(*cache_manager, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); manager->ForcePTExchange(); manager->OnUpdateStarted(); Json::Value table = CreatePTforLoad(); @@ -1234,6 +1253,8 @@ TEST_F(PolicyManagerImplTest, LoadPT_FunctionalGroup_NoUpdate_DONT_SendUpdate) { TEST_F(PolicyManagerImplTest, LoadPT_SetInvalidUpdatePT_PTIsNotLoaded) { // Arrange Json::Value table(Json::objectValue); + EXPECT_CALL(*cache_manager, GenerateSnapshot()) + .WillOnce(Return(default_pt_snapshot_)); manager->ForcePTExchange(); manager->OnUpdateStarted(); -- cgit v1.2.1