uatools
1.0.0
Loading...
Searching...
No Matches
Config.hpp
Go to the documentation of this file.
1
15
16
#pragma once
17
18
#include <cstdint>
19
#include <optional>
20
#include <string>
21
#include <unordered_map>
22
#include <vector>
23
24
namespace
eso::uatools::uastresstest
{
25
26
enum class
WriteType
{
27
Boolean
,
28
Int32
,
29
Int64
,
30
Double
,
31
String
,
32
};
33
34
struct
WritableNode
{
35
std::string
node_id
;
36
WriteType
type
{
WriteType::Double
};
40
double
min
{0.0};
41
double
max
{1.0};
42
};
43
44
struct
StateMachine
{
45
std::string
state_node
;
// String variable to read
46
std::unordered_map<std::string, std::string>
47
methods
;
// logical-name -> NodeId
50
std::vector<std::string>
cycle
;
51
};
52
53
enum class
ScenarioKind
{
54
Read
,
55
Write
,
56
Subscribe
,
57
StateCycle
,
58
ConnectDisconnect
,
59
};
60
61
struct
Scenario
{
62
std::string
name
;
63
ScenarioKind
kind
{
ScenarioKind::Read
};
64
67
double
rate_hz
{0.0};
68
70
std::uint32_t
publishing_interval_ms
{100};
71
73
std::uint32_t
queue_size
{10};
74
};
75
76
struct
Config
{
77
// ---- Connection ----
78
std::string
endpoint
;
79
std::string
username
;
// empty == anonymous
80
std::string
password
;
81
82
// ---- Node sets ----
83
std::vector<std::string>
readable
;
84
std::vector<WritableNode>
writable
;
85
std::vector<std::string>
subscribable
;
86
87
// ---- Optional state-machine module ----
88
std::optional<StateMachine>
state_machine
;
89
90
// ---- Scenarios (keyed by name; CLI --scenario picks one) ----
91
std::unordered_map<std::string, Scenario>
scenarios
;
92
};
93
96
Config
LoadConfig
(
const
std::string& path);
97
99
const
char
*
ScenarioKindName
(
ScenarioKind
k);
100
101
}
// namespace eso::uatools::uastresstest
eso::uatools::uastresstest
Definition
Config.cpp:14
eso::uatools::uastresstest::WriteType
WriteType
Definition
Config.hpp:26
eso::uatools::uastresstest::WriteType::String
@ String
Definition
Config.hpp:31
eso::uatools::uastresstest::WriteType::Boolean
@ Boolean
Definition
Config.hpp:27
eso::uatools::uastresstest::WriteType::Int32
@ Int32
Definition
Config.hpp:28
eso::uatools::uastresstest::WriteType::Double
@ Double
Definition
Config.hpp:30
eso::uatools::uastresstest::WriteType::Int64
@ Int64
Definition
Config.hpp:29
eso::uatools::uastresstest::LoadConfig
Config LoadConfig(const std::string &path)
Load and validate a YAML config file. Throws std::runtime_error on parse or schema errors.
Definition
Config.cpp:60
eso::uatools::uastresstest::ScenarioKind
ScenarioKind
Definition
Config.hpp:53
eso::uatools::uastresstest::ScenarioKind::StateCycle
@ StateCycle
Definition
Config.hpp:57
eso::uatools::uastresstest::ScenarioKind::Write
@ Write
Definition
Config.hpp:55
eso::uatools::uastresstest::ScenarioKind::Read
@ Read
Definition
Config.hpp:54
eso::uatools::uastresstest::ScenarioKind::Subscribe
@ Subscribe
Definition
Config.hpp:56
eso::uatools::uastresstest::ScenarioKind::ConnectDisconnect
@ ConnectDisconnect
Definition
Config.hpp:58
eso::uatools::uastresstest::ScenarioKindName
const char * ScenarioKindName(ScenarioKind k)
Convert a kind enum to its YAML token (for logging).
Definition
Config.cpp:49
eso::uatools::uastresstest::Config
Definition
Config.hpp:76
eso::uatools::uastresstest::Config::writable
std::vector< WritableNode > writable
Definition
Config.hpp:84
eso::uatools::uastresstest::Config::endpoint
std::string endpoint
Definition
Config.hpp:78
eso::uatools::uastresstest::Config::username
std::string username
Definition
Config.hpp:79
eso::uatools::uastresstest::Config::password
std::string password
Definition
Config.hpp:80
eso::uatools::uastresstest::Config::readable
std::vector< std::string > readable
Definition
Config.hpp:83
eso::uatools::uastresstest::Config::scenarios
std::unordered_map< std::string, Scenario > scenarios
Definition
Config.hpp:91
eso::uatools::uastresstest::Config::subscribable
std::vector< std::string > subscribable
Definition
Config.hpp:85
eso::uatools::uastresstest::Config::state_machine
std::optional< StateMachine > state_machine
Definition
Config.hpp:88
eso::uatools::uastresstest::Scenario
Definition
Config.hpp:61
eso::uatools::uastresstest::Scenario::kind
ScenarioKind kind
Definition
Config.hpp:63
eso::uatools::uastresstest::Scenario::publishing_interval_ms
std::uint32_t publishing_interval_ms
For Subscribe: publishing interval requested from the server.
Definition
Config.hpp:70
eso::uatools::uastresstest::Scenario::queue_size
std::uint32_t queue_size
For Subscribe: queue size hint.
Definition
Config.hpp:73
eso::uatools::uastresstest::Scenario::name
std::string name
Definition
Config.hpp:62
eso::uatools::uastresstest::Scenario::rate_hz
double rate_hz
Definition
Config.hpp:67
eso::uatools::uastresstest::StateMachine
Definition
Config.hpp:44
eso::uatools::uastresstest::StateMachine::state_node
std::string state_node
Definition
Config.hpp:45
eso::uatools::uastresstest::StateMachine::cycle
std::vector< std::string > cycle
Definition
Config.hpp:50
eso::uatools::uastresstest::StateMachine::methods
std::unordered_map< std::string, std::string > methods
Definition
Config.hpp:47
eso::uatools::uastresstest::WritableNode
Definition
Config.hpp:34
eso::uatools::uastresstest::WritableNode::node_id
std::string node_id
Definition
Config.hpp:35
eso::uatools::uastresstest::WritableNode::min
double min
Definition
Config.hpp:40
eso::uatools::uastresstest::WritableNode::max
double max
Definition
Config.hpp:41
eso::uatools::uastresstest::WritableNode::type
WriteType type
Definition
Config.hpp:36
tools
uastresstest
src
include
eso
uatools
uastresstest
Config.hpp
Generated by
1.13.2