From b5545c1575a8dd97cc76ae66dd6bb0fa7324a1d0 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Fri, 17 Jul 2020 11:45:47 +0200 Subject: [PATCH] Add helpers for AggregatedTopologyState --- fairmq/sdk/Topology.h | 20 +++++++++++++++++++- test/sdk/_topology.cxx | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/fairmq/sdk/Topology.h b/fairmq/sdk/Topology.h index 999abd9f..c6260b21 100644 --- a/fairmq/sdk/Topology.h +++ b/fairmq/sdk/Topology.h @@ -105,12 +105,30 @@ inline auto operator==(AggregatedTopologyState lhs, DeviceState rhs) -> bool inline std::ostream& operator<<(std::ostream& os, const AggregatedTopologyState& state) { if (state == AggregatedTopologyState::Mixed) { - return os << "Mixed"; + return os << "MIXED"; } else { return os << static_cast(state); } } +inline std::string GetAggregatedTopologyStateName(AggregatedTopologyState s) +{ + if (s == AggregatedTopologyState::Mixed) { + return "MIXED"; + } else { + return GetStateName(static_cast(s)); + } +} + +inline AggregatedTopologyState GetAggregatedTopologyState(const std::string& state) +{ + if (state == "MIXED") { + return AggregatedTopologyState::Mixed; + } else { + return static_cast(GetState(state)); + } +} + struct DeviceStatus { bool subscribed_to_state_changes; diff --git a/test/sdk/_topology.cxx b/test/sdk/_topology.cxx index 24b4ef7b..54027e97 100644 --- a/test/sdk/_topology.cxx +++ b/test/sdk/_topology.cxx @@ -472,6 +472,42 @@ TEST(Topology2, AggregatedTopologyStateComparison) ASSERT_TRUE(DeviceState::ResettingTask == AggregatedTopologyState::ResettingTask); ASSERT_TRUE(DeviceState::ResettingDevice == AggregatedTopologyState::ResettingDevice); ASSERT_TRUE(DeviceState::Exiting == AggregatedTopologyState::Exiting); + + ASSERT_TRUE(GetAggregatedTopologyState("UNDEFINED") == AggregatedTopologyState::Undefined); + ASSERT_TRUE(GetAggregatedTopologyState("OK") == AggregatedTopologyState::Ok); + ASSERT_TRUE(GetAggregatedTopologyState("ERROR") == AggregatedTopologyState::Error); + ASSERT_TRUE(GetAggregatedTopologyState("IDLE") == AggregatedTopologyState::Idle); + ASSERT_TRUE(GetAggregatedTopologyState("INITIALIZING DEVICE") == AggregatedTopologyState::InitializingDevice); + ASSERT_TRUE(GetAggregatedTopologyState("INITIALIZED") == AggregatedTopologyState::Initialized); + ASSERT_TRUE(GetAggregatedTopologyState("BINDING") == AggregatedTopologyState::Binding); + ASSERT_TRUE(GetAggregatedTopologyState("BOUND") == AggregatedTopologyState::Bound); + ASSERT_TRUE(GetAggregatedTopologyState("CONNECTING") == AggregatedTopologyState::Connecting); + ASSERT_TRUE(GetAggregatedTopologyState("DEVICE READY") == AggregatedTopologyState::DeviceReady); + ASSERT_TRUE(GetAggregatedTopologyState("INITIALIZING TASK") == AggregatedTopologyState::InitializingTask); + ASSERT_TRUE(GetAggregatedTopologyState("READY") == AggregatedTopologyState::Ready); + ASSERT_TRUE(GetAggregatedTopologyState("RUNNING") == AggregatedTopologyState::Running); + ASSERT_TRUE(GetAggregatedTopologyState("RESETTING TASK") == AggregatedTopologyState::ResettingTask); + ASSERT_TRUE(GetAggregatedTopologyState("RESETTING DEVICE") == AggregatedTopologyState::ResettingDevice); + ASSERT_TRUE(GetAggregatedTopologyState("EXITING") == AggregatedTopologyState::Exiting); + ASSERT_TRUE(GetAggregatedTopologyState("MIXED") == AggregatedTopologyState::Mixed); + + ASSERT_TRUE("UNDEFINED" == GetAggregatedTopologyStateName(AggregatedTopologyState::Undefined)); + ASSERT_TRUE("OK" == GetAggregatedTopologyStateName(AggregatedTopologyState::Ok)); + ASSERT_TRUE("ERROR" == GetAggregatedTopologyStateName(AggregatedTopologyState::Error)); + ASSERT_TRUE("IDLE" == GetAggregatedTopologyStateName(AggregatedTopologyState::Idle)); + ASSERT_TRUE("INITIALIZING DEVICE" == GetAggregatedTopologyStateName(AggregatedTopologyState::InitializingDevice)); + ASSERT_TRUE("INITIALIZED" == GetAggregatedTopologyStateName(AggregatedTopologyState::Initialized)); + ASSERT_TRUE("BINDING" == GetAggregatedTopologyStateName(AggregatedTopologyState::Binding)); + ASSERT_TRUE("BOUND" == GetAggregatedTopologyStateName(AggregatedTopologyState::Bound)); + ASSERT_TRUE("CONNECTING" == GetAggregatedTopologyStateName(AggregatedTopologyState::Connecting)); + ASSERT_TRUE("DEVICE READY" == GetAggregatedTopologyStateName(AggregatedTopologyState::DeviceReady)); + ASSERT_TRUE("INITIALIZING TASK" == GetAggregatedTopologyStateName(AggregatedTopologyState::InitializingTask)); + ASSERT_TRUE("READY" == GetAggregatedTopologyStateName(AggregatedTopologyState::Ready)); + ASSERT_TRUE("RUNNING" == GetAggregatedTopologyStateName(AggregatedTopologyState::Running)); + ASSERT_TRUE("RESETTING TASK" == GetAggregatedTopologyStateName(AggregatedTopologyState::ResettingTask)); + ASSERT_TRUE("RESETTING DEVICE" == GetAggregatedTopologyStateName(AggregatedTopologyState::ResettingDevice)); + ASSERT_TRUE("EXITING" == GetAggregatedTopologyStateName(AggregatedTopologyState::Exiting)); + ASSERT_TRUE("MIXED" == GetAggregatedTopologyStateName(AggregatedTopologyState::Mixed)); } } // namespace