aboutsummaryrefslogtreecommitdiffstats
path: root/test/test-platform
diff options
context:
space:
mode:
authorGuillaume Denneulin <guillaumex.denneulin@intel.com>2012-02-17 15:22:59 +0100
committerDavid Wagner <david.wagner@intel.com>2014-02-10 17:15:03 +0100
commitd1406495a57f856e086e3599161f4a44a2745449 (patch)
treeb051bcb5d914772c7b7fa908ffe5f90c289dc03e /test/test-platform
parenta4ec15d5d5e84fbee3faa46a66e7b1eb90816ce2 (diff)
downloadexternal_parameter-framework-d1406495a57f856e086e3599161f4a44a2745449.zip
external_parameter-framework-d1406495a57f856e086e3599161f4a44a2745449.tar.gz
external_parameter-framework-d1406495a57f856e086e3599161f4a44a2745449.tar.bz2
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 <guillaumex.denneulin@intel.com> Reviewed-on: http://android.intel.com:8080/35904 Reviewed-by: Barthes, FabienX <fabienx.barthes@intel.com> Tested-by: Barthes, FabienX <fabienx.barthes@intel.com> Reviewed-by: buildbot <buildbot@intel.com> Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'test/test-platform')
-rw-r--r--test/test-platform/TestPlatform.cpp195
-rw-r--r--test/test-platform/TestPlatform.h79
-rw-r--r--test/test-platform/main.cpp79
3 files changed, 353 insertions, 0 deletions
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 @@
+/* <auto_header>
+ *
+ * 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
+ *
+ *
+ * </auto_header>
+ */
+#include <strings.h>
+#include <iostream>
+#include <stdlib.h>
+#include <sstream>
+#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, "<name> <nbStates>", "Create inclusive selection criterion");
+ _pCommandHandler->addCommandParser("createInclusiveSelectionCriterion", &CTestPlatform::createInclusiveSelectionCriterionCommandProcess, 2, "<name> <nbStates>", "Create exclusive selection criterion");
+ _pCommandHandler->addCommandParser("start", &CTestPlatform::startParameterMgrCommandProcess, 0, "", "Start ParameterMgr");
+ _pCommandHandler->addCommandParser("setCriterionState", &CTestPlatform::setCriterionStateCommandProcess, 2, "<name> <state>", "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 @@
+/* <auto_header>
+ *
+ * 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
+ *
+ *
+ * </auto_header>
+ */
+#pragma once
+
+#include <string>
+#include <list>
+#include "RemoteCommandHandlerTemplate.h"
+
+using namespace std;
+
+class CParameterMgrPlatformConnector;
+class CParameterMgrPlatformConnectorLogger;
+class CRemoteProcessorServer;
+class ISelectionCriterionInterface;
+
+class CTestPlatform
+{
+ typedef TRemoteCommandHandlerTemplate<CTestPlatform> 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 @@
+/* <auto_header>
+ *
+ * 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
+ *
+ *
+ * </auto_header>
+ */
+#include <iostream>
+#include <semaphore.h>
+#include "TestPlatform.h"
+#include <semaphore.h>
+
+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;
+}