From 205c71575c272a685011c641a33d26cf66cf60a0 Mon Sep 17 00:00:00 2001 From: gcontini <1121667+gcontini@users.noreply.github.com> Date: 周一, 10 2月 2020 05:01:07 +0800 Subject: [PATCH] fix unit test with old versions of boost --- src/library/pc_identifier/default_strategy.cpp | 71 ++++++++++++++++++++++++++++------- 1 files changed, 57 insertions(+), 14 deletions(-) diff --git a/src/library/pc_identifier/default_strategy.cpp b/src/library/pc_identifier/default_strategy.cpp index afa961f..0ef4561 100644 --- a/src/library/pc_identifier/default_strategy.cpp +++ b/src/library/pc_identifier/default_strategy.cpp @@ -1,35 +1,78 @@ /* * default_strategy.cpp * - * Created on: Jan 2, 2020 + * Created on: Jan 1, 2020 * Author: devel */ +#include <vector> +#include "pc_identifier_facade.hpp" +#include "../os/execution_environment.hpp" #include "default_strategy.hpp" +using namespace std; namespace license { +namespace pc_identifier { -DefaultStrategy::DefaultStrategy() { - // TODO Auto-generated constructor stub +static vector<LCC_API_IDENTIFICATION_STRATEGY> available_strategies() { + ExecutionEnvironment exec; + VIRTUALIZATION virtualization = exec.getVirtualization(); + vector<LCC_API_IDENTIFICATION_STRATEGY> strategy_to_try; + if (virtualization == CONTAINER) { + if (exec.is_docker()) { + strategy_to_try = LCC_DOCKER_STRATEGIES; + } else { + strategy_to_try = LCC_LXC_STRATEGIES; + } + } else if (virtualization == VM) { + if (exec.is_cloud()) { + strategy_to_try = LCC_CLOUD_STRATEGIES; + } else { + strategy_to_try = LCC_VM_STRATEGIES; + } + } else { + strategy_to_try = LCC_BARE_TO_METAL_STRATEGIES; + } + return strategy_to_try; } -DefaultStrategy::~DefaultStrategy() { - // TODO Auto-generated destructor stub +DefaultStrategy::DefaultStrategy() {} + +DefaultStrategy::~DefaultStrategy() {} + +LCC_API_IDENTIFICATION_STRATEGY DefaultStrategy::identification_strategy() const { return STRATEGY_DEFAULT; } + +FUNCTION_RETURN DefaultStrategy::identify_pc(PcIdentifier& pc_id) const { + vector<LCC_API_IDENTIFICATION_STRATEGY> strategy_to_try = available_strategies(); + FUNCTION_RETURN ret = FUNC_RET_NOT_AVAIL; + for (auto it : strategy_to_try) { + LCC_API_IDENTIFICATION_STRATEGY strat_to_try = it; + unique_ptr<IdentificationStrategy> strategy_ptr = IdentificationStrategy::get_strategy(strat_to_try); + ret = strategy_ptr->identify_pc(pc_id); + if (ret == FUNC_RET_OK) { + break; + } + } + return ret; } -DefaultStrategy::DefaultStrategy(const DefaultStrategy& other) { - // TODO Auto-generated constructor stub +std::vector<PcIdentifier> DefaultStrategy::alternative_ids() const { + vector<LCC_API_IDENTIFICATION_STRATEGY> strategy_to_try = available_strategies(); + vector<PcIdentifier> identifiers; + FUNCTION_RETURN ret = FUNC_RET_NOT_AVAIL; + for (auto it : strategy_to_try) { + LCC_API_IDENTIFICATION_STRATEGY strat_to_try = it; + unique_ptr<IdentificationStrategy> strategy_ptr = IdentificationStrategy::get_strategy(strat_to_try); + vector<PcIdentifier> alt_ids = strategy_ptr->alternative_ids(); + identifiers.insert(alt_ids.begin(), alt_ids.end(), identifiers.end()); + } + return identifiers; } -IDENTIFICATION_STRATEGY DefaultStrategy::identification_strategy() const { return STRATEGY_DEFAULT; } - -void DefaultStrategy::identify_pc(PcIdentifier& identifier) const {} - -std::vector<PcIdentifier> DefaultStrategy::alternative_ids() const {} - -EVENT_TYPE DefaultStrategy::validate_identifier(const PcIdentifier& identifier) const { +LCC_EVENT_TYPE DefaultStrategy::validate_identifier(const PcIdentifier& identifier) const { // default strategy should always realize itself as a concrete strategy return IDENTIFIERS_MISMATCH; } +} // namespace pc_identifier } /* namespace license */ -- Gitblit v1.9.1