Migrate Get Requests invocations(libraries)
[integration/test.git] / csit / libraries / controller / DnbCommons.robot
1 *** Settings ***
2 Documentation       DOMNotificationBroker testing: Common keywords
3 ...
4 ...                 Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.
5 ...
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
9
10 Library             Collections
11 Resource            ${CURDIR}/../MdsalLowlevel.robot
12 Resource            ${CURDIR}/../ScalarClosures.robot
13 Resource            ${CURDIR}/../WaitUtils.robot
14
15
16 *** Variables ***
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
25
26
27 *** Keywords ***
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}
34     BuiltIn.Log
35     ...    Overall requested rate: ${total_notification_rate}, test duration: ${test_duration_in_seconds} seconds.
36     WaitUtils.WU_Setup
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}
41     END
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}
49     END
50     ${getter} =    ScalarClosures.Closure_From_Keyword_And_Arguments
51     ...    Get_Notifications_Active_Status
52     ...    ${DNB_TESTED_MEMBER_INDEX}
53     ...    ${count}
54     ${validator} =    ScalarClosures.Closure_From_Keyword_And_Arguments
55     ...    Check_Notifications_Active_Status
56     ...    data_holder
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
62     ...    getter=${getter}
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}
78     END
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}
84
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
90         ...    ${node_to_ask}
91         ...    ${DNB_PUBLISHER_LISTENER_PREFIX}${index}
92         Collections.Append_To_List    ${active_list}    ${active}
93         BuiltIn.Should_Be_Equal    ${EMPTY}    ${last_error}
94     END
95     RETURN    ${active_list}
96
97 Check_Notifications_Active_Status
98     [Arguments]    ${active_list}
99     FOR    ${active}    IN    @{active_list}
100         BuiltIn.Should_Be_Equal    ${False}    ${active}
101     END