2 Documentation netconf-connector readiness test suite.
4 ... Copyright (c) 2015 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 ... Try to detect whether Netconf is up and running and wait for
12 ... it for a configurable time if it is not yet up and running.
14 ... By default this is done by querying netconf-connector and
15 ... seeing whether it works. Some testsuites expect netconf-connector
16 ... to be ready as soon as possible and will fail if it is not. We
17 ... want to see a failure if this is the cause of the failure.
19 ... If the netconf-connector is not ready upon startup (as seen by
20 ... the first test case failing), the second case starts to repeat
21 ... the query for a minute to see whether it is going "to fix itself"
22 ... within the minute. If yes, then the testcase will pass, which
23 ... indicates that the "ODL cooldown" of 1 minute is not long enough
24 ... to allow for netconf-connector to initialize properly.
26 ... If the USE_NETCONF_CONNECTOR is forced to be False by the Robot
27 ... invocation argument, then the suite does not use netconf
28 ... connector for the readiness detection but merely waits for the
29 ... Netconf topology to appear. This is a weaker condition when
30 ... Netconf connector is about to be used but is necessary if the
31 ... suite in question does not use the Netconf connector.
33 ... If the first test case passed, then the second test case does
36 ... The third test case then checks whether Netconf can pretty print
37 ... data. This sometimes makes problems, most likely due to too
38 ... new Robot Requests library with an interface incompatible with
40 Suite Setup Setup_Everything
41 Suite Teardown Teardown_Everything
42 Library RequestsLibrary
43 Resource ${CURDIR}/../../../libraries/KarafKeywords.robot
44 Resource ${CURDIR}/../../../libraries/NetconfKeywords.robot
45 Resource ${CURDIR}/../../../libraries/Utils.robot
46 Variables ${CURDIR}/../../../variables/Variables.py
49 ${netconf_is_ready} False
50 ${NETCONFREADY_WAIT} 60s
51 ${USE_NETCONF_CONNECTOR} True
52 ${DEBUG_LOGGING_FOR_EVERYTHING} False
53 ${NETCONFREADY_WAIT_MDSAL} 60s
56 Check_Whether_Netconf_Is_Up_And_Running
57 [Documentation] Make one request to Netconf topology to see whether Netconf is up and running.
59 Check_Netconf_Up_And_Running
60 BuiltIn.Set_Suite_Variable ${netconf_is_ready} True
61 [Teardown] Utils.Report_Failure_Due_To_Bug 4708
64 [Documentation] Wait for the Netconf to go up for configurable time.
66 BuiltIn.Run_Keyword_Unless ${netconf_is_ready} BuiltIn.Wait_Until_Keyword_Succeeds ${NETCONFREADY_WAIT} 1s Check_Netconf_Up_And_Running
67 BuiltIn.Set_Suite_Variable ${netconf_is_ready} True
68 [Teardown] Utils.Report_Failure_Due_To_Bug 4583
71 [Documentation] If Netconf appears to be down, it may be due to bug 5014. Check if it is so and fail if yes.
72 ... Bug 5014 is about Netconf playing dead on boot until a device
73 ... configuration request is sent to it. To uncover this attempt to
74 ... configure and then deconfigure a device and then check if Netconf
75 ... is now up and running. If that turns out to be true, fail the case
76 ... as this signifies the bug 5014 to be present. Skip this testcase
77 ... if Netconf is detected to be up and running.
79 BuiltIn.Pass_Execution_If ${netconf_is_ready} Netconf was detected to be up and running so bug 5014 did not show up.
80 ${status} ${error}= BuiltIn.Run_Keyword_And_Ignore_Error Check_Netconf_Usable
81 BuiltIn.Run_Keyword_If '${status}'=='PASS' BuiltIn.Set_Suite_Variable ${netconf_is_ready} True
82 BuiltIn.Should_Be_Equal '${status}' 'FAIL'
83 [Teardown] Utils.Report_Failure_Due_To_Bug 5014
85 Check_Whether_Netconf_Can_Pretty_Print
86 [Documentation] Make one request to netconf-connector and see if it works.
88 BuiltIn.Run_Keyword_Unless ${netconf_is_ready} Fail Netconf is not ready so it can't pretty-print now.
89 Check_Netconf_Up_And_Running ?prettyPrint=true
92 [Documentation] Wait for the MDSAL feature to become online
93 ${status} ${message}= BuiltIn.Run_Keyword_And_Ignore_Error KarafKeywords.Verify_Feature_Is_Installed odl-netconf-mdsal
94 BuiltIn.Run_Keyword_If '${status}' == 'FAIL' BuiltIn.Pass_Execution The 'odl-netconf-mdsal' feature is not installed so no need to wait for it.
95 SSHKeywords.Open_Connection_To_ODL_System
96 BuiltIn.Wait_Until_Keyword_Succeeds ${NETCONFREADY_WAIT_MDSAL} 1s Check_Netconf_MDSAL_Up_And_Running
97 SSHLibrary.Close_Connection
98 [Teardown] Utils.Report_Failure_Due_To_Bug 4583
102 [Documentation] Setup requests library and log into karaf.log that the netconf readiness wait starts.
103 ${connector}= BuiltIn.Set_Variable_If ${USE_NETCONF_CONNECTOR} /node/controller-config/yang-ext:mount/config:modules/module/odl-sal-netconf-connector-cfg:sal-netconf-connector/controller-config ${EMPTY}
104 BuiltIn.Set_Suite_Variable ${netconf_connector} ${connector}
105 KarafKeywords.Open_Controller_Karaf_Console_On_Background
106 KarafKeywords.Log_Message_To_Controller_Karaf Starting Netconf readiness test suite
107 BuiltIn.Run_Keyword_If ${DEBUG_LOGGING_FOR_EVERYTHING} KarafKeywords.Execute_Controller_Karaf_Command_On_Background log:set DEBUG
108 RequestsLibrary.Create_Session ses http://${CONTROLLER}:${RESTCONFPORT} auth=${AUTH}
109 NetconfKeywords.Setup_Netconf_Keywords
112 [Documentation] Destroy all sessions in the requests library and log into karaf.log that the netconf readiness wait is over.
113 KarafKeywords.Log_Message_To_Controller_Karaf Ending Netconf readiness test suite
114 RequestsLibrary.Delete_All_Sessions
116 Check_Netconf_Up_And_Running
117 [Arguments] ${pretty_print}=${EMPTY}
118 [Documentation] Make a request to netconf connector's list of mounted devices and check that the request was successful.
119 ${response}= RequestsLibrary.Get_Request ses restconf/config/network-topology:network-topology/topology/topology-netconf${netconf_connector}${pretty_print}
120 BuiltIn.Log ${response.text}
121 BuiltIn.Should_Be_Equal_As_Strings ${response.status_code} 200
124 NetconfKeywords.Configure_Device_In_Netconf test-device device_type=configure-via-topology
125 NetconfKeywords.Remove_Device_From_Netconf test-device
126 Check_Netconf_Up_And_Running
128 Check_Netconf_MDSAL_Up_And_Running
129 ${count}= SSHKeywords.Count_Port_Occurences ${ODL_NETCONF_MDSAL_PORT} LISTEN java
130 BuiltIn.Should_Be_Equal_As_Integers ${count} 1