165 lines
7.5 KiB
C++
165 lines
7.5 KiB
C++
/*
|
|
* Copyright (c) 2011-2014, Intel Corporation
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without modification,
|
|
* are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice, this
|
|
* list of conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation and/or
|
|
* other materials provided with the distribution.
|
|
*
|
|
* 3. Neither the name of the copyright holder nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software without
|
|
* specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
#pragma once
|
|
|
|
#include "ParameterMgrPlatformConnector.h"
|
|
#include "RemoteCommandHandlerTemplate.h"
|
|
#include "RemoteProcessorServer.h"
|
|
#include <string>
|
|
#include <iostream>
|
|
#include <list>
|
|
|
|
class CParameterMgrPlatformConnectorLogger;
|
|
class ISelectionCriterionInterface;
|
|
|
|
class CTestPlatform
|
|
{
|
|
typedef TRemoteCommandHandlerTemplate<CTestPlatform> CCommandHandler;
|
|
typedef CCommandHandler::CommandStatus CommandReturn;
|
|
|
|
public:
|
|
CTestPlatform(const std::string &strclass, std::string bindAddress);
|
|
virtual ~CTestPlatform();
|
|
|
|
// Init
|
|
bool run(std::string &strError);
|
|
|
|
private:
|
|
//////////////// Remote command parsers
|
|
/// Selection Criterion
|
|
CommandReturn createExclusiveSelectionCriterionFromStateList(
|
|
const IRemoteCommand &remoteCommand, std::string &strResult);
|
|
CommandReturn createInclusiveSelectionCriterionFromStateList(
|
|
const IRemoteCommand &remoteCommand, std::string &strResult);
|
|
|
|
CommandReturn createExclusiveSelectionCriterion(const IRemoteCommand &remoteCommand,
|
|
std::string &strResult);
|
|
CommandReturn createInclusiveSelectionCriterion(const IRemoteCommand &remoteCommand,
|
|
std::string &strResult);
|
|
|
|
CommandReturn getSchemaUri(const IRemoteCommand &remotecommand, std::string &result);
|
|
CommandReturn setSchemaUri(const IRemoteCommand &remotecommand, std::string &result);
|
|
|
|
/** Callback to set a criterion's value, see ISelectionCriterionInterface::setCriterionState.
|
|
* @see CCommandHandler::RemoteCommandParser for detail on each arguments and return
|
|
*
|
|
* @param[in] remoteCommand the first argument should be the name of the criterion to set.
|
|
* if the criterion is provided in lexical space,
|
|
* the following arguments should be criterion new values
|
|
* if the criterion is provided in numerical space,
|
|
* the second argument should be the criterion new value
|
|
*/
|
|
CommandReturn setCriterionState(const IRemoteCommand &remoteCommand, std::string &strResult);
|
|
|
|
/** Callback to start the PFW, see CParameterMgrPlatformConnector::start.
|
|
* @see CCommandHandler::RemoteCommandParser for detail on each arguments and return
|
|
*
|
|
* @param[in] remoteCommand is ignored
|
|
*/
|
|
CommandReturn startParameterMgr(const IRemoteCommand &remoteCommand, std::string &strResult);
|
|
|
|
/** Callback to apply PFW configuration, see CParameterMgrPlatformConnector::applyConfiguration.
|
|
* @see CCommandHandler::RemoteCommandParser for detail on each arguments and return
|
|
*
|
|
* @param[in] remoteCommand is ignored
|
|
*
|
|
* @return EDone (never fails)
|
|
*/
|
|
CommandReturn applyConfigurations(const IRemoteCommand &remoteCommand, std::string &strResult);
|
|
|
|
/** Callback to exit the test-platform.
|
|
*
|
|
* @param[in] remoteCommand is ignored
|
|
*
|
|
* @return EDone (never fails)
|
|
*/
|
|
CommandReturn exit(const IRemoteCommand &remoteCommand, std::string &strResult);
|
|
|
|
/** The type of a CParameterMgrPlatformConnector boolean setter. */
|
|
typedef bool (CParameterMgrPlatformConnector::*setter_t)(bool, std::string &);
|
|
/** Template callback to create a _pParameterMgrPlatformConnector boolean setter callback.
|
|
* @see CCommandHandler::RemoteCommandParser for detail on each arguments and return
|
|
*
|
|
* Convert the remoteCommand first argument to a boolean and call the
|
|
* template parameter function with this value.
|
|
*
|
|
* @tparam the boolean setter method.
|
|
* @param[in] remoteCommand the first argument should be ether "on" or "off".
|
|
*/
|
|
template <setter_t setFunction>
|
|
CommandReturn setter(const IRemoteCommand &remoteCommand, std::string &strResult);
|
|
|
|
/** The type of a CParameterMgrPlatformConnector boolean getter. */
|
|
typedef bool (CParameterMgrPlatformConnector::*getter_t)() const;
|
|
/** Template callback to create a ParameterMgrPlatformConnector boolean getter callback.
|
|
* @see CCommandHandler::RemoteCommandParser for detail on each arguments and return
|
|
*
|
|
* Convert to boolean returned by the template parameter function converted to a
|
|
* std::string ("True", "False") and return it.
|
|
*
|
|
* @param the boolean getter method.
|
|
* @param[in] remoteCommand is ignored
|
|
*
|
|
* @return EDone (never fails)
|
|
*/
|
|
template <getter_t getFunction>
|
|
CommandReturn getter(const IRemoteCommand &remoteCommand, std::string &strResult);
|
|
|
|
// Commands
|
|
bool createExclusiveSelectionCriterionFromStateList(const std::string &strName,
|
|
const IRemoteCommand &remoteCommand,
|
|
std::string &strResult);
|
|
bool createInclusiveSelectionCriterionFromStateList(const std::string &strName,
|
|
const IRemoteCommand &remoteCommand,
|
|
std::string &strResult);
|
|
|
|
bool createExclusiveSelectionCriterion(const std::string &strName, size_t nbValues,
|
|
std::string &strResult);
|
|
bool createInclusiveSelectionCriterion(const std::string &strName, size_t nbValues,
|
|
std::string &strResult);
|
|
bool setCriterionState(const std::string &strName, uint64_t uiState, std::string &strResult);
|
|
bool setCriterionStateByLexicalSpace(const IRemoteCommand &remoteCommand,
|
|
std::string &strResult);
|
|
|
|
// Connector
|
|
CParameterMgrPlatformConnector mParameterMgrPlatformConnector;
|
|
|
|
class : public CParameterMgrPlatformConnector::ILogger
|
|
{
|
|
public:
|
|
virtual void info(const std::string &log) { std::cout << log << std::endl; }
|
|
|
|
virtual void warning(const std::string &log) { std::cerr << log << std::endl; }
|
|
} mLogger;
|
|
|
|
// Remote Processor Server
|
|
CRemoteProcessorServer mRemoteProcessorServer;
|
|
};
|