From d1406495a57f856e086e3599161f4a44a2745449 Mon Sep 17 00:00:00 2001 From: Guillaume Denneulin Date: Fri, 17 Feb 2012 15:22:59 +0100 Subject: PFW: Add test means BZ: 12873 In order to test the parameter-framework, new means have been developped. they consist in 2 distinct interfaces: - Simulate platform behavior through command-line - Simulate HW behavior through test-plugin performing R/W in file system. Change-Id: I6efc9b5489155d9f334a72d7ed65324c3e52690f Signed-off-by: Guillaume Denneulin Reviewed-on: http://android.intel.com:8080/35904 Reviewed-by: Barthes, FabienX Tested-by: Barthes, FabienX Reviewed-by: buildbot Tested-by: buildbot --- test/test-platform/TestPlatform.cpp | 195 ++++++++++++++++++++++++++++++++++++ test/test-platform/TestPlatform.h | 79 +++++++++++++++ test/test-platform/main.cpp | 79 +++++++++++++++ 3 files changed, 353 insertions(+) create mode 100644 test/test-platform/TestPlatform.cpp create mode 100644 test/test-platform/TestPlatform.h create mode 100644 test/test-platform/main.cpp (limited to 'test/test-platform') diff --git a/test/test-platform/TestPlatform.cpp b/test/test-platform/TestPlatform.cpp new file mode 100644 index 0000000..3e6148b --- /dev/null +++ b/test/test-platform/TestPlatform.cpp @@ -0,0 +1,195 @@ +/* + * + * INTEL CONFIDENTIAL + * Copyright 2011 Intel + * Corporation All Rights Reserved. + * + * The source code contained or described herein and all documents related to + * the source code ("Material") are owned by Intel Corporation or its suppliers + * or licensors. Title to the Material remains with Intel Corporation or its + * suppliers and licensors. The Material contains trade secrets and proprietary + * and confidential information of Intel or its suppliers and licensors. The + * Material is protected by worldwide copyright and trade secret laws and + * treaty provisions. No part of the Material may be used, copied, reproduced, + * modified, published, uploaded, posted, transmitted, distributed, or + * disclosed in any way without Intels prior express written permission. + * + * No license under any patent, copyright, trade secret or other intellectual + * property right is granted to or conferred upon you by disclosure or delivery + * of the Materials, either expressly, by implication, inducement, estoppel or + * otherwise. Any license under such intellectual property rights must be + * express and approved by Intel in writing. + * + * AUTHOR: Guillaume Denneulin (guillaumex.denneulin@intel.com) + * CREATED: 2011-11-25 + * UPDATED: 2011-11-25 + * + * + * + */ +#include +#include +#include +#include +#include "TestPlatform.h" +#include "ParameterMgrPlatformConnector.h" +#include "RemoteProcessorServer.h" + +class CParameterMgrPlatformConnectorLogger : public CParameterMgrPlatformConnector::ILogger +{ +public: + CParameterMgrPlatformConnectorLogger() {} + + virtual void log(const string& strLog) { + + cout << strLog << endl; + } +}; + + +CTestPlatform::CTestPlatform(const string& strClass) : + _pParameterMgrPlatformConnector(new CParameterMgrPlatformConnector(strClass)), + _pParameterMgrPlatformConnectorLogger(new CParameterMgrPlatformConnectorLogger) +{ + _pCommandHandler = new CCommandHandler(this); + + // Add command parsers + _pCommandHandler->addCommandParser("createExclusiveSelectionCriterion", &CTestPlatform::createExclusiveSelectionCriterionCommandProcess, 2, " ", "Create inclusive selection criterion"); + _pCommandHandler->addCommandParser("createInclusiveSelectionCriterion", &CTestPlatform::createInclusiveSelectionCriterionCommandProcess, 2, " ", "Create exclusive selection criterion"); + _pCommandHandler->addCommandParser("start", &CTestPlatform::startParameterMgrCommandProcess, 0, "", "Start ParameterMgr"); + _pCommandHandler->addCommandParser("setCriterionState", &CTestPlatform::setCriterionStateCommandProcess, 2, " ", "Set the current state of a selection criterion"); + _pCommandHandler->addCommandParser("applyConfigurations", &CTestPlatform::applyConfigurationsCommandProcess, 0, "", "Apply configurations selected by current selection criteria states"); + + // Create server + _pRemoteProcessorServer = new CRemoteProcessorServer(5001, _pCommandHandler); + + _pParameterMgrPlatformConnector->setLogger(_pParameterMgrPlatformConnectorLogger); +} + +CTestPlatform::~CTestPlatform() +{ + delete _pRemoteProcessorServer; + delete _pCommandHandler; + delete _pParameterMgrPlatformConnectorLogger; + delete _pParameterMgrPlatformConnector; +} + +bool CTestPlatform::load(std::string& strError) +{ + // Start remote processor server + if (!_pRemoteProcessorServer->start()) { + + strError = "Unable to start remote processor server"; + + return false; + } + + return true; +} + +//////////////// Remote command parsers +/// Selection Criterion +CTestPlatform::CCommandHandler::CommandStatus CTestPlatform::createExclusiveSelectionCriterionCommandProcess(const IRemoteCommand& remoteCommand, string& strResult) +{ + return createExclusiveSelectionCriterion(remoteCommand.getArgument(0), strtoul(remoteCommand.getArgument(1).c_str(), NULL, 0), strResult) ? CTestPlatform::CCommandHandler::EDone : CTestPlatform::CCommandHandler::EFailed; +} + +CTestPlatform::CCommandHandler::CommandStatus CTestPlatform::createInclusiveSelectionCriterionCommandProcess(const IRemoteCommand& remoteCommand, string& strResult) +{ + return createInclusiveSelectionCriterion(remoteCommand.getArgument(0), strtoul(remoteCommand.getArgument(1).c_str(), NULL, 0), strResult) ? CTestPlatform::CCommandHandler::EDone : CTestPlatform::CCommandHandler::EFailed; +} + + +CTestPlatform::CCommandHandler::CommandStatus CTestPlatform::startParameterMgrCommandProcess(const IRemoteCommand& remoteCommand, string& strResult) +{ + (void)remoteCommand; + return _pParameterMgrPlatformConnector->start(strResult) ? CTestPlatform::CCommandHandler::EDone : CTestPlatform::CCommandHandler::EFailed; +} + +CTestPlatform::CCommandHandler::CommandStatus CTestPlatform::setCriterionStateCommandProcess(const IRemoteCommand& remoteCommand, string& strResult) +{ + return setCriterionState(remoteCommand.getArgument(0), strtoul(remoteCommand.getArgument(1).c_str(), NULL, 0), strResult) ? CTestPlatform::CCommandHandler::EDone : CTestPlatform::CCommandHandler::EFailed; +} + +CTestPlatform::CCommandHandler::CommandStatus CTestPlatform::applyConfigurationsCommandProcess(const IRemoteCommand& remoteCommand, string& strResult) +{ + (void)remoteCommand; + return _pParameterMgrPlatformConnector->applyConfigurations(strResult) ? CTestPlatform::CCommandHandler::EDone : CTestPlatform::CCommandHandler::EFailed; +} + +//////////////// Remote command handlers +bool CTestPlatform::createExclusiveSelectionCriterion(const string& strName, uint32_t uiNbStates, string& strResult) +{ + ISelectionCriterionTypeInterface* pCriterionType = _pParameterMgrPlatformConnector->createSelectionCriterionType(false); + + uint32_t uistate; + + for (uistate = 0; uistate < uiNbStates; uistate++) { + + ostringstream ostrValue; + + ostrValue << "State_"; + ostrValue << uistate; + + if (!pCriterionType->addValuePair(uistate, ostrValue.str())) { + + strResult = "Unable to add value: " + ostrValue.str(); + + return false; + } + } + + _pParameterMgrPlatformConnector->createSelectionCriterion(strName, pCriterionType); + + return true; +} + +bool CTestPlatform::createInclusiveSelectionCriterion(const string& strName, uint32_t uiNbStates, string& strResult) +{ + ISelectionCriterionTypeInterface* pCriterionType = _pParameterMgrPlatformConnector->createSelectionCriterionType(true); + + if (uiNbStates > 32) { + + strResult = "Maximum number of states for inclusive criterion is 32"; + + return false; + } + + uint32_t uiState; + + for (uiState = 0; uiState < uiNbStates; uiState++) { + + ostringstream ostrValue; + + ostrValue << "State_0x"; + ostrValue << (0x1 << uiState); + + if (!pCriterionType->addValuePair(0x1 << uiState, ostrValue.str())) { + + strResult = "Unable to add value: " + ostrValue.str(); + + return false; + } + } + + _pParameterMgrPlatformConnector->createSelectionCriterion(strName, pCriterionType); + + return true; +} + +bool CTestPlatform::setCriterionState(const string& strName, uint32_t uiState, string& strResult) +{ + ISelectionCriterionInterface* pCriterion = _pParameterMgrPlatformConnector->getSelectionCriterion(strName); + + if (!pCriterion) { + + strResult = "Unable to retrieve selection criterion: " + strName; + + return false; + } + + pCriterion->setCriterionState(uiState); + + return true; +} + diff --git a/test/test-platform/TestPlatform.h b/test/test-platform/TestPlatform.h new file mode 100644 index 0000000..f169cce --- /dev/null +++ b/test/test-platform/TestPlatform.h @@ -0,0 +1,79 @@ +/* + * + * INTEL CONFIDENTIAL + * Copyright 2011 Intel + * Corporation All Rights Reserved. + * + * The source code contained or described herein and all documents related to + * the source code ("Material") are owned by Intel Corporation or its suppliers + * or licensors. Title to the Material remains with Intel Corporation or its + * suppliers and licensors. The Material contains trade secrets and proprietary + * and confidential information of Intel or its suppliers and licensors. The + * Material is protected by worldwide copyright and trade secret laws and + * treaty provisions. No part of the Material may be used, copied, reproduced, + * modified, published, uploaded, posted, transmitted, distributed, or + * disclosed in any way without Intels prior express written permission. + * + * No license under any patent, copyright, trade secret or other intellectual + * property right is granted to or conferred upon you by disclosure or delivery + * of the Materials, either expressly, by implication, inducement, estoppel or + * otherwise. Any license under such intellectual property rights must be + * express and approved by Intel in writing. + * + * AUTHOR: Guillaume Denneulin (guillaumex.denneulin@intel.com) + * CREATED: 2011-11-25 + * UPDATED: 2011-11-25 + * + * + * + */ +#pragma once + +#include +#include +#include "RemoteCommandHandlerTemplate.h" + +using namespace std; + +class CParameterMgrPlatformConnector; +class CParameterMgrPlatformConnectorLogger; +class CRemoteProcessorServer; +class ISelectionCriterionInterface; + +class CTestPlatform +{ + typedef TRemoteCommandHandlerTemplate CCommandHandler; +public: + CTestPlatform(const string &strclass); + virtual ~CTestPlatform(); + + // Init + bool load(string& strError); + +private: + //////////////// Remote command parsers + /// Selection Criterion + CCommandHandler::CommandStatus createExclusiveSelectionCriterionCommandProcess(const IRemoteCommand& remoteCommand, string& strResult); + CCommandHandler::CommandStatus createInclusiveSelectionCriterionCommandProcess(const IRemoteCommand& remoteCommand, string& strResult); + CCommandHandler::CommandStatus startParameterMgrCommandProcess(const IRemoteCommand& remoteCommand, string& strResult); + CCommandHandler::CommandStatus setCriterionStateCommandProcess(const IRemoteCommand& remoteCommand, string& strResult); + CCommandHandler::CommandStatus applyConfigurationsCommandProcess(const IRemoteCommand& remoteCommand, string& strResult); + + // Commands + bool createExclusiveSelectionCriterion(const string& strName, uint32_t uiNbValues, string& strResult); + bool createInclusiveSelectionCriterion(const string& strName, uint32_t uiNbValues, string& strResult); + bool setCriterionState(const string& strName, uint32_t uiState, string& strResult); + + // Connector + CParameterMgrPlatformConnector* _pParameterMgrPlatformConnector; + + // Logger + CParameterMgrPlatformConnectorLogger* _pParameterMgrPlatformConnectorLogger; + + // Command Handler + CCommandHandler* _pCommandHandler; + + // Remote Processor Server + CRemoteProcessorServer* _pRemoteProcessorServer; +}; + diff --git a/test/test-platform/main.cpp b/test/test-platform/main.cpp new file mode 100644 index 0000000..67d4ac6 --- /dev/null +++ b/test/test-platform/main.cpp @@ -0,0 +1,79 @@ +/* + * + * INTEL CONFIDENTIAL + * Copyright 2011 Intel + * Corporation All Rights Reserved. + * + * The source code contained or described herein and all documents related to + * the source code ("Material") are owned by Intel Corporation or its suppliers + * or licensors. Title to the Material remains with Intel Corporation or its + * suppliers and licensors. The Material contains trade secrets and proprietary + * and confidential information of Intel or its suppliers and licensors. The + * Material is protected by worldwide copyright and trade secret laws and + * treaty provisions. No part of the Material may be used, copied, reproduced, + * modified, published, uploaded, posted, transmitted, distributed, or + * disclosed in any way without Intels prior express written permission. + * + * No license under any patent, copyright, trade secret or other intellectual + * property right is granted to or conferred upon you by disclosure or delivery + * of the Materials, either expressly, by implication, inducement, estoppel or + * otherwise. Any license under such intellectual property rights must be + * express and approved by Intel in writing. + * + * AUTHOR: Guillaume Denneulin (guillaumex.denneulin@intel.com) + * CREATED: 2011-11-25 + * UPDATED: 2011-11-25 + * + * + * + */ +#include +#include +#include "TestPlatform.h" +#include + +using namespace std; + +/*#ifdef SIMULATION +//const char* gpcParameterFrameworkConfigurationFolderPath = "/home/pat/projects/qt/parameter-framework/XML"; +const char* gpcParameterFrameworkConfigurationFolderPath = "/home/pat/Documents/gingerbread/hardware/intel/PRIVATE/parameter-framework/XML"; +#else +const char* gpcParameterFrameworkConfigurationFolderPath = "/etc/parameter-framework"; +#endif +*/ + +int main(int argc, char *argv[]) +{ + if (argc < 2) { + + cerr << "Missing arguments" << endl; + + return -1; + } + + string strError; + + // Create param mgr + CTestPlatform testPlatform(argv[1]); + + // Start platformmgr + if (!testPlatform.load(strError)) { + + cerr << strError << endl; + + return -1; + } + + // Change criteria + + // Block here + sem_t sem; + + sem_init(&sem, false, 0); + + sem_wait(&sem); + + sem_destroy(&sem); + + return 0; +} -- cgit v1.1