Skip to content
This repository was archived by the owner on Jul 8, 2022. It is now read-only.

Commit bad0c60

Browse files
committed
Test for sending attr conf event after dev restart
Add test that verifies if attribute configuration event is sent to all subscribers after device restart (regardless if properties have changed).
1 parent 92f93b4 commit bad0c60

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

cpp_test_suite/new_tests/cxx_dserver_misc.cpp

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66
#undef SUITE_NAME
77
#define SUITE_NAME DServerMiscTestSuite
88

9+
template <typename TEvent>
910
struct EventCallback : public Tango::CallBack
1011
{
1112
EventCallback()
1213
: num_of_all_events(0)
1314
, num_of_error_events(0)
1415
{}
1516

16-
void push_event(Tango::EventData* event)
17+
void push_event(TEvent* event)
1718
{
1819
num_of_all_events++;
1920
if (event->err)
@@ -229,7 +230,7 @@ cout << "str = " << str << endl;
229230
*/
230231
void test_event_subscription_recovery_after_device_restart()
231232
{
232-
EventCallback callback{};
233+
EventCallback<Tango::EventData> callback{};
233234

234235
std::string attribute_name = "event_change_tst";
235236

@@ -255,6 +256,37 @@ cout << "str = " << str << endl;
255256
TS_ASSERT_EQUALS(0, callback.num_of_error_events);
256257
}
257258

259+
/* Tests that attribute configuration change event
260+
* is sent to all subscribers after device restart.
261+
*/
262+
void test_attr_conf_change_event_after_device_restart()
263+
{
264+
EventCallback<Tango::AttrConfEventData> callback{};
265+
266+
const std::string attribute_name = "event_change_tst";
267+
268+
int subscription = 0;
269+
TS_ASSERT_THROWS_NOTHING(subscription = device1->subscribe_event(
270+
attribute_name,
271+
Tango::ATTR_CONF_EVENT,
272+
&callback));
273+
274+
Tango_sleep(1);
275+
TS_ASSERT_EQUALS(1, callback.num_of_all_events);
276+
TS_ASSERT_EQUALS(0, callback.num_of_error_events);
277+
278+
{
279+
Tango::DeviceData input{};
280+
input << device1_name;
281+
TS_ASSERT_THROWS_NOTHING(dserver->command_inout("DevRestart", input));
282+
}
283+
284+
Tango_sleep(1);
285+
TS_ASSERT_EQUALS(2, callback.num_of_all_events);
286+
TS_ASSERT_EQUALS(0, callback.num_of_error_events);
287+
288+
TS_ASSERT_THROWS_NOTHING(device1->unsubscribe_event(subscription));
289+
}
258290
};
259291
#undef cout
260292
#endif // DServerMiscTestSuite_h

0 commit comments

Comments
 (0)