X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FSxpLib.robot;h=7b7c3f921217a4058365ee21d0441009d23a42c4;hb=1c6b2d4e3f4adb2b2c01682f3bb71faa698b1c1c;hp=0e281bb9697917cbe9ff47a02acb57fa060b3a2a;hpb=3ff416b0983183629953fdb8c014cc2d381ac110;p=integration%2Ftest.git diff --git a/csit/libraries/SxpLib.robot b/csit/libraries/SxpLib.robot index 0e281bb969..7b7c3f9212 100644 --- a/csit/libraries/SxpLib.robot +++ b/csit/libraries/SxpLib.robot @@ -5,8 +5,10 @@ Library RequestsLibrary Library SSHLibrary Library String Library ./Sxp.py +Resource CompareStream.robot Resource KarafKeywords.robot Resource Utils.robot +Resource TemplatedRequests.robot Variables ../variables/Variables.py *** Variables *** @@ -29,8 +31,10 @@ Post To Controller Add Node [Arguments] ${node} ${password}=${EMPTY} ${version}=version4 ${port}=64999 ${session}=session ${ip}=${EMPTY} + ... ${ssl_stores}=${EMPTY} ${retry_open_timer}=1 [Documentation] Add node via RPC to ODL ${DATA} Add Node Xml ${node} ${port} ${password} ${version} ${ip} + ... keystores=${ssl_stores} retry_open_timer=${retry_open_timer} Post To Controller ${session} add-node ${DATA} Delete Node @@ -41,10 +45,10 @@ Delete Node Add Connection [Arguments] ${version} ${mode} ${ip} ${port} ${node}=127.0.0.1 ${password}=${EMPTY} - ... ${session}=session ${domain}=global + ... ${session}=session ${domain}=global ${security_mode}=${EMPTY} [Documentation] Add connection via RPC to node ${DATA} Add Connection Xml ${version} ${mode} ${ip} ${port} ${node} - ... ${password} ${domain} + ... ${password} ${domain} security_mode=${security_mode} Post To Controller ${session} add-connection ${DATA} Get Connections @@ -86,32 +90,40 @@ Get Bindings [Arguments] ${node}=127.0.0.1 ${session}=session ${domain}=global ${scope}=all [Documentation] Gets all binding via RPC from Master DB of node ${DATA} Get Bindings From Node Xml ${node} ${scope} ${domain} - ${resp} Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Post Request ${session} ${REST_CONTEXT}:get-node-bindings data=${DATA} - ... headers=${HEADERS_XML} - ... ELSE Get Request ${session} /restconf/operational/network-topology:network-topology/topology/sxp/node/${node}/master-database/ headers=${HEADERS_XML} - Should be Equal As Strings ${resp.status_code} 200 - [Return] ${resp.content} + ${resp1} CompareStream.Run_Keyword_If_At_Least_Boron TemplatedRequests.Post_To_Uri ${REST_CONTEXT}:get-node-bindings data=${DATA} accept=${ACCEPT_JSON} content_type=${HEADERS_XML} + ... session=${session} + ${resp2} CompareStream.Run_Keyword_If_Less_Than_Boron TemplatedRequests.Get_As_Json_From_Uri /restconf/operational/network-topology:network-topology/topology/sxp/node/${node}/master-database/ session=${session} + ${resp} CompareStream.Set_Variable_If_At_Least_Boron ${resp1} ${resp2} + [Return] ${resp} Clean Bindings [Arguments] ${node}=127.0.0.1 ${session}=session ${domain}=global [Documentation] Delete all bindings via RPC from Master DB of node ${resp} Get Bindings ${node} ${session} ${domain} local - @{bindings} Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Parse Bindings ${resp} + @{bindings} CompareStream.Run_Keyword_If_At_Least_Else boron Parse Bindings ${resp} ... ELSE Parse Prefix Groups ${resp} local : FOR ${binding} IN @{bindings} - \ Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Clean Binding ${binding['sgt']} ${binding['ip-prefix']} ${node} - \ ... ${session} ${domain} - \ ... ELSE Clean Binding ${binding} ${binding['binding']} ${node} - \ ... ${session} ${domain} + \ CompareStream.Run_Keyword_If_At_Least_Boron Clean Binding Default ${binding} ${node} ${session} ${domain} + \ CompareStream.Run_Keyword_If_At_Most_Beryllium Clean Binding At Most Be ${binding} ${node} ${session} ${domain} + +Clean Binding Default + [Arguments] ${binding} ${node} ${session} ${domain} + [Documentation] Clean binding + Clean Binding ${binding['sgt']} ${binding['ip-prefix']} ${node} ${session} + +Clean Binding At Most Be + [Arguments] ${binding} ${node} ${session} ${domain} + [Documentation] Clean binding + Clean Binding ${binding} ${binding['binding']} ${node} ${session} Clean Binding [Arguments] ${sgt} ${prefixes} ${node} ${session} ${domain}=global [Documentation] Used for nester FOR loop : FOR ${prefix} IN @{prefixes} - \ Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Delete Binding ${sgt} ${prefix} ${node} - \ ... ${domain} ${session} - \ ... ELSE Delete Binding ${sgt['sgt']} ${prefix['ip-prefix']} ${node} - \ ... ${domain} ${session} + \ CompareStream.Run_Keyword_If_At_Least_Boron Delete Binding Default ${sgt} ${prefix} ${node} ${domain} + \ ... ${session} + \ CompareStream.Run_Keyword_If_At_Most_Beryllium Delete Binding Be ${sgt} ${prefix} ${node} ${domain} + \ ... ${session} Update Binding [Arguments] ${sgtOld} ${prefixOld} ${sgtNew} ${prefixNew} ${node}=127.0.0.1 ${session}=session @@ -121,6 +133,16 @@ Update Binding ... ${domain} Post To Controller ${session} update-entry ${DATA} +Delete Binding Default + [Arguments] ${sgt} ${prefix} ${node} ${domain} ${session} + [Documentation] Delete binding via RPC + Delete Binding ${sgt} ${prefix} ${node} ${domain} ${session} + +Delete Binding Be + [Arguments] ${sgt} ${prefix} ${node} ${domain} ${session} + [Documentation] Delete binding via RPC + Delete Binding ${sgt['sgt']} ${prefix['ip-prefix']} ${node} ${domain} ${session} + Delete Binding [Arguments] ${sgt} ${prefix} ${node}=127.0.0.1 ${domain}=global ${session}=session [Documentation] Delete binding via RPC from Master DB of node @@ -156,9 +178,11 @@ Clean Peer Groups \ Delete Peer Group ${group['name']} ${node} ${session} Add Filter - [Arguments] ${name} ${type} ${entries} ${node}=127.0.0.1 ${session}=session + [Arguments] ${name} ${type} ${entries} ${node}=127.0.0.1 ${session}=session ${policy}=auto-update [Documentation] Add Filter via RPC from Node - ${DATA} Add Filter Xml ${name} ${type} ${entries} ${node} + ${DATA} Run_Keyword_If_At_Least_Else carbon Add Filter Xml ${name} ${type} ${entries} + ... ${node} ${policy} + ... ELSE Add Filter Xml ${name} ${type} ${entries} ${node} Post To Controller ${session} add-filter ${DATA} Add Domain Filter @@ -182,7 +206,7 @@ Delete Domain Filter Should Contain Binding [Arguments] ${resp} ${sgt} ${prefix} ${db_source}=any [Documentation] Tests if data contains specified binding - ${out} Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Find Binding ${resp} ${sgt} ${prefix} + ${out} CompareStream.Run_Keyword_If_At_Least_Else boron Find Binding ${resp} ${sgt} ${prefix} ... ELSE Find Binding Legacy ${resp} ${sgt} ${prefix} ${db_source} ... add Should Be True ${out} Doesn't have ${sgt} ${prefix} @@ -190,7 +214,7 @@ Should Contain Binding Should Not Contain Binding [Arguments] ${resp} ${sgt} ${prefix} ${db_source}=any [Documentation] Tests if data doesn't contains specified binding - ${out} Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Find Binding ${resp} ${sgt} ${prefix} + ${out} CompareStream.Run_Keyword_If_At_Least_Else boron Find Binding ${resp} ${sgt} ${prefix} ... ELSE Find Binding Legacy ${resp} ${sgt} ${prefix} ${db_source} ... add Should Not Be True ${out} Should't have ${sgt} ${prefix} @@ -209,6 +233,30 @@ Should Not Contain Connection ... ${state} Should Not Be True ${out} Shouldn't have ${ip}:${port} ${mode} ${version} +Bindings Should Contain + [Arguments] ${sgt} ${prefix} ${db_source}=any + [Documentation] Retrieves bindings and verifies they contain given binding + ${resp} Get Bindings + Should Contain Binding ${resp} ${sgt} ${prefix} ${db_source} + +Bindings Should Not Contain + [Arguments] ${sgt} ${prefix} ${db_source}=any + [Documentation] Retrieves bindings and verifies they do not contain given binding + ${resp} Get Bindings + Should Not Contain Binding ${resp} ${sgt} ${prefix} ${db_source} + +Connections Should Contain + [Arguments] ${ip} ${port} ${mode} ${version} ${state}=none + [Documentation] Retrieves connections and verifies they contain given connection + ${resp} Get Connections + Should Contain Connection ${resp} ${ip} ${port} ${mode} ${version} ${state} + +Connections Should Not Contain + [Arguments] ${ip} ${port} ${mode} ${version} ${state}=none + [Documentation] Retrieves connections and verifies they do not contain given connection + ${resp} Get Connections + Should Not Contain Connection ${resp} ${ip} ${port} ${mode} ${version} ${state} + Setup Topology Complex [Arguments] ${version}=version4 ${PASSWORD}=none : FOR ${node} IN RANGE 2 6 @@ -233,6 +281,13 @@ Verify Snapshot Was Pushed ${output} Run Command On Controller ${ODL_SYSTEM_IP} cat ${WORKSPACE}/${BUNDLEFOLDER}/data/log/karaf.log* | grep -c 'Successfully pushed configuration snapshot.*${snapshot_string}' Should Not Be Equal As Strings ${output} 0 +Prepare SSH Keys On Karaf + [Arguments] ${system}=${ODL_SYSTEM_IP} ${user}=${ODL_SYSTEM_USER} ${passwd}=${ODL_SYSTEM_PASSWORD} ${prompt}=${ODL_SYSTEM_PROMPT} ${system_workspace}=${WORKSPACE} + [Documentation] Executes client login on karaf VM in so that SSH keys will be generated by defualt karaf callback, + ... expecting echo affter succesfull login. TODO: test on multiple runs if this aproach reduce SSHExceptions in robotframework + ${stdout} Run Command On Remote System ${system} ${system_workspace}${/}${BUNDLEFOLDER}/bin/client echo READY ${user} ${passwd} prompt=${prompt} + Should Match "${stdout}" "*READY" + Setup SXP Session [Arguments] ${session}=session ${controller}=${ODL_SYSTEM_IP} [Documentation] Create session to Controller @@ -304,9 +359,9 @@ Setup SXP Environment Setup SXP Session : FOR ${num} IN RANGE 1 ${node_range} \ ${ip} Get Ip From Number ${num} - \ Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Add Node ${ip} - \ Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Wait Until Keyword Succeeds 20 1 Check Node Started - \ ... ${ip} + \ ${rnd_retry_time} = Evaluate random.randint(1, 10) modules=random + \ CompareStream.Run_Keyword_If_At_Least_Boron Add Node ${ip} retry_open_timer=${rnd_retry_time} + \ CompareStream.Run_Keyword_If_At_Least_Boron Wait Until Keyword Succeeds 20 1 Check Node Started ${ip} Check Node Started [Arguments] ${node} ${port}=64999 ${system}=${ODL_SYSTEM_IP} ${session}=session ${ip}=${node} @@ -321,5 +376,24 @@ Clean SXP Environment [Documentation] Destroy created sessions : FOR ${num} IN RANGE 1 ${node_range} \ ${ip} Get Ip From Number ${num} - \ Run Keyword If '${ODL_STREAM}' not in ['beryllium', 'stable-lithium'] Delete Node ${ip} + \ CompareStream.Run_Keyword_If_At_Least_Boron Delete Node ${ip} Clean SXP Session + +Get Routing Configuration From Controller + [Arguments] ${session} + [Documentation] Get Routing configuration from config DS + ${resp} RequestsLibrary.Get Request ${session} /restconf/config/sxp-cluster-route:sxp-cluster-route/ headers=${ACCEPT_XML} + ${data} Set Variable If "${resp.status_code}" == "200" ${resp.content} ${EMPTY} + [Return] ${data} + +Put Routing Configuration To Controller + [Arguments] ${DATA} ${session} + [Documentation] Put Routing configuration to Config DS + ${resp} RequestsLibrary.Put Request ${session} /restconf/config/sxp-cluster-route:sxp-cluster-route/ data=${DATA} headers=${HEADERS_XML} + Should Match "${resp.status_code}" "20?" + +Clean Routing Configuration To Controller + [Arguments] ${session} + [Documentation] Delete Routing configuration from Config DS + ${resp} RequestsLibrary.Get Request ${session} /restconf/config/sxp-cluster-route:sxp-cluster-route/ headers=${ACCEPT_XML} + Run Keyword If "${resp.status_code}" == "200" RequestsLibrary.Delete Request ${session} /restconf/config/sxp-cluster-route:sxp-cluster-route/