From 5fface8008d0fe682eb9cfd5927bde603d00e843 Mon Sep 17 00:00:00 2001 From: pietfried Date: Thu, 18 Jan 2024 14:34:02 +0100 Subject: [PATCH] * changed from get_connector_effective_status to individual_connector_status in send_status_notification_single_connector_internal * applied same change in initialize_reported_state_cache * removed unused function connector_status_to_operational_status * fixed CMakeLists.txt in test dir * removed obsolete test cases Signed-off-by: pietfried --- .../init_device_model_db.cpython-310.pyc | Bin 0 -> 13855 bytes lib/ocpp/v201/component_state_manager.cpp | 17 ++-- tests/CMakeLists.txt | 2 +- .../v201/test_component_state_manager.cpp | 85 ------------------ 4 files changed, 6 insertions(+), 98 deletions(-) create mode 100644 config/v201/__pycache__/init_device_model_db.cpython-310.pyc diff --git a/config/v201/__pycache__/init_device_model_db.cpython-310.pyc b/config/v201/__pycache__/init_device_model_db.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc6cbf6be505eae9d0e41dbb2cac4886694f9b79 GIT binary patch literal 13855 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 evse_connector_structure) { @@ -54,9 +46,9 @@ void ComponentStateManager::initialize_reported_state_cache() { OperationalStatusEnum evse_effective = this->get_evse_effective_operational_status(evse_id); for (int connector_id = 1; connector_id <= num_connectors; connector_id++) { - ConnectorStatusEnum connector_effective = this->get_connector_effective_status(evse_id, connector_id); - connector_statuses.push_back(connector_effective); - connector_op_statuses.push_back(connector_status_to_operational_status(connector_effective)); + ConnectorStatusEnum connector_status = this->individual_connector_status(evse_id, connector_id).to_connector_status(); + connector_statuses.push_back(connector_status); + connector_op_statuses.push_back(this->get_connector_effective_operational_status(evse_id, connector_id)); } this->last_evse_and_connector_effective_operational_statuses.push_back( @@ -294,9 +286,10 @@ void ComponentStateManager::trigger_all_effective_availability_changed_callbacks this->trigger_callbacks_cs(false); } +//TODO(Piet): Move to connector file void ComponentStateManager::send_status_notification_single_connector_internal(int32_t evse_id, int32_t connector_id, bool only_if_changed) { - ConnectorStatusEnum connector_status = this->get_connector_effective_status(evse_id, connector_id); + ConnectorStatusEnum connector_status = this->individual_connector_status(evse_id, connector_id).to_connector_status(); ConnectorStatusEnum& last_reported_status = this->last_connector_reported_status(evse_id, connector_id); if (!only_if_changed || last_reported_status != connector_status) { if (this->send_connector_status_notification_callback(evse_id, connector_id, connector_status)) { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 91acd3e8f5..4ae47f8b6c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -43,7 +43,7 @@ add_subdirectory(lib/ocpp/common) add_executable(utils_tests utils_tests.cpp) -target_include_directories(utils_tests PUBLIC${GTEST_INCLUDE_DIRS}) +target_include_directories(utils_tests PUBLIC ${GTEST_INCLUDE_DIRS}) target_link_libraries(utils_tests PRIVATE ocpp diff --git a/tests/lib/ocpp/v201/test_component_state_manager.cpp b/tests/lib/ocpp/v201/test_component_state_manager.cpp index 838fda95cd..fdc11f2106 100644 --- a/tests/lib/ocpp/v201/test_component_state_manager.cpp +++ b/tests/lib/ocpp/v201/test_component_state_manager.cpp @@ -361,64 +361,6 @@ TEST_F(ComponentStateManagerTest, test_effective_state_changed_callbacks) { state_mgr.set_cs_individual_operational_status(OperationalStatusEnum::Operative, false); } -/// \brief Test the ComponentStateManager calls "status notification" callbacks correctly at run-time -TEST_F(ComponentStateManagerTest, test_status_notification_callbacks) { - // Prepare - std::shared_ptr mock_database = std::make_shared(); - auto state_mgr = this->component_state_manager(mock_database, {1, 2}); - - // Set up mock expectations - testing::Sequence seq; - // EVSE 1 connector 1 set to Occupied - EXPECT_CALL(this->callbacks, connector_status_update(1, 1, "Occupied")) - .Times(1) - .InSequence(seq) - .WillOnce(testing::Return(true)); - // EVSE 2 disabled - EXPECT_CALL(this->callbacks, connector_status_update(2, 1, "Unavailable")) - .Times(1) - .InSequence(seq) - .WillOnce(testing::Return(true)); - EXPECT_CALL(this->callbacks, connector_status_update(2, 2, "Unavailable")) - .Times(1) - .InSequence(seq) - .WillOnce(testing::Return(true)); - // CS disabled - EXPECT_CALL(this->callbacks, connector_status_update(1, 1, "Unavailable")) - .Times(1) - .InSequence(seq) - .WillOnce(testing::Return(true)); - // EVSE 2 re-enabled - // EVSE 2 connector 1 faulted - // CS re-enabled - EXPECT_CALL(this->callbacks, connector_status_update(1, 1, "Occupied")) - .Times(1) - .InSequence(seq) - .WillOnce(testing::Return(true)); - EXPECT_CALL(this->callbacks, connector_status_update(2, 1, "Faulted")) - .Times(1) - .InSequence(seq) - .WillOnce(testing::Return(true)); - EXPECT_CALL(this->callbacks, connector_status_update(2, 2, "Available")) - .Times(1) - .InSequence(seq) - .WillOnce(testing::Return(true)); - - // Act & Verify - state_mgr.set_connector_occupied(1, 1, true); - state_mgr.set_evse_individual_operational_status(2, OperationalStatusEnum::Inoperative, false); - state_mgr.set_connector_unavailable(2, 1, true); - state_mgr.set_connector_unavailable(2, 2, true); - state_mgr.set_cs_individual_operational_status(OperationalStatusEnum::Inoperative, false); - state_mgr.set_connector_unavailable(1, 1, true); - state_mgr.set_evse_individual_operational_status(2, OperationalStatusEnum::Operative, false); - state_mgr.set_connector_faulted(2, 1, true); - state_mgr.set_cs_individual_operational_status(OperationalStatusEnum::Operative, false); - state_mgr.set_connector_unavailable(1, 1, false); - state_mgr.set_connector_unavailable(2, 1, false); - state_mgr.set_connector_unavailable(2, 2, false); -} - /// \brief Test the ComponentStateManager::trigger_all_effective_availability_changed_callbacks() TEST_F(ComponentStateManagerTest, test_trigger_boot_callbacks) { // Prepare @@ -455,33 +397,6 @@ TEST_F(ComponentStateManagerTest, test_trigger_boot_callbacks) { state_mgr.trigger_all_effective_availability_changed_callbacks(); } -/// \brief Test the ComponentStateManager::send_status_notification_all_connectors() -TEST_F(ComponentStateManagerTest, test_send_status_notification_all_connectors) { - // Prepare - std::shared_ptr mock_database = std::make_shared(); - // EVSE 1 disabled on boot - mock_database->insert_evse_availability(1, OperationalStatusEnum::Inoperative, true); - auto state_mgr = this->component_state_manager(mock_database, {1, 2}); - - // Set up mock expectations - testing::Sequence seq; - EXPECT_CALL(this->callbacks, connector_status_update(1, 1, "Unavailable")) - .Times(1) - .InSequence(seq) - .WillOnce(testing::Return(true)); - EXPECT_CALL(this->callbacks, connector_status_update(2, 1, "Available")) - .Times(1) - .InSequence(seq) - .WillOnce(testing::Return(true)); - EXPECT_CALL(this->callbacks, connector_status_update(2, 2, "Available")) - .Times(1) - .InSequence(seq) - .WillOnce(testing::Return(true)); - - // Act & Verify - state_mgr.send_status_notification_all_connectors(); -} - /// \brief Test the ComponentStateManager::send_status_notification_changed_connectors() TEST_F(ComponentStateManagerTest, test_send_status_notification_changed_connectors) { // Prepare