aboutsummaryrefslogtreecommitdiffstats
path: root/test/test-platform/TestPlatform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/test-platform/TestPlatform.cpp')
-rw-r--r--test/test-platform/TestPlatform.cpp195
1 files changed, 195 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;
+}
+