2 Documentation Robot keyword library (Resource) for common handling of data change counter.
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 ... This resource creates a "default" session using TemplatedRequests.Create_Default_Session
12 ... which points to (an analogue of) http://${ODL_SYSTEM_IP}:${RESTCONFPORT}
13 Library RequestsLibrary
14 Resource ${CURDIR}/CompareStream.robot
15 Resource ${CURDIR}/ScalarClosures.robot
16 Resource ${CURDIR}/TemplatedRequests.robot
17 Resource ${CURDIR}/WaitUtils.robot
20 ${CHANGE_COUNTER_TEMPLATE_FOLDER} ${CURDIR}/../variables/bgpuser
24 [Documentation] Initialize dependency libraries.
25 TemplatedRequests.Create_Default_Session
26 WaitUtils.WU_Setup # includes ScalarClosures.SC_Setup
27 ${counter} = ScalarClosures.Closure_From_Keyword_And_Arguments Get_Change_Count
28 BuiltIn.Set_Suite_Variable ${ChangeCounter__getter} ${counter}
31 [Documentation] GET data change request, assert status 200, return the value.
32 ${response} = RequestsLibrary.Get_Request operational data-change-counter:data-change-counter
33 BuiltIn.Should_Be_Equal ${response.status_code} ${200} Got status: ${response.status_code} and message: ${response.text}
34 # CompareStream.Set_Variable_If_At_Least_Else cannot be used direcly, because ${response.text}["data-change-counter"]["count"] would be
35 # evaluated before the stream comparison and it causes failures
36 ${at_least_boron}= CompareStream.Set_Variable_If_At_Least_Boron ${True} ${False}
37 ${count} = BuiltIn.Run Keyword If ${at_least_boron} BuiltIn.Evaluate ${response.text}["data-change-counter"]["counter"][0]["count"]
38 ... ELSE BuiltIn.Evaluate ${response.text}["data-change-counter"]["count"]
41 Reconfigure_Topology_Name
42 [Arguments] ${topology_name}=example-linkstate-topology
43 [Documentation] Configure data change counter to count transactions affecting
44 ... ${topology_name} instead of previously configured topology name.
45 &{mapping} Create Dictionary DEVICE_NAME=${DEVICE_NAME} TOPOLOGY_NAME=${topology_name}
46 TemplatedRequests.Put_As_Xml_Templated ${CHANGE_COUNTER_TEMPLATE_FOLDER}${/}change_counter mapping=${mapping}
48 Wait_For_Change_Count_To_Become_Stable
49 [Arguments] ${timeout}=60s ${period}=1s ${repetitions}=4 ${count_to_overcome}=-1
50 [Documentation] Each ${period} get count. After ${repetitions} of constant value above ${count_to_overcome} within ${timeout}, Return validator output. Fail early on getter error.
51 ${validator} = WaitUtils.Create_Limiting_Stability_Safe_Stateful_Validator_From_Value_To_Overcome maximum_invalid=${count_to_overcome}
52 ${result} = WaitUtils.Wait_For_Getter_Error_Or_Safe_Stateful_Validator_Consecutive_Success timeout=${timeout} period=${period} count=${repetitions} getter=${ChangeCounter__getter} safe_validator=${validator}
53 ... initial_state=${count_to_overcome}