Skip to content

Commit be6ae97

Browse files
committed
hmon: C++ HMON unit tests properties
Add `RecordProperty` entries to HMON unit tests.
1 parent bf49872 commit be6ae97

6 files changed

Lines changed: 101 additions & 13 deletions

File tree

score/health_monitor/src/cpp/tests/deadline_monitor_test.cpp

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,25 @@
1818
using namespace score::mw::health;
1919
using namespace score::mw::health::deadline;
2020

21-
TEST(DeadlineMonitorBuilder, New_Succeeds)
21+
class DeadlineMonitorBuilderFixture : public ::testing::Test
2222
{
23+
protected:
24+
void SetUp() override
25+
{
26+
RecordProperty("TestType", "interface-test");
27+
RecordProperty("DerivationTechnique", "explorative-testing");
28+
}
29+
};
30+
31+
TEST_F(DeadlineMonitorBuilderFixture, New_Succeeds)
32+
{
33+
RecordProperty("Description", "Object successfully constructed.");
2334
DeadlineMonitorBuilder deadline_monitor_builder;
2435
}
2536

26-
TEST(DeadlineMonitorBuilder, AddDeadline_Succeeds)
37+
TEST_F(DeadlineMonitorBuilderFixture, AddDeadline_Succeeds)
2738
{
39+
RecordProperty("Description", "Deadline successfully added.");
2840
using namespace std::chrono_literals;
2941
DeadlineTag deadline_tag{"deadline"};
3042
TimeRange range{50ms, 150ms};
@@ -38,6 +50,9 @@ class DeadlineMonitorFixture : public ::testing::Test
3850

3951
void SetUp() override
4052
{
53+
RecordProperty("TestType", "interface-test");
54+
RecordProperty("DerivationTechnique", "explorative-testing");
55+
4156
// Monitor must be obtained from HMON.
4257
// Initialize deadline monitor builder.
4358
using namespace std::chrono_literals;
@@ -62,13 +77,15 @@ class DeadlineMonitorFixture : public ::testing::Test
6277

6378
TEST_F(DeadlineMonitorFixture, GetDeadline_Succeeds)
6479
{
80+
RecordProperty("Description", "Deadline successfully obtained using known tag.");
6581
// Get deadline.
6682
auto get_deadline_result{deadline_monitor_->get_deadline(DeadlineTag{"deadline"})};
6783
ASSERT_TRUE(get_deadline_result.has_value());
6884
}
6985

7086
TEST_F(DeadlineMonitorFixture, GetDeadline_Unknown)
7187
{
88+
RecordProperty("Description", "Deadline failed to be obtained due to unknown tag.");
7289
// Get deadline.
7390
auto get_deadline_result{deadline_monitor_->get_deadline(DeadlineTag{"unknown"})};
7491
ASSERT_FALSE(get_deadline_result.has_value());
@@ -81,6 +98,7 @@ class DeadlineFixture : public DeadlineMonitorFixture
8198

8299
TEST_F(DeadlineFixture, Start_Succeeds)
83100
{
101+
RecordProperty("Description", "Deadline successfully started and stopped.");
84102
// Get deadline.
85103
DeadlineTag deadline_tag{"deadline"};
86104
auto get_deadline_result{deadline_monitor_->get_deadline(deadline_tag)};
@@ -97,6 +115,7 @@ TEST_F(DeadlineFixture, Start_Succeeds)
97115

98116
TEST_F(DeadlineFixture, Start_AlreadyRunning)
99117
{
118+
RecordProperty("Description", "Deadline failed to start twice.");
100119
// Get deadline.
101120
DeadlineTag deadline_tag{"deadline"};
102121
auto get_deadline_result{deadline_monitor_->get_deadline(deadline_tag)};

score/health_monitor/src/cpp/tests/health_monitor_test.cpp

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,26 @@ LogicMonitorBuilder def_logic_monitor_builder()
3636
return LogicMonitorBuilder{state1}.add_state(state1, {state2}).add_state(state2, {state1});
3737
}
3838

39-
TEST(HealthMonitorBuilder, New_Succeeds)
39+
class HealthMonitorBuilderFixture : public ::testing::Test
4040
{
41+
protected:
42+
void SetUp() override
43+
{
44+
RecordProperty("TestType", "interface-test");
45+
RecordProperty("DerivationTechnique", "explorative-testing");
46+
}
47+
};
48+
49+
TEST_F(HealthMonitorBuilderFixture, New_Succeeds)
50+
{
51+
RecordProperty("Description", "Object successfully constructed.");
4152
// Check able to construct and destruct only.
4253
HealthMonitorBuilder health_monitor_builder;
4354
}
4455

45-
TEST(HealthMonitorBuilder, Build_Succeeds)
56+
TEST_F(HealthMonitorBuilderFixture, Build_Succeeds)
4657
{
58+
RecordProperty("Description", "Successfully build monitor containing all monitor types.");
4759
MonitorTag deadline_monitor_tag{"deadline_monitor"};
4860
DeadlineMonitorBuilder deadline_monitor_builder;
4961
MonitorTag heartbeat_monitor_tag{"heartbeat_monitor"};
@@ -59,23 +71,28 @@ TEST(HealthMonitorBuilder, Build_Succeeds)
5971
ASSERT_TRUE(result.has_value());
6072
}
6173

62-
TEST(HealthMonitorBuilder, Build_InvalidCycles)
74+
TEST_F(HealthMonitorBuilderFixture, Build_InvalidCycles)
6375
{
76+
RecordProperty(
77+
"Description",
78+
"Failed to build monitor with mismatched supervisor API cycle and internal processing cycle values.");
6479
using namespace std::chrono_literals;
6580
auto result{HealthMonitorBuilder{}.with_supervisor_api_cycle(123ms).with_internal_processing_cycle(100ms).build()};
6681
ASSERT_FALSE(result.has_value());
6782
ASSERT_EQ(result.error(), Error::InvalidArgument);
6883
}
6984

70-
TEST(HealthMonitorBuilder, Build_NoMonitors)
85+
TEST_F(HealthMonitorBuilderFixture, Build_NoMonitors)
7186
{
87+
RecordProperty("Description", "Failed to build monitor with no monitors.");
7288
auto result{HealthMonitorBuilder{}.build()};
7389
ASSERT_FALSE(result.has_value());
7490
ASSERT_EQ(result.error(), Error::WrongState);
7591
}
7692

7793
TEST(HealthMonitor, GetDeadlineMonitor_Available)
7894
{
95+
RecordProperty("Description", "Successfully obtained deadline monitor.");
7996
MonitorTag deadline_monitor_tag{"deadline_monitor"};
8097
DeadlineMonitorBuilder deadline_monitor_builder;
8198
auto health_monitor{HealthMonitorBuilder{}
@@ -89,6 +106,7 @@ TEST(HealthMonitor, GetDeadlineMonitor_Available)
89106

90107
TEST(HealthMonitor, GetDeadlineMonitor_Taken)
91108
{
109+
RecordProperty("Description", "Failed to reobtain already taken deadline monitor.");
92110
MonitorTag deadline_monitor_tag{"deadline_monitor"};
93111
DeadlineMonitorBuilder deadline_monitor_builder;
94112
auto health_monitor{HealthMonitorBuilder{}
@@ -103,6 +121,7 @@ TEST(HealthMonitor, GetDeadlineMonitor_Taken)
103121

104122
TEST(HealthMonitor, GetDeadlineMonitor_Unknown)
105123
{
124+
RecordProperty("Description", "Failed to obtain deadline monitor using unknown tag.");
106125
MonitorTag deadline_monitor_tag{"deadline_monitor"};
107126
DeadlineMonitorBuilder deadline_monitor_builder;
108127
auto health_monitor{HealthMonitorBuilder{}
@@ -116,6 +135,7 @@ TEST(HealthMonitor, GetDeadlineMonitor_Unknown)
116135

117136
TEST(HealthMonitor, GetHeartbeatMonitor_Available)
118137
{
138+
RecordProperty("Description", "Successfully obtained heartbeat monitor.");
119139
MonitorTag heartbeat_monitor_tag{"heartbeat_monitor"};
120140
auto heartbeat_monitor_builder{def_heartbeat_monitor_builder()};
121141
auto health_monitor{HealthMonitorBuilder{}
@@ -129,6 +149,7 @@ TEST(HealthMonitor, GetHeartbeatMonitor_Available)
129149

130150
TEST(HealthMonitor, GetHeartbeatMonitor_Taken)
131151
{
152+
RecordProperty("Description", "Failed to reobtain already taken heartbeat monitor.");
132153
MonitorTag heartbeat_monitor_tag{"heartbeat_monitor"};
133154
HeartbeatMonitorBuilder heartbeat_monitor_builder{def_heartbeat_monitor_builder()};
134155
auto health_monitor{HealthMonitorBuilder{}
@@ -143,6 +164,7 @@ TEST(HealthMonitor, GetHeartbeatMonitor_Taken)
143164

144165
TEST(HealthMonitor, GetHeartbeatMonitor_Unknown)
145166
{
167+
RecordProperty("Description", "Failed to obtain deadline monitor using unknown tag.");
146168
MonitorTag heartbeat_monitor_tag{"heartbeat_monitor"};
147169
HeartbeatMonitorBuilder heartbeat_monitor_builder{def_heartbeat_monitor_builder()};
148170
auto health_monitor{HealthMonitorBuilder{}
@@ -156,6 +178,7 @@ TEST(HealthMonitor, GetHeartbeatMonitor_Unknown)
156178

157179
TEST(HealthMonitor, GetLogicMonitor_Available)
158180
{
181+
RecordProperty("Description", "Successfully obtained logic monitor.");
159182
MonitorTag logic_monitor_tag{"logic_monitor"};
160183
auto logic_monitor_builder{def_logic_monitor_builder()};
161184
auto health_monitor{
@@ -167,6 +190,7 @@ TEST(HealthMonitor, GetLogicMonitor_Available)
167190

168191
TEST(HealthMonitor, GetLogicMonitor_Taken)
169192
{
193+
RecordProperty("Description", "Failed to reobtain already taken logic monitor.");
170194
MonitorTag logic_monitor_tag{"logic_monitor"};
171195
LogicMonitorBuilder logic_monitor_builder{def_logic_monitor_builder()};
172196
auto health_monitor{
@@ -179,6 +203,7 @@ TEST(HealthMonitor, GetLogicMonitor_Taken)
179203

180204
TEST(HealthMonitor, GetLogicMonitor_Unknown)
181205
{
206+
RecordProperty("Description", "Failed to obtain deadline monitor using unknown tag.");
182207
MonitorTag logic_monitor_tag{"logic_monitor"};
183208
LogicMonitorBuilder logic_monitor_builder{def_logic_monitor_builder()};
184209
auto health_monitor{
@@ -190,6 +215,7 @@ TEST(HealthMonitor, GetLogicMonitor_Unknown)
190215

191216
TEST(HealthMonitor, Start_Succeeds)
192217
{
218+
RecordProperty("Description", "Successfully started monitor containing all monitor types.");
193219
MonitorTag deadline_monitor_tag{"deadline_monitor"};
194220
DeadlineMonitorBuilder deadline_monitor_builder;
195221
MonitorTag heartbeat_monitor_tag{"heartbeat_monitor"};
@@ -213,6 +239,7 @@ TEST(HealthMonitor, Start_Succeeds)
213239

214240
TEST(HealthMonitor, Start_MonitorsNotTaken)
215241
{
242+
RecordProperty("Description", "Failed to start of a health monitor with no monitors obtained.");
216243
MonitorTag deadline_monitor_tag{"deadline_monitor"};
217244
DeadlineMonitorBuilder deadline_monitor_builder;
218245
MonitorTag heartbeat_monitor_tag{"heartbeat_monitor"};

score/health_monitor/src/cpp/tests/heartbeat_monitor_test.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,21 @@ using namespace score::mw::health::heartbeat;
2020

2121
TEST(HeartbeatMonitorBuilder, New_Succeeds)
2222
{
23+
RecordProperty("TestType", "interface-test");
24+
RecordProperty("DerivationTechnique", "explorative-testing");
25+
RecordProperty("Description", "Object successfully constructed.");
26+
2327
using namespace std::chrono_literals;
2428
TimeRange range{100ms, 200ms};
2529
HeartbeatMonitorBuilder heartbeat_monitor_builder{range};
2630
}
2731

2832
TEST(HeartbeatMonitor, Heartbeat_Succeeds)
2933
{
34+
RecordProperty("TestType", "interface-test");
35+
RecordProperty("DerivationTechnique", "explorative-testing");
36+
RecordProperty("Description", "Heartbeat successfully used.");
37+
3038
// Monitor must be obtained from HMON.
3139
// Initialize heartbeat monitor builder.
3240
using namespace std::chrono_literals;

score/health_monitor/src/cpp/tests/integrated_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class HealthMonitorTest : public ::testing::Test
2323
void SetUp() override
2424
{
2525
RecordProperty("TestType", "interface-test");
26-
RecordProperty("DerivationTechnique", "explorative-testing ");
26+
RecordProperty("DerivationTechnique", "explorative-testing");
2727
}
2828
};
2929

score/health_monitor/src/cpp/tests/logic_monitor_test.cpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,26 @@
1818
using namespace score::mw::health;
1919
using namespace score::mw::health::logic;
2020

21-
TEST(LogicMonitorBuilder, New_Succeeds)
21+
class LogicMonitorBuilderFixture : public ::testing::Test
2222
{
23+
protected:
24+
void SetUp() override
25+
{
26+
RecordProperty("TestType", "interface-test");
27+
RecordProperty("DerivationTechnique", "explorative-testing");
28+
}
29+
};
30+
31+
TEST_F(LogicMonitorBuilderFixture, New_Succeeds)
32+
{
33+
RecordProperty("Description", "Object successfully constructed.");
2334
StateTag state1{"state1"};
2435
LogicMonitorBuilder logic_monitor_builder{state1};
2536
}
2637

27-
TEST(LogicMonitorBuilder, AddState_Succeeds)
38+
TEST_F(LogicMonitorBuilderFixture, AddState_Succeeds)
2839
{
40+
RecordProperty("Description", "State successfully added.");
2941
StateTag state1{"state1"};
3042
StateTag state2{"state2"};
3143
auto logic_monitor_builder{LogicMonitorBuilder{state1}.add_state(state1, {state2})};
@@ -40,6 +52,9 @@ class LogicMonitorFixture : public ::testing::Test
4052

4153
void SetUp() override
4254
{
55+
RecordProperty("TestType", "interface-test");
56+
RecordProperty("DerivationTechnique", "explorative-testing");
57+
4358
// Monitor must be obtained from HMON.
4459
// Initialize logic monitor builder.
4560
MonitorTag logic_monitor_tag{"logic_monitor"};
@@ -59,14 +74,17 @@ class LogicMonitorFixture : public ::testing::Test
5974
};
6075

6176
TEST_F(LogicMonitorFixture, Transition_Succeeds)
62-
{ // State transition.
77+
{
78+
RecordProperty("Description", "Monitor successfully transitioned to an allowed state.");
79+
// State transition.
6380
auto transition_result{logic_monitor_->transition(state2_)};
6481
ASSERT_TRUE(transition_result.has_value());
6582
ASSERT_EQ(transition_result.value(), state2_);
6683
}
6784

6885
TEST_F(LogicMonitorFixture, Transition_Unknown)
6986
{
87+
RecordProperty("Description", "Monitor failed to transition into unknown state.");
7088
// State transition.
7189
auto transition_result{logic_monitor_->transition(StateTag{"unknown"})};
7290
ASSERT_FALSE(transition_result.has_value());
@@ -75,6 +93,7 @@ TEST_F(LogicMonitorFixture, Transition_Unknown)
7593

7694
TEST_F(LogicMonitorFixture, Transition_Invalid)
7795
{
96+
RecordProperty("Description", "Monitor failed to transition from invalid state.");
7897
// State transition into invalid state.
7998
logic_monitor_->transition(StateTag{"unknown"});
8099

@@ -86,6 +105,7 @@ TEST_F(LogicMonitorFixture, Transition_Invalid)
86105

87106
TEST_F(LogicMonitorFixture, State_Succeeds)
88107
{
108+
RecordProperty("Description", "Successfully obtained current state.");
89109
// State transition.
90110
logic_monitor_->transition(state2_);
91111

@@ -97,6 +117,7 @@ TEST_F(LogicMonitorFixture, State_Succeeds)
97117

98118
TEST_F(LogicMonitorFixture, State_Invalid)
99119
{
120+
RecordProperty("Description", "Failed to obtain current state while being in an invalid state.");
100121
// State transition.
101122
logic_monitor_->transition(StateTag{"unknown"});
102123

score/health_monitor/src/cpp/tests/time_range_test.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,34 @@
1616

1717
using namespace score::mw::health;
1818

19-
TEST(TimeRange, New_Succeeds)
19+
class TimeRangeFixture : public ::testing::Test
2020
{
21+
protected:
22+
void SetUp() override
23+
{
24+
RecordProperty("TestType", "interface-test");
25+
RecordProperty("DerivationTechnique", "explorative-testing");
26+
}
27+
};
28+
29+
TEST_F(TimeRangeFixture, New_Succeeds)
30+
{
31+
RecordProperty("Description", "Object successfully constructed.");
2132
using namespace std::chrono_literals;
2233
TimeRange range{100ms, 200ms};
2334
}
2435

25-
TEST(TimeRange, New_InvalidOrder)
36+
TEST_F(TimeRangeFixture, New_InvalidOrder)
2637
{
38+
RecordProperty("Description", "Object failed to construct to invalid parameters order.");
2739
using namespace std::chrono_literals;
2840
// `SIGABRT` is expected.
2941
ASSERT_DEATH({ TimeRange range(200ms, 100ms); }, "");
3042
}
3143

32-
TEST(TimeRange, MinMax)
44+
TEST_F(TimeRangeFixture, MinMax)
3345
{
46+
RecordProperty("Description", "`min` and `max` member functions are returning correct values.");
3447
using namespace std::chrono_literals;
3548
TimeRange range{123ms, 456ms};
3649
ASSERT_EQ(range.min_ms(), 123);

0 commit comments

Comments
 (0)