Upgrade RF syntax for v3.2 compatibility
[integration/test.git] / csit / suites / controller / singleton_service / global_rpc_freeze.robot
1 *** Settings ***
2 Documentation     Controller functional HA testing of global singleton rpcs if jvm frozen.
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 Suite Setup       Setup_Suite
10 Suite Teardown    SSHLibrary.Close_All_Connections
11 Test Setup        SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing    member_index_list=${active_nodes}
12 Test Teardown     SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
13 Default Tags      critical
14 Resource          ${CURDIR}/../../../libraries/ClusterManagement.robot
15 Resource          ${CURDIR}/../../../libraries/KarafKeywords.robot
16 Resource          ${CURDIR}/../../../libraries/SetupUtils.robot
17 Resource          ${CURDIR}/../../../libraries/TemplatedRequests.robot
18 Resource          ${CURDIR}/../../../libraries/WaitForFailure.robot
19 Resource          ${CURDIR}/../../../variables/Variables.robot
20
21 *** Variables ***
22 ${RPC_URL}        /restconf/operations/basic-rpc-test:basic-global
23 &{EMPTY_DICT}
24 ${SERVICE}        Basic-rpc-test']
25 ${TEST_LOG_LEVEL}    info
26 @{TEST_LOG_COMPONENTS}    org.opendaylight.controller.remote.rpc
27 ${EOS_URL}        /restconf/operational/entity-owners:entity-owners
28 ${active_nodes}    ${EMPTY}
29
30 *** Test Cases ***
31 Get_Basic_Rpc_Test_Owner
32     [Documentation]    Find a service owner and successors.
33     Get_Present_Brt_Owner_And_Successors    1    store=${True}
34
35 Rpc_Before_Freezing_On_Owner
36     [Documentation]    Run rpc on the service owner.
37     Run_Rpc    ${brt_owner}
38
39 Rpc_Before_Freeze_On_Successors
40     [Documentation]    Run rpc on non owher cluster nodes.
41     FOR    ${idx}    IN    @{brt_successors}
42         Run_Rpc    ${idx}
43     END
44
45 Freeze_Current_Owner_Member
46     [Documentation]    Stop cluster node which is the owner.
47     ClusterManagement.Freeze_Single_Member    ${brt_owner}
48     BuiltIn.Set_Suite_Variable    ${old_brt_owner}    ${brt_owner}
49     BuiltIn.Set_Suite_Variable    ${old_brt_successors}    ${brt_successors}
50     BuiltIn.Set_Suite_Variable    ${active_nodes}    ${old_brt_successors}
51
52 Verify_New_Basic_Rpc_Test_Owner_Elected
53     [Documentation]    Verify new owner of the service is elected.
54     ${idx}=    Collections.Get_From_List    ${old_brt_successors}    0
55     BuiltIn.Wait_Until_Keyword_Succeeds    60s    5s    Verify_Owner_Elected    ${True}    ${old_brt_owner}    ${idx}
56     Get_Present_Brt_Owner_And_Successors    ${idx}    store=${True}
57
58 Rpc_On_Remained_Cluster_Nodes
59     [Documentation]    Run rpc on remained cluster nodes.
60     FOR    ${idx}    IN    @{old_brt_successors}
61         BuiltIn.Wait_Until_Keyword_Succeeds    60s    5s    Run_Rpc    ${idx}
62     END
63
64 Unfreeze_Frozen_Member
65     [Documentation]    Restart frozen node
66     ClusterManagement.Unfreeze_Single_Member    ${old_brt_owner}
67     BuiltIn.Set_Suite_Variable    ${active_nodes}    ${EMPTY}
68
69 Rpc_After_Rejoin_On_New_Owner
70     [Documentation]    Run rpc on the new service owner node.
71     Run_Rpc    ${brt_owner}
72
73 Rpc_After_Rejoin_On_Old_Owner
74     [Documentation]    Run rpc on rejoined cluster node.
75     Run_Rpc    ${old_brt_owner}
76
77 Rpc_After_Rejoin_On_All
78     [Documentation]    Run rpc again on all nodes.
79     Run_Rpc    ${brt_owner}
80     FOR    ${idx}    IN    @{brt_successors}
81         Run_Rpc    ${idx}
82     END
83
84 *** Keywords ***
85 Setup_Suite
86     [Documentation]    FIXME: Add a documentation.
87     SetupUtils.Setup_Utils_For_Setup_And_Teardown    http_timeout=30
88     SetupUtils.Setup_Logging_For_Debug_Purposes_On_List_Or_All    ${TEST_LOG_LEVEL}    ${TEST_LOG_COMPONENTS}
89
90 Run_Rpc
91     [Arguments]    ${node_idx}
92     [Documentation]    Run rpc and log the entity ownership service details to karaf log.
93     ...    Logging the details was a developer's request during the implementation to improve debugging.
94     ${session} =    Resolve_Http_Session_For_Member    member_index=${node_idx}
95     ${out} =    TemplatedRequests.Get_From_Uri    ${EOS_URL}    session=${session}
96     KarafKeywords.Log_Message_To_Controller_Karaf    EOS rest resp: ${out}    member_index_list=${active_nodes}
97     TemplatedRequests.Post_To_Uri    ${RPC_URL}    ${EMPTY}    ${HEADERS_XML}    ${ACCEPT_XML}    session=${session}
98
99 Verify_Owner_Elected
100     [Arguments]    ${new_elected}    ${old_owner}    ${node_to_ask}
101     [Documentation]    Verify new owner was elected or remained the same.
102     ${owner}    ${successors}=    Get_Present_Brt_Owner_And_Successors    ${node_to_ask}
103     BuiltIn.Run_Keyword_If    ${new_elected}    BuiltIn.Should_Not_Be_Equal_As_Numbers    ${old_owner}    ${owner}
104     BuiltIn.Run_Keyword_Unless    ${new_elected}    BuiltIn.Should_Be_Equal_As_numbers    ${old_owner}    ${owner}
105
106 Get_Present_Brt_Owner_And_Successors
107     [Arguments]    ${node_to_ask}    ${store}=${False}
108     [Documentation]    Find a basic rpc test service owner and successors and store them if indicated.
109     ${brt_owner}    ${brt_successors}=    ClusterManagement.Get_Owner_And_Successors_For_Device    ${SERVICE}    org.opendaylight.mdsal.ServiceEntityType    ${node_to_ask}
110     BuiltIn.Run_Keyword_If    ${store}    BuiltIn.Set_Suite_Variable    ${brt_owner}    ${brt_owner}
111     BuiltIn.Run_Keyword_If    ${store}    BuiltIn.Set_Suite_Variable    ${brt_successors}    ${brt_successors}
112     BuiltIn.Return_From_Keyword    ${brt_owner}    ${brt_successors}