2 Documentation DOMNotificationBroker testing: Common keywords
4 ... Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.
6 ... This program and the accompanying materials are made available under the
7 ... terms of the Eclipse Public License v1.0 which accompanies this distribution,
8 ... and is available at http://www.eclipse.org/legal/epl-v10.html
11 Resource ${CURDIR}/../MdsalLowlevel.robot
12 Resource ${CURDIR}/../ScalarClosures.robot
13 Resource ${CURDIR}/../WaitUtils.robot
17 # There is half a megabyte of output.xml per check.
18 # Even with check period of 15 seconds that makes more than 2 GB of output,
19 # which is too much for processing into log.html (out of memory errors).
20 ${DNB_CHECK_PERIOD_IN_SECONDS} 600
21 ${DNB_CHECK_TOLERANCE_IN_SECONDS} ${${DNB_CHECK_PERIOD_IN_SECONDS}*1.2}
22 ${DNB_PUBLISHER_SUBSCRIBER_PAIR_RATE} ${5000}
23 ${DNB_PUBLISHER_LISTENER_PREFIX} working-pair-
24 ${DNB_TESTED_MEMBER_INDEX} 1
28 Dom_Notification_Broker_Test_Templ
29 [Documentation] Test case template. Input parameter ${total_notification_rate} determines, how many publisher/subscriber
30 ... pais take part in the test case. For every ${DNB_PUBLISHER_SUBSCRIBER_PAIR_RATE} one pair is created.
31 ... The test case itself firstly subscribe listeners, then run publishers and at the end unsubscribe listeners
32 ... and check achieved rates.
33 [Arguments] ${total_notification_rate} ${test_duration_in_seconds}
35 ... Overall requested rate: ${total_notification_rate}, test duration: ${test_duration_in_seconds} seconds.
37 ${count} = BuiltIn.Set_variable ${0}
38 FOR ${suffix} IN RANGE ${DNB_PUBLISHER_SUBSCRIBER_PAIR_RATE} ${total_notification_rate}+1 ${DNB_PUBLISHER_SUBSCRIBER_PAIR_RATE}
39 ${count} = BuiltIn.Evaluate ${count}+1
40 MdsalLowlevel.Subscribe_Ynl ${DNB_TESTED_MEMBER_INDEX} ${DNB_PUBLISHER_LISTENER_PREFIX}${count}
42 ${count} = BuiltIn.Convert_To_Integer ${count}
43 FOR ${index} IN RANGE 1 ${count}+1
44 MdsalLowlevel.Start_Publish_Notifications
45 ... ${DNB_TESTED_MEMBER_INDEX}
46 ... ${DNB_PUBLISHER_LISTENER_PREFIX}${index}
47 ... ${test_duration_in_seconds}
48 ... ${DNB_PUBLISHER_SUBSCRIBER_PAIR_RATE}
50 ${getter} = ScalarClosures.Closure_From_Keyword_And_Arguments
51 ... Get_Notifications_Active_Status
52 ... ${DNB_TESTED_MEMBER_INDEX}
54 ${validator} = ScalarClosures.Closure_From_Keyword_And_Arguments
55 ... Check_Notifications_Active_Status
57 ${validation_timeout_in_seconds} = BuiltIn.Evaluate
58 ... ${test_duration_in_seconds}+${DNB_CHECK_TOLERANCE_IN_SECONDS}
59 WaitUtils.Wait_For_Getter_Failure_Or_Stateless_Validator_Pass
60 ... timeout=${validation_timeout_in_seconds}s
61 ... period=${DNB_CHECK_PERIOD_IN_SECONDS}s
63 ... stateless_validator=${validator}
64 ${sum_local_number} = BuiltIn.Set_Variable ${0}
65 ${low_limit_pair_rate} = BuiltIn.Evaluate 0.9*${DNB_PUBLISHER_SUBSCRIBER_PAIR_RATE}
66 ${high_limit_pair_rate} = BuiltIn.Evaluate 1.1*${DNB_PUBLISHER_SUBSCRIBER_PAIR_RATE}
67 FOR ${index} IN RANGE 1 ${count}+1
68 ${all_not} ${id_not} ${err_not} ${local_number} = MdsalLowlevel.Unsubscribe_Ynl
69 ... ${DNB_TESTED_MEMBER_INDEX}
70 ... ${DNB_PUBLISHER_LISTENER_PREFIX}${index}
71 BuiltIn.Should_Be_Equal_As_Numbers ${err_not} ${0}
72 BuiltIn.Should_Not_Be_Equal_As_Numbers ${local_number} ${0}
73 BuiltIn.Should_Be_Equal_As_Numbers ${id_not} ${local_number}
74 ${rate} = BuiltIn.Evaluate ${local_number}/${test_duration_in_seconds}
75 BuiltIn.Should_Be_True ${rate} > ${low_limit_pair_rate}
76 BuiltIn.Should_Be_True ${rate} < ${high_limit_pair_rate}
77 ${sum_local_number} = BuiltIn.Evaluate ${sum_local_number}+${local_number}
79 ${final_rate} = BuiltIn.Evaluate ${sum_local_number}/${test_duration_in_seconds}
80 ${low_limit_final_rate} = BuiltIn.Evaluate 0.9*${total_notification_rate}
81 ${high_limit_final_rate} = BuiltIn.Evaluate 1.1*${total_notification_rate}
82 BuiltIn.Should_Be_True ${final_rate} > ${low_limit_final_rate}
83 BuiltIn.Should_Be_True ${final_rate} < ${high_limit_final_rate}
85 Get_Notifications_Active_Status
86 [Arguments] ${node_to_ask} ${nr_pairs}
87 ${active_list} = BuiltIn.Create_List
88 FOR ${index} IN RANGE 1 ${nr_pairs}+1
89 ${active} ${publ_count} ${last_error} = MdsalLowlevel.Check_Publish_Notifications
91 ... ${DNB_PUBLISHER_LISTENER_PREFIX}${index}
92 Collections.Append_To_List ${active_list} ${active}
93 BuiltIn.Should_Be_Equal ${EMPTY} ${last_error}
97 Check_Notifications_Active_Status
98 [Arguments] ${active_list}
99 FOR ${active} IN @{active_list}
100 BuiltIn.Should_Be_Equal ${False} ${active}