summaryrefslogtreecommitdiff
path: root/NodeStateMachineTest/NodeStateTest_GENIVI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'NodeStateMachineTest/NodeStateTest_GENIVI.cpp')
-rw-r--r--NodeStateMachineTest/NodeStateTest_GENIVI.cpp1199
1 files changed, 1199 insertions, 0 deletions
diff --git a/NodeStateMachineTest/NodeStateTest_GENIVI.cpp b/NodeStateMachineTest/NodeStateTest_GENIVI.cpp
new file mode 100644
index 0000000..b341dfd
--- /dev/null
+++ b/NodeStateMachineTest/NodeStateTest_GENIVI.cpp
@@ -0,0 +1,1199 @@
+/**********************************************************************************************************************
+ *
+ * Copyright (C) 2017 BMW AG
+ *
+ * Implements tests for NSM
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ **********************************************************************************************************************/
+
+#include <gtest/gtest.h>
+#include <iostream>
+#include <dlt.h>
+
+#include <CommonAPI/CommonAPI.hpp>
+#include <v1/org/genivi/nodestatemanager/ConsumerProxy.hpp>
+#include <v1/org/genivi/nodestatemanager/ConsumerProxyBase.hpp>
+#include <v1/org/genivi/nodestatemanager/LifecycleControlProxy.hpp>
+
+#include <v1/org/genivi/nodestatemachinetest/TestProxy.hpp>
+
+#include "../NodeStateManager/NodeStateTypes.h"
+#include "../NodeStateManager/NodeStateManager.h"
+
+namespace NodeStateMachineTest = v1::org::genivi::nodestatemachinetest;
+
+namespace GENIVI = v1::org::genivi;
+using namespace GENIVI::nodestatemanager;
+
+DLT_DECLARE_CONTEXT(gNSMTestContext);
+
+class NSMTest_GENIVI: public testing::Test
+{
+protected:
+ virtual void SetUp()
+ {
+ //Define application ID
+ CommonAPI::Runtime::setProperty("LogContext", "CAPI");
+
+ GENIVI::NodeStateManagerTypes::NsmErrorStatus_e eCode = GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_NotSet;
+ GENIVI::NodeStateManagerTypes::NsmApplicationMode_e appMode;
+
+ runtime = CommonAPI::Runtime::get();
+ proxyConsumer = runtime->buildProxy<ConsumerProxy>("local", "NSMConsumer", "Consumer");
+ proxyConsumer_1 = runtime->buildProxy<ConsumerProxy>("local", "NSMConsumer", "Consumer_1");
+ proxyConsumer_2 = runtime->buildProxy<ConsumerProxy>("local", "NSMConsumer", "Consumer_2");
+ proxyConsumer_3 = runtime->buildProxy<ConsumerProxy>("local", "NSMConsumer", "Consumer_3");
+ proxyConsumer_4 = runtime->buildProxy<ConsumerProxy>("local", "NSMConsumer", "Consumer_4");
+ proxyConsumer_5 = runtime->buildProxy<ConsumerProxy>("local", "NSMConsumer", "Consumer_5");
+ proxyLifecycleControl = runtime->buildProxy<LifecycleControlProxy>("local", "NSMLifecycleControl", "LifecycleControl");
+ proxyTest = runtime->buildProxy<NodeStateMachineTest::TestProxy>("local", "NSMTest", "Test");
+
+ ASSERT_FALSE(proxyConsumer == NULL);
+ ASSERT_FALSE(proxyConsumer_1 == NULL);
+ ASSERT_FALSE(proxyConsumer_2 == NULL);
+ ASSERT_FALSE(proxyConsumer_3 == NULL);
+ ASSERT_FALSE(proxyConsumer_4 == NULL);
+ ASSERT_FALSE(proxyConsumer_5 == NULL);
+ ASSERT_FALSE(proxyLifecycleControl == NULL);
+
+ ASSERT_FALSE(proxyTest == NULL);
+
+ ASSERT_TRUE(proxyConsumer->isAvailableBlocking());
+ ASSERT_TRUE(proxyConsumer_1->isAvailableBlocking());
+ ASSERT_TRUE(proxyConsumer_2->isAvailableBlocking());
+ ASSERT_TRUE(proxyConsumer_3->isAvailableBlocking());
+ ASSERT_TRUE(proxyConsumer_4->isAvailableBlocking());
+ ASSERT_TRUE(proxyConsumer_5->isAvailableBlocking());
+
+ ASSERT_TRUE(proxyLifecycleControl->isAvailableBlocking());
+ ASSERT_TRUE(proxyTest->isAvailableBlocking());
+
+
+ proxyConsumer->GetInterfaceVersion(callStatus, var_ui32);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+
+ proxyConsumer->GetApplicationMode(callStatus, appMode, eCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ }
+
+ virtual void TearDown()
+ {
+ // nothing to do
+ }
+
+ CommonAPI::CallStatus callStatus;
+ int32_t var_i32 = 0;
+ uint32_t var_ui32 = 0;
+ int nsm_test_errorCode = NsmErrorStatus_NotSet;
+ GENIVI::NodeStateManagerTypes::NsmErrorStatus_e errorCode = GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_NotSet;
+
+ std::mutex mMutex;
+ std::condition_variable mCondVar;
+ std::shared_ptr<CommonAPI::Runtime> runtime;
+ std::shared_ptr<ConsumerProxyDefault> proxyConsumer;
+ std::shared_ptr<ConsumerProxyDefault> proxyConsumer_1;
+ std::shared_ptr<ConsumerProxyDefault> proxyConsumer_2;
+ std::shared_ptr<ConsumerProxyDefault> proxyConsumer_3;
+ std::shared_ptr<ConsumerProxyDefault> proxyConsumer_4;
+ std::shared_ptr<ConsumerProxyDefault> proxyConsumer_5;
+ std::shared_ptr<LifecycleControlProxyDefault> proxyLifecycleControl;
+ std::shared_ptr<NodeStateMachineTest::TestProxyDefault> proxyTest;
+
+public:
+
+};
+
+/*
+ * The define sets up a string that is longer for all text fields used in the NSM.
+ * The intend is to test the NSM for correct behavior by passing this string.
+ */
+#define NSMTST__260CHAR_STRING "012345678901234567890123456789012345678901234567890123456789"\
+ "012345678901234567890123456789012345678901234567890123456789"\
+ "012345678901234567890123456789012345678901234567890123456789"\
+ "012345678901234567890123456789012345678901234567890123456789"\
+ "01234567890123456789"
+
+/********************************************************************************************
+ * main()
+ ********************************************************************************************/
+
+int main(int argc, char **argv)
+{
+ int retVal = 1;
+ DLT_REGISTER_APP("NSMT", "Unit tests for NSM");
+ DLT_REGISTER_CONTEXT(gNSMTestContext, "GEN", "Context for Genivi TestLogging");
+
+ testing::InitGoogleTest(&argc, argv);
+ retVal = RUN_ALL_TESTS();
+
+ // unregister debug log and trace
+ DLT_UNREGISTER_CONTEXT(gNSMTestContext);
+ DLT_UNREGISTER_APP();
+ return retVal;
+}
+
+int registeredShutdownClientCb = 0;
+std::mutex mMutexRegisterdClientCb;
+std::condition_variable mCondVarRegisterdClientCb;
+
+void async_callback(const CommonAPI::CallStatus& callStatus, const ::v1::org::genivi::NodeStateManagerTypes::NsmErrorStatus_e& errorStatus)
+{
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorStatus, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+ std::unique_lock<std::mutex> lock(mMutexRegisterdClientCb);
+ registeredShutdownClientCb++;
+ lock.unlock();
+ mCondVarRegisterdClientCb.notify_one();
+}
+
+/********************************************************************************************
+ * BootMode Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, BootMode)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_BootMode ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_BootMode");
+ RecordProperty("TestCaseDescription", "");
+
+ int bootMode = 0x0;
+ std::vector<uint8_t> dataIn;
+ std::vector<uint8_t> dataOut;
+
+ proxyLifecycleControl->SetBootMode(0, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->getBootModeAttribute().getValue(callStatus, bootMode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(bootMode == 0);
+
+ proxyLifecycleControl->SetBootMode(1, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->getBootModeAttribute().getValue(callStatus, bootMode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(bootMode == 1);
+
+ proxyLifecycleControl->SetBootMode(1, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->getBootModeAttribute().getValue(callStatus, bootMode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(bootMode == 1);
+
+ bootMode = 0x02;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &bootMode, ((uint8_t*) &bootMode) + sizeof(bootMode));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_BootMode, dataIn, sizeof(bootMode), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(nsm_test_errorCode, NsmErrorStatus_Ok);
+
+ bootMode = 0x03;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &bootMode, ((uint8_t*) &bootMode) + sizeof(bootMode));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_BootMode, dataIn, sizeof(bootMode) + 1, callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ bootMode = 0x04;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &bootMode, ((uint8_t*) &bootMode) + sizeof(bootMode));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_BootMode, dataIn, sizeof(bootMode) - 1, callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ dataOut.clear();
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_BootMode, dataIn, sizeof(bootMode), callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == sizeof(bootMode));
+ ASSERT_TRUE(*((int*)dataOut.data()) == 0x02);
+
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_BootMode, dataIn, sizeof(bootMode) + 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_BootMode, dataIn, sizeof(bootMode) - 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_BootMode ==> end"));
+}
+
+/********************************************************************************************
+ * RunningReason Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, RunningReason)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_RunningReason ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_RunningReason");
+ RecordProperty("TestCaseDescription", "");
+
+
+ GENIVI::NodeStateManagerTypes::NsmRunningReason_e runningReason;
+ std::vector<uint8_t> dataIn;
+ std::vector<uint8_t> dataOut;
+
+ proxyConsumer->getWakeUpReasonAttribute().getValue(callStatus, runningReason);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(runningReason, GENIVI::NodeStateManagerTypes::NsmRunningReason_e::NsmRunningReason_WakeupCan);
+
+ dataOut.clear();
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_RunningReason, dataIn, sizeof(NsmRunningReason_e), callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(nsm_test_errorCode, sizeof(NsmRunningReason_e));
+ ASSERT_TRUE(*((int*)dataOut.data()) == NsmRunningReason_WakeupCan);
+
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_RunningReason, dataIn, sizeof(NsmRunningReason_e) + 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_RunningReason, dataIn, sizeof(NsmRunningReason_e) - 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_RunningReason ==> end"));
+
+}
+
+/********************************************************************************************
+ * ShutdownReason Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, ShutdownReason)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_ShutdownReason ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_ShutdownReason");
+ RecordProperty("TestCaseDescription", "");
+
+ NsmShutdownReason_e enShutdownReason = NsmShutdownReason_NotSet;
+ GENIVI::NodeStateManagerTypes::NsmShutdownReason_e shutdownReason;
+ std::vector<uint8_t> dataIn;
+ std::vector<uint8_t> dataOut;
+
+ enShutdownReason = NsmShutdownReason_NotSet;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &enShutdownReason, ((uint8_t*) &enShutdownReason) + sizeof(enShutdownReason));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ // Explicitly pass wrong value
+#pragma GCC diagnostic ignored "-Wconversion"
+ enShutdownReason = (NsmShutdownReason_e)0xFFFFFFFF;
+#pragma GCC diagnostic pop
+ dataIn.insert(dataIn.begin(), (uint8_t*) &enShutdownReason, ((uint8_t*) &enShutdownReason) + sizeof(enShutdownReason));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ enShutdownReason = NsmShutdownReason_Normal;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &enShutdownReason, ((uint8_t*) &enShutdownReason) + sizeof(enShutdownReason));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e) - 1, callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ enShutdownReason = NsmShutdownReason_Normal;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &enShutdownReason, ((uint8_t*) &enShutdownReason) + sizeof(enShutdownReason));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e) + 1, callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ enShutdownReason = NsmShutdownReason_Normal;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &enShutdownReason, ((uint8_t*) &enShutdownReason) + sizeof(enShutdownReason));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(nsm_test_errorCode, NsmErrorStatus_Ok);
+
+ enShutdownReason = NsmShutdownReason_Normal;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &enShutdownReason, ((uint8_t*) &enShutdownReason) + sizeof(enShutdownReason));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(nsm_test_errorCode, NsmErrorStatus_Ok);
+
+ proxyConsumer->getShutdownReasonAttribute().getValue(callStatus, shutdownReason);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(shutdownReason == GENIVI::NodeStateManagerTypes::NsmShutdownReason_e::NsmShutdownReason_Normal);
+
+ dataOut.clear();
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e), callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == sizeof(NsmShutdownReason_e));
+ ASSERT_TRUE( *((NsmShutdownReason_e*)dataOut.data()) == NsmShutdownReason_Normal);
+
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e) - 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e) + 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ enShutdownReason = NsmShutdownReason_SupplyBad;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &enShutdownReason, ((uint8_t*) &enShutdownReason) + sizeof(enShutdownReason));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(nsm_test_errorCode, NsmErrorStatus_Ok);
+
+ proxyConsumer->getShutdownReasonAttribute().getValue(callStatus, shutdownReason);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(shutdownReason == GENIVI::NodeStateManagerTypes::NsmShutdownReason_e::NsmShutdownReason_SupplyBad);
+
+ dataOut.clear();
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e), callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == sizeof(NsmShutdownReason_e));
+ ASSERT_TRUE( *((NsmShutdownReason_e*)dataOut.data()) == NsmShutdownReason_SupplyBad);
+
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e) - 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_ShutdownReason, dataIn, sizeof(NsmShutdownReason_e) + 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_ShutdownReason ==> end"));
+}
+
+/********************************************************************************************
+ * RestartReason Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, RestartReason)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_RestartReason ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_RestartReason");
+ RecordProperty("TestCaseDescription", "");
+
+ GENIVI::NodeStateManagerTypes::NsmRestartReason_e restartReason;
+ std::vector<uint8_t> dataIn;
+ std::vector<uint8_t> dataOut;
+ proxyConsumer->getRestartReasonAttribute().getValue(callStatus, restartReason);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(restartReason == GENIVI::NodeStateManagerTypes::NsmRestartReason_e::NsmRestartReason_NotSet);
+
+ dataOut.clear();
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_RestartReason, dataIn, sizeof(NsmRestartReason_e), callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == sizeof(NsmRestartReason_e));
+ ASSERT_TRUE( *((NsmRestartReason_e*)dataOut.data()) == NsmRestartReason_NotSet);
+
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_RestartReason, dataIn, sizeof(NsmRestartReason_e) - 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_RestartReason, dataIn, sizeof(NsmRestartReason_e) + 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_RestartReason ==> end"));
+}
+
+/********************************************************************************************
+ * NodeState Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, NodeState)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_NodeState ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_NodeState");
+ RecordProperty("TestCaseDescription", "");
+
+ GENIVI::NodeStateManagerTypes::NsmNodeState_e nsmNodeState;
+ int32_t nodeState = -1;
+ int32_t nodeStateToSet = -1;
+ std::vector<uint8_t> dataIn;
+ std::vector<uint8_t> dataOut;
+
+ proxyConsumer->getNodeStateEvent().subscribe([&](const int32_t& val) {
+ nodeState = val;
+ });
+
+ proxyLifecycleControl->SetNodeState(GENIVI::NodeStateManagerTypes::NsmNodeState_e::NsmNodeState_NotSet, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyLifecycleControl->SetNodeState(GENIVI::NodeStateManagerTypes::NsmNodeState_e::NsmNodeState_BaseRunning, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyLifecycleControl->SetNodeState(GENIVI::NodeStateManagerTypes::NsmNodeState_e::NsmNodeState_BaseRunning, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ nodeState = -1;
+
+ proxyLifecycleControl->SetNodeState(GENIVI::NodeStateManagerTypes::NsmNodeState_e::NsmNodeState_LucRunning, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while (nodeState == -1)
+ usleep(10);
+ ASSERT_TRUE(nodeState == NsmNodeState_LucRunning);
+
+ proxyConsumer->GetNodeState(callStatus, nsmNodeState, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+ ASSERT_TRUE(nsmNodeState == GENIVI::NodeStateManagerTypes::NsmNodeState_e::NsmNodeState_LucRunning);
+
+ nodeState = -1;
+ nodeStateToSet = NsmNodeState_FullyRunning;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &nodeStateToSet, ((uint8_t*) &nodeStateToSet) + sizeof(nodeStateToSet));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_NodeState, dataIn, sizeof(nodeStateToSet), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(nsm_test_errorCode, NsmErrorStatus_Ok);
+
+ while (nodeState == -1)
+ usleep(10);
+ ASSERT_TRUE(nodeState == NsmNodeState_FullyRunning);
+
+ nodeState = NsmNodeState_FullyRunning;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &nodeState, ((uint8_t*) &nodeState) + sizeof(nodeState));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_NodeState, dataIn, 3, callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ nodeState = NsmNodeState_FullyRunning;
+ dataIn.insert(dataIn.begin(), (uint8_t*) &nodeState, ((uint8_t*) &nodeState) + sizeof(nodeState));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_NodeState, dataIn, 5, callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ dataOut.clear();
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_NodeState, dataIn, sizeof(nodeState), callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == sizeof(nodeState));
+ ASSERT_TRUE(*((NsmNodeState_e* )dataOut.data()) == NsmNodeState_FullyRunning);
+
+ dataOut.clear();
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_NodeState, dataIn, sizeof(nodeState) - 1, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_NodeState ==> end"));
+}
+
+/********************************************************************************************
+ * InvalidData Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, InvalidData)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_InvalidData ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_InvalidData");
+ RecordProperty("TestCaseDescription", "");
+
+ std::vector<uint8_t> dataIn;
+ NsmRestartReason_e restartReason;
+
+ dataIn.insert(dataIn.begin(), (uint8_t*) &restartReason, ((uint8_t*) &restartReason) + sizeof(restartReason));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_RestartReason, dataIn, sizeof(restartReason), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ dataIn.insert(dataIn.begin(), (uint8_t*) &restartReason, ((uint8_t*) &restartReason) + sizeof(restartReason));
+ // Explicitly pass wrong value
+#pragma GCC diagnostic ignored "-Wconversion"
+ proxyTest->SetNsmData(
+ GENIVI::NodeStateManagerTypes::NsmDataType_e((GENIVI::NodeStateManagerTypes::NsmDataType_e::Literal) 0xFFFFFFFF),
+ dataIn, sizeof(restartReason), callStatus, nsm_test_errorCode);
+#pragma GCC diagnostic pop
+ ASSERT_TRUE(callStatus == CommonAPI::CallStatus::INVALID_VALUE);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ dataIn.insert(dataIn.begin(), (uint8_t*) &restartReason, ((uint8_t*) &restartReason) + sizeof(restartReason));
+ // Explicitly pass wrong value
+#pragma GCC diagnostic ignored "-Wconversion"
+ proxyTest->SetNsmData(
+ GENIVI::NodeStateManagerTypes::NsmDataType_e((GENIVI::NodeStateManagerTypes::NsmDataType_e::Literal) 0xFFFFFFFF),
+ dataIn, sizeof(restartReason), callStatus, nsm_test_errorCode);
+#pragma GCC diagnostic pop
+ ASSERT_TRUE(callStatus == CommonAPI::CallStatus::INVALID_VALUE);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_InvalidData ==> end"));
+}
+
+/********************************************************************************************
+ * RegisterSession Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, RegisterSession)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_RegisterSession ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_RegisterSession");
+ RecordProperty("TestCaseDescription", "");
+
+ proxyConsumer->RegisterSession("VoiceControl", "NodeStateManager", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->RegisterSession(NSMTST__260CHAR_STRING, "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->RegisterSession("VoiceControl", NSMTST__260CHAR_STRING, GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->RegisterSession("VoiceControl", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_NotSet, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ // Explicitly pass wrong value
+#pragma GCC diagnostic ignored "-Wconversion"
+ proxyConsumer->RegisterSession("VoiceControl", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e((GENIVI::NodeStateManagerTypes::NsmSeat_e::Literal)0xFFFFFFFF), GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+#pragma GCC diagnostic pop
+ ASSERT_TRUE(callStatus == CommonAPI::CallStatus::INVALID_VALUE);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->RegisterSession("VoiceControl", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Unregistered, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->RegisterSession("DiagnosisSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->RegisterSession("VoiceControl", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_RegisterSession ==> end"));
+}
+
+/********************************************************************************************
+ * UnRegisterSession Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, UnregisterSession)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_UnregisterSession ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_UnregisterSession");
+ RecordProperty("TestCaseDescription", "");
+
+ proxyConsumer->UnRegisterSession(NSMTST__260CHAR_STRING, "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->UnRegisterSession("VoiceControl", NSMTST__260CHAR_STRING, GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->UnRegisterSession("DiagnosisSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_WrongSession);
+
+ proxyConsumer->UnRegisterSession("Unknown", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_WrongSession);
+
+ proxyConsumer->UnRegisterSession("VoiceControl", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_UnregisterSession ==> end"));
+}
+
+/********************************************************************************************
+ * SessionState Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, SetSessionState)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_SetSessionState ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_SetSessionState");
+ RecordProperty("TestCaseDescription", "");
+
+ std::vector<uint8_t> dataIn;
+ std::vector<uint8_t> dataOut;
+ NsmSession_s session;
+
+ GENIVI::NodeStateManagerTypes::NsmSessionState_e sessionState;
+
+ proxyConsumer->SetSessionState(NSMTST__260CHAR_STRING, "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->SetSessionState("VoiceControl", NSMTST__260CHAR_STRING, GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->SetSessionState("VoiceControl", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_WrongSession);
+
+ proxyConsumer->SetSessionState("VoiceControl", "NodeStateManager", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->SetSessionState("VoiceControl", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Unregistered, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->SetSessionState("VoiceControl", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_NotSet, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ // Explicitly pass wrong value
+#pragma GCC diagnostic ignored "-Wconversion"
+ proxyConsumer->SetSessionState("VoiceControl", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e((GENIVI::NodeStateManagerTypes::NsmSeat_e::Literal)0xFFFFFFFF), GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+#pragma GCC diagnostic pop
+ ASSERT_TRUE(callStatus == CommonAPI::CallStatus::INVALID_VALUE);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->SetSessionState("DiagnosisSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->SetSessionState("DiagnosisSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e((GENIVI::NodeStateManagerTypes::NsmSessionState_e::Literal)0x03), callStatus, errorCode);
+ ASSERT_TRUE(callStatus == CommonAPI::CallStatus::INVALID_VALUE);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->SetSessionState("DiagnosisSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Inactive, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->SetSessionState("DiagnosisSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->SetSessionState("DiagnosisSession", "NodeStateTest02", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Error);
+
+ proxyConsumer->SetSessionState("DiagnosisSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Inactive, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->SetSessionState("DiagnosisSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Inactive, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyConsumer->SetSessionState("ProductSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_WrongSession);
+
+ proxyConsumer->RegisterSession("ProductSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->SetSessionState("ProductSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Inactive, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->SetSessionState("ProductSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Inactive, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->GetSessionState(NSMTST__260CHAR_STRING, GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, callStatus, sessionState, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+ ASSERT_TRUE(sessionState == GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Unregistered);
+
+ proxyConsumer->GetSessionState("ProductSession", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, callStatus, sessionState, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+ ASSERT_TRUE(sessionState == GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Inactive);
+
+ proxyConsumer->GetSessionState("UnknownSession", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, callStatus, sessionState, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_WrongSession);
+ ASSERT_TRUE(sessionState == GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Unregistered);
+
+ proxyConsumer->UnRegisterSession("ProductSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ strcpy(session.sName, "ProductSession");
+ strcpy(session.sOwner, "NodeStateTest");
+
+ session.enSeat = NsmSeat_Driver;
+ session.enState = NsmSessionState_Active;
+
+ dataOut.clear();
+ dataIn.insert(dataIn.begin(), (uint8_t*) &session, ((uint8_t*) &session) + sizeof(session));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_SessionState, dataIn, sizeof(session), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_WrongSession);
+
+ dataOut.clear();
+ dataIn.insert(dataIn.begin(), (uint8_t*) &session, ((uint8_t*) &session) + sizeof(session));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_SessionState, dataIn, 4, callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ dataOut.clear();
+ dataOut.reserve(sizeof(session));
+ dataIn.clear();
+ dataIn.insert(dataIn.begin(), (uint8_t*) &session, ((uint8_t*) &session) + sizeof(session));
+ proxyTest->GetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_SessionState, dataIn, 5, callStatus, dataOut, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == -1);
+ memcpy(&session, dataOut.data(), sizeof(session));
+ ASSERT_TRUE(session.enState == (int)GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Unregistered);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_SetSessionState ==> end"));
+}
+
+/********************************************************************************************
+ * AppHealth Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, GetAppHealth)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_GetAppHealth ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_SGetAppHealth");
+ RecordProperty("TestCaseDescription", "");
+
+ proxyConsumer->GetAppHealthCount(callStatus, var_ui32);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(var_ui32 == 0);
+
+ proxyLifecycleControl->SetAppHealthStatus(NSMTST__260CHAR_STRING, true, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ proxyLifecycleControl->SetAppHealthStatus("NodeStateTest", true, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Error);
+
+ proxyLifecycleControl->SetAppHealthStatus("NodeStateTest", false, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyLifecycleControl->SetAppHealthStatus("NodeStateTest", true, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->RegisterSession("ProductSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyLifecycleControl->SetAppHealthStatus("NodeStateTest", false, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyLifecycleControl->SetAppHealthStatus("NodeStateTest1", false, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyLifecycleControl->SetAppHealthStatus("NodeStateTest", true, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->SetSessionState("DiagnosisSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->SetSessionState("HevacSession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyLifecycleControl->SetAppHealthStatus("NodeStateTest", false, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_GetAppHealth ==> end"));
+}
+
+/********************************************************************************************
+ * Luc Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, CheckLuc)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_CheckLuc ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_CheckLuc");
+ RecordProperty("TestCaseDescription", "");
+
+ int barrier1 = 0;
+ int barrier2 = 0;
+ int barrier3 = 0;
+ int barrier4 = 0;
+ int barrier5 = 0;
+
+ uint32_t expected_mode_1 = NSM_SHUTDOWNTYPE_NOT;
+ uint32_t expected_mode_2 = NSM_SHUTDOWNTYPE_NOT;
+ uint32_t expected_mode_3 = NSM_SHUTDOWNTYPE_NOT;
+ uint32_t expected_mode_4 = NSM_SHUTDOWNTYPE_NOT;
+ uint32_t expected_mode_5 = NSM_SHUTDOWNTYPE_NOT;
+
+
+ bool lucWanted;
+ proxyLifecycleControl->CheckLucRequired(callStatus, lucWanted);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(lucWanted);
+
+ registeredShutdownClientCb = 0;
+
+ proxyConsumer_1->getShutdownEventsSelectiveEvent().subscribe([&](const uint32_t mode)
+ {
+ ASSERT_EQ(mode, expected_mode_1);
+ barrier1 = 1;
+ }, [&](CommonAPI::CallStatus callStatus)
+ {
+ if(callStatus == CommonAPI::CallStatus::SUCCESS)
+ {
+ proxyConsumer_1->RegisterShutdownClientAsync(NSM_SHUTDOWNTYPE_NORMAL, 2000, async_callback);
+ proxyConsumer_1->RegisterShutdownClientAsync(NSM_SHUTDOWNTYPE_FAST, 2000, async_callback);
+ }
+ });
+
+ std::unique_lock<std::mutex> lock(mMutexRegisterdClientCb);
+ while (registeredShutdownClientCb < 2)
+ {
+ mCondVarRegisterdClientCb.wait(lock);
+ }
+ registeredShutdownClientCb = 0;
+ lock.unlock();
+
+ proxyConsumer_2->getShutdownEventsSelectiveEvent().subscribe([&](const uint32_t mode)
+ {
+ ASSERT_EQ(mode, expected_mode_2);
+ barrier2 = 1;
+ }, [&](CommonAPI::CallStatus callStatus)
+ {
+ if(callStatus == CommonAPI::CallStatus::SUCCESS)
+ {
+ proxyConsumer_2->RegisterShutdownClientAsync(NSM_SHUTDOWNTYPE_NORMAL, 2000, async_callback);
+ proxyConsumer_2->RegisterShutdownClientAsync(NSM_SHUTDOWNTYPE_FAST, 2000, async_callback);
+ }
+ });
+
+ lock.lock();
+ while (registeredShutdownClientCb < 2)
+ {
+ mCondVarRegisterdClientCb.wait(lock);
+ }
+ registeredShutdownClientCb = 0;
+ lock.unlock();
+
+ proxyConsumer_3->getShutdownEventsSelectiveEvent().subscribe([&](const uint32_t mode)
+ {
+ ASSERT_EQ(mode, expected_mode_3);
+ barrier3 = 1;
+ }, [&](CommonAPI::CallStatus callStatus)
+ {
+ if(callStatus == CommonAPI::CallStatus::SUCCESS)
+ {
+ proxyConsumer_3->RegisterShutdownClientAsync(NSM_SHUTDOWNTYPE_NORMAL, 2000, async_callback);
+ }
+ });
+
+ lock.lock();
+ while (registeredShutdownClientCb < 1)
+ {
+ mCondVarRegisterdClientCb.wait(lock);
+ }
+ registeredShutdownClientCb = 0;
+ lock.unlock();
+
+ proxyConsumer_4->getShutdownEventsSelectiveEvent().subscribe([&](const uint32_t mode)
+ {
+ ASSERT_EQ(mode, expected_mode_4);
+ barrier4 = 1;
+ }, [&](CommonAPI::CallStatus callStatus)
+ {
+ if(callStatus == CommonAPI::CallStatus::SUCCESS)
+ {
+ proxyConsumer_4->RegisterShutdownClientAsync(NSM_SHUTDOWNTYPE_NORMAL, 2000, async_callback);
+ }
+ });
+
+ lock.lock();
+ while (registeredShutdownClientCb < 1)
+ {
+ mCondVarRegisterdClientCb.wait(lock);
+ }
+ registeredShutdownClientCb = 0;
+ lock.unlock();
+
+ proxyConsumer_5->getShutdownEventsSelectiveEvent().subscribe([&](const uint32_t mode)
+ {
+ ASSERT_EQ(mode, expected_mode_5);
+ barrier5 = 1;
+ }, [&](CommonAPI::CallStatus callStatus)
+ {
+ if(callStatus == CommonAPI::CallStatus::SUCCESS)
+ {
+ proxyConsumer_5->RegisterShutdownClientAsync(NSM_SHUTDOWNTYPE_NORMAL | NSM_SHUTDOWNTYPE_FAST, 2000, async_callback);
+ }
+ });
+
+ lock.lock();
+ while (registeredShutdownClientCb < 1)
+ {
+ mCondVarRegisterdClientCb.wait(lock);
+ }
+ registeredShutdownClientCb = 0;
+ lock.unlock();
+
+ proxyConsumer_1->UnRegisterShutdownClient(NSM_SHUTDOWNTYPE_FAST, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->UnRegisterShutdownClient(NSM_SHUTDOWNTYPE_NORMAL, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Parameter);
+
+ expected_mode_1 = NSM_SHUTDOWNTYPE_NORMAL;
+ expected_mode_2 = NSM_SHUTDOWNTYPE_NORMAL;
+ expected_mode_3 = NSM_SHUTDOWNTYPE_NORMAL;
+ expected_mode_4 = NSM_SHUTDOWNTYPE_NORMAL;
+ expected_mode_5 = NSM_SHUTDOWNTYPE_NORMAL;
+
+ // Set NodeState to BaseRunning because NSM already is in Shutdown Mode -> it will not shutdown again
+ proxyLifecycleControl->SetNodeState(GENIVI::NodeStateManagerTypes::NsmNodeState_e::NsmNodeState_BaseRunning, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ // Set NodeState to ShuttingDown
+ proxyLifecycleControl->SetNodeState(GENIVI::NodeStateManagerTypes::NsmNodeState_e::NsmNodeState_ShuttingDown, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ // Wait until LifecycleConsumer is notified
+ while(0 == barrier5) { usleep(10); } barrier5 = 0;
+ proxyConsumer_5->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(NsmErrorStatus_Ok, errorCode);
+
+ while(0 == barrier4) { usleep(10); } barrier4 = 0;
+ proxyConsumer_4->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(NsmErrorStatus_Ok, errorCode);
+
+ while(0 == barrier3) { usleep(10); } barrier3 = 0;
+ proxyConsumer_3->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Error, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier2) { usleep(10); } barrier2 = 0;
+ proxyConsumer_2->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier1) { usleep(10); } barrier1 = 0;
+ proxyConsumer_1->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ expected_mode_1 = NSM_SHUTDOWNTYPE_RUNUP;
+ expected_mode_2 = NSM_SHUTDOWNTYPE_RUNUP;
+ expected_mode_3 = NSM_SHUTDOWNTYPE_RUNUP;
+ expected_mode_4 = NSM_SHUTDOWNTYPE_RUNUP;
+ expected_mode_5 = NSM_SHUTDOWNTYPE_RUNUP;
+
+ // Set NodeState to BaseRunning
+ proxyLifecycleControl->SetNodeState(GENIVI::NodeStateManagerTypes::NsmNodeState_e::NsmNodeState_BaseRunning, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier1) { usleep(10); } barrier1 = 0;
+ proxyConsumer_1->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier2) { usleep(10); } barrier2 = 0;
+ proxyConsumer_2->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier3) { usleep(10); } barrier3 = 0;
+ proxyConsumer_3->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier4) { usleep(10); } barrier4 = 0;
+ proxyConsumer_4->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier5) { usleep(10); } barrier5 = 0;
+ proxyConsumer_5->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ expected_mode_2 = NSM_SHUTDOWNTYPE_FAST;
+ expected_mode_5 = NSM_SHUTDOWNTYPE_FAST;
+
+ proxyLifecycleControl->SetNodeState(GENIVI::NodeStateManagerTypes::NsmNodeState_e::NsmNodeState_FastShutdown, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier5) { usleep(10); } barrier5 = 0;
+ proxyConsumer_5->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier2) { usleep(10); } barrier2 = 0;
+ proxyConsumer_2->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ expected_mode_2 = NSM_SHUTDOWNTYPE_RUNUP;
+ expected_mode_5 = NSM_SHUTDOWNTYPE_RUNUP;
+
+ // Set NodeState to BaseRunning
+ proxyLifecycleControl->SetNodeState(GENIVI::NodeStateManagerTypes::NsmNodeState_e::NsmNodeState_BaseRunning, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier2) { usleep(10); } barrier2 = 0;
+ proxyConsumer_2->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ while(0 == barrier5) { usleep(10); } barrier5 = 0;
+ proxyConsumer_5->LifecycleRequestComplete(GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok, callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer_1->UnRegisterShutdownClient(NSM_SHUTDOWNTYPE_NORMAL | NSM_SHUTDOWNTYPE_NORMAL , callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer_2->UnRegisterShutdownClient(NSM_SHUTDOWNTYPE_NORMAL | NSM_SHUTDOWNTYPE_NORMAL , callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer_3->UnRegisterShutdownClient(NSM_SHUTDOWNTYPE_NORMAL | NSM_SHUTDOWNTYPE_NORMAL , callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer_4->UnRegisterShutdownClient(NSM_SHUTDOWNTYPE_NORMAL | NSM_SHUTDOWNTYPE_NORMAL , callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer_5->UnRegisterShutdownClient(NSM_SHUTDOWNTYPE_NORMAL | NSM_SHUTDOWNTYPE_NORMAL , callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(errorCode == GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_CheckLuc ==> end"));
+}
+
+/********************************************************************************************
+ * SessionState Tests
+ ********************************************************************************************/
+
+TEST_F(NSMTest_GENIVI, SessionState)
+{
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_SessionState ==> start"));
+
+ RecordProperty("TestCaseID", "GENIVI_SessionState");
+ RecordProperty("TestCaseDescription", "");
+
+ NsmSession_s session;
+ GENIVI::NodeStateManagerTypes::NsmSessionState_e sessionState;
+ GENIVI::NodeStateManagerTypes::NsmSeat_e seatID;
+ std::string sessionStateName;
+
+ std::vector<uint8_t> dataIn;
+ std::vector<uint8_t> dataOut;
+
+ proxyConsumer->SetSessionState("PlatformSupplySession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e((GENIVI::NodeStateManagerTypes::NsmSessionState_e::Literal) 0x02), callStatus, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ proxyConsumer->GetSessionState("PlatformSupplySession", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, callStatus, sessionState, errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+ ASSERT_TRUE(sessionState == GENIVI::NodeStateManagerTypes::NsmSessionState_e((GENIVI::NodeStateManagerTypes::NsmSessionState_e::Literal) 0x02));
+
+ sessionState = GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Unregistered;
+ proxyConsumer->getSessionStateChangedEvent().subscribe([&](std::string SessionStateName, GENIVI::NodeStateManagerTypes::NsmSeat_e SeatID, GENIVI::NodeStateManagerTypes::NsmSessionState_e SessionState)
+ {
+ sessionStateName.assign(SessionStateName);
+ seatID = SeatID;
+ sessionState = SessionState;
+ });
+
+ usleep(10000);
+
+ proxyConsumer->SetSessionState("PlatformSupplySession", "NodeStateTest", GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver, GENIVI::NodeStateManagerTypes::NsmSessionState_e((GENIVI::NodeStateManagerTypes::NsmSessionState_e::Literal) 0x03), callStatus, errorCode);
+ ASSERT_TRUE(callStatus == CommonAPI::CallStatus::INVALID_VALUE);
+ ASSERT_EQ(errorCode, GENIVI::NodeStateManagerTypes::NsmErrorStatus_e::NsmErrorStatus_Ok);
+
+ strcpy(session.sName, "StateMachine");
+ strcpy(session.sOwner, "NodeStateTest");
+
+ session.enSeat = NsmSeat_Driver;
+ session.enState = NsmSessionState_Active;
+
+ sessionState = GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Unregistered;
+ proxyConsumer->getSessionStateChangedEvent().subscribe([&](std::string SessionStateName, GENIVI::NodeStateManagerTypes::NsmSeat_e SeatID, GENIVI::NodeStateManagerTypes::NsmSessionState_e SessionState)
+ {
+ sessionStateName.assign(SessionStateName);
+ seatID = SeatID;
+ sessionState = SessionState;
+ });
+
+ usleep(10000);
+
+ dataOut.clear();
+ dataIn.insert(dataIn.begin(), (uint8_t*) &session, ((uint8_t*) &session) + sizeof(session));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_RegisterSession, dataIn, sizeof(session), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(nsm_test_errorCode, NsmErrorStatus_Ok);
+
+ while (sessionState == GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Unregistered)
+ usleep(10);
+
+ ASSERT_TRUE(0 == sessionStateName.compare("StateMachine"));
+ ASSERT_TRUE(seatID == GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver);
+ ASSERT_TRUE(sessionState == GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Active);
+
+ dataOut.clear();
+ dataIn.insert(dataIn.begin(), (uint8_t*) &session, ((uint8_t*) &session) + sizeof(session));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_RegisterSession, dataIn, sizeof(session) - 1, callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ dataOut.clear();
+ dataIn.insert(dataIn.begin(), (uint8_t*) &session, ((uint8_t*) &session) + sizeof(session));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_UnRegisterSession, dataIn, sizeof(session) - 1, callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_TRUE(nsm_test_errorCode == NsmErrorStatus_Parameter);
+
+ sessionState = GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Inactive;
+ proxyConsumer->getSessionStateChangedEvent().subscribe([&](std::string SessionStateName, GENIVI::NodeStateManagerTypes::NsmSeat_e SeatID, GENIVI::NodeStateManagerTypes::NsmSessionState_e SessionState)
+ {
+ sessionStateName.assign(SessionStateName);
+ seatID = SeatID;
+ sessionState = SessionState;
+ });
+
+ usleep(10000);
+
+ session.enState = NsmSessionState_Unregistered;
+ dataOut.clear();
+ dataIn.insert(dataIn.begin(), (uint8_t*) &session, ((uint8_t*) &session) + sizeof(session));
+ proxyTest->SetNsmData(GENIVI::NodeStateManagerTypes::NsmDataType_e::NsmDataType_UnRegisterSession, dataIn, sizeof(session), callStatus, nsm_test_errorCode);
+ ASSERT_EQ(callStatus, CommonAPI::CallStatus::SUCCESS);
+ ASSERT_EQ(nsm_test_errorCode, NsmErrorStatus_Ok);
+
+ while (sessionState == GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Inactive)
+ usleep(10);
+
+ ASSERT_TRUE(0 == sessionStateName.compare("StateMachine"));
+ ASSERT_TRUE(seatID == GENIVI::NodeStateManagerTypes::NsmSeat_e::NsmSeat_Driver);
+ ASSERT_TRUE(sessionState == GENIVI::NodeStateManagerTypes::NsmSessionState_e::NsmSessionState_Unregistered);
+
+ DLT_LOG(gNSMTestContext, DLT_LOG_INFO, DLT_STRING("run_test_GENIVI_SessionState ==> end"));
+}