Topoprocessing tests - Keywords reworked
[integration/test.git] / csit / libraries / TopoprocessingKeywords.robot
index 28b8ce653b15209dbd1022d121b265231a35ac0c..0a03c9c2e58facc32770e37bd6666ceb27c78e61 100644 (file)
@@ -1,6 +1,7 @@
 *** Settings ***
 Variables         ../variables/Variables.py
 Variables         ../variables/topoprocessing/Topologies.py
+Variables         ../variables/topoprocessing/TopologyRequests.py
 Library           RequestsLibrary
 Library           SSHLibrary
 Library           XML
@@ -36,7 +37,7 @@ Setup Environment
     Issue Command On Karaf Console    log:set DEBUG org.opendaylight.topoprocessing
     Install a Feature    odl-restconf-noauth    timeout=30
     Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${SEND_ACCEPT_XML_HEADERS}
-    ${features}    Get Installed Features
+    ${features}    Issue Command On Karaf Console    feature:list -i
     ${lines}    Get Lines Containing String    ${features}    odl-topoprocessing-framework
     ${length}    Get Length    ${lines}
     Install a Feature    odl-openflowplugin-nsf-model-li odl-topoprocessing-framework odl-topoprocessing-network-topology odl-topoprocessing-inventory odl-mdsal-models odl-ovsdb-southbound-impl    timeout=120
@@ -70,31 +71,25 @@ Prepare New Feature Installation
 Insert Underlay Topologies
     [Documentation]    Insert underlay topologies used by following tests
     Log    Inserting underlay topologies
-    # Network underlay topology 1
-    ${resp}    Put Request    session    ${CONFIG_API}/${TOPOLOGY_URL}/network-topo:1    data=${NETWORK_UNDERLAY_TOPOLOGY_1}
-    Log    ${resp.content}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    # Network underlay topology 2
-    ${resp}    Put Request    session    ${CONFIG_API}/${TOPOLOGY_URL}/network-topo:2    data=${NETWORK_UNDERLAY_TOPOLOGY_2}
-    Log    ${resp.content}
-    Should Be Equal As Strings    ${resp.status_code}    200
+    # Network underlay topologies
+    : FOR    ${index}    IN RANGE    1    6
+    \    ${resp}    Put Request    session    ${CONFIG_API}/${TOPOLOGY_URL}/network-topo:${index}    data=${NETWORK_UNDERLAY_TOPOLOGY_${index}}
+    \    Log    ${resp.content}
+    \    Should Be Equal As Strings    ${resp.status_code}    200
     # Openflow underlay nodes
     ${resp}    Put Request    session    ${CONFIG_API}/opendaylight-inventory:nodes    data=${OPENFLOW_UNDERLAY_NODES}
     Log    ${resp.content}
     Should Be Equal As Strings    ${resp.status_code}    200
-    # Openflow underlay topology 1
-    ${resp}    Put Request    session    ${CONFIG_API}/${TOPOLOGY_URL}/openflow-topo:1    data=${OPENFLOW_UNDERLAY_TOPOLOGY_1}
-    Log    ${resp.content}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    # Openflow underlay topology 2
-    ${resp}    Put Request    session    ${CONFIG_API}/${TOPOLOGY_URL}/openflow-topo:2    data=${OPENFLOW_UNDERLAY_TOPOLOGY_2}
-    Log    ${resp.content}
-    Should Be Equal As Strings    ${resp.status_code}    200
+    # Openflow underlay topologies
+    : FOR    ${index}    IN RANGE    1    6
+    \    ${resp}    Put Request    session    ${CONFIG_API}/${TOPOLOGY_URL}/openflow-topo:${index}    data=${OPENFLOW_UNDERLAY_TOPOLOGY_${index}}
+    \    Log    ${resp.content}
+    \    Should Be Equal As Strings    ${resp.status_code}    200
     Issue Command On Karaf Console    log:clear
     Log    ${resp.content}
 
 Prepare Unification Inside Topology Request
-    [Arguments]    ${request_template}    ${model}    ${correlation_item}    ${target-field}    ${underlay_topo1}
+    [Arguments]    ${request_template}    ${model}    ${correlation_item}    ${underlay_topo1}
     [Documentation]    Prepare topology request for unification inside from template
     ${request_template}    Set Element Text    ${request_template}    ${model}    xpath=.//correlations/output-model
     ${request_template}    Set Element Text    ${request_template}    aggregation-only    xpath=.//correlations/correlation/type
@@ -102,30 +97,144 @@ Prepare Unification Inside Topology Request
     ${request_template}    Set Element Text    ${request_template}    unification    xpath=.//correlation/aggregation/aggregation-type
     ${request_template}    Set Element Text    ${request_template}    ${model}    xpath=.//correlation/aggregation/mapping[1]/input-model
     ${request_template}    Set Element Text    ${request_template}    ${underlay_topo1}    xpath=.//correlation/aggregation/mapping[1]/underlay-topology
-    ${request_template}    Set Element Text    ${request_template}    ${target-field}    xpath=.//correlation/aggregation/mapping[1]/target-field
     ${request_template}    Element to String    ${request_template}
     [Return]    ${request_template}
 
 Prepare Unification Topology Request
-    [Arguments]    ${request_template}    ${model}    ${correlation_item}    ${target-field}    ${underlay_topo1}    ${underlay_topo2}
+    [Arguments]    ${request_template}    ${model}    ${correlation_item}    ${underlay_topo1}    ${underlay_topo2}
     [Documentation]    Prepare topology request for unification on two topologies from template
-    ${request_template}    Prepare Unification Inside Topology Request    ${request_template}    ${model}    ${correlation_item}    ${target-field}    ${underlay_topo1}
+    ${request_template}    Prepare Unification Inside Topology Request    ${request_template}    ${model}    ${correlation_item}    ${underlay_topo1}
     ${request_template}    Set Element Text    ${request_template}    ${underlay_topo2}    xpath=.//correlation/aggregation/mapping[2]/underlay-topology
-    ${request_template}    Set Element Text    ${request_template}    ${target-field}    xpath=.//correlation/aggregation/mapping[2]/target-field
     ${request_template}    Set Element Text    ${request_template}    ${model}    xpath=.//correlation/aggregation/mapping[2]/input-model
     ${request_template}    Element to String    ${request_template}
     [Return]    ${request_template}
 
-Get Installed Features
-    [Documentation]    Returns list of installed features as String
-    Open Connection    ${ODL_SYSTEM_IP}    port=${KARAF_SHELL_PORT}    prompt=${KARAF_PROMPT}    timeout=5
-    Flexible SSH Login    ${KARAF_USER}    ${KARAF_PASSWORD}
-    Write    feature:list -i
-    ${features}    Read until prompt
-    Close Connection
-    Log    Installed features:
-    Log    ${features}
-    [Return]    ${features}
+Prepare Unification Filtration Topology Request
+    [Arguments]    ${request_template}    ${model}    ${target-field}    ${underlay_topo2}
+    [Documentation]    Prepare topology request for unification on two topologies from template
+    ${request_template}    Set Element Text    ${request_template}    ${underlay_topo2}    xpath=.//correlation/aggregation/mapping[2]/underlay-topology
+    ${request_template}    Set Element Text    ${request_template}    ${target-field}    xpath=.//correlation/aggregation/mapping[2]/target-field[1]/target-field-path
+    ${request_template}    Set Element Text    ${request_template}    ${model}    xpath=.//correlation/aggregation/mapping[2]/input-model
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Prepare Unification Filtration Inside Topology Request
+    [Arguments]    ${request_template}    ${model}    ${correlation_item}    ${target-field}    ${underlay_topo}
+    [Documentation]    Prepare topology request for unification filtration inside from template
+    ${request_template}    Set Element Text    ${request_template}    ${model}    xpath=.//correlations/output-model
+    ${request_template}    Set Element Text    ${request_template}    filtration-aggregation    xpath=.//correlations/correlation/type
+    ${request_template}    Set Element Text    ${request_template}    ${correlation_item}    xpath=.//correlation/correlation-item
+    ${request_template}    Set Element Text    ${request_template}    unification    xpath=.//correlation/aggregation/aggregation-type
+    ${request_template}    Set Element Text    ${request_template}    ${model}    xpath=.//correlation/aggregation/mapping[1]/input-model
+    ${request_template}    Set Element Text    ${request_template}    ${underlay_topo}    xpath=.//correlation/aggregation/mapping[1]/underlay-topology
+    ${request_template}    Set Element Text    ${request_template}    ${target-field}    xpath=.//correlation/aggregation/mapping[1]/target-field[1]/target-field-path
+    ${request_template}    Set Element Text    ${request_template}    ${underlay_topo}    xpath=.//correlation/filtration/underlay-topology
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Prepare Filtration Topology Request
+    [Arguments]    ${request_template}    ${model}    ${correlation_item}    ${underlay_topo}
+    [Documentation]    Prepare topology request for filtration from template
+    ${request_template}    Set Element Text    ${request_template}    ${model}    xpath=.//correlations/output-model
+    ${request_template}    Set Element Text    ${request_template}    ${correlation_item}    xpath=.//correlation/correlation-item
+    ${request_template}    Set Element Text    ${request_template}    ${underlay_topo}    xpath=.//correlation/filtration/underlay-topology
+    [Return]    ${request_template}
+
+Insert Target Field
+    [Arguments]    ${request_template}    ${mapping_index}    ${target_field_path}    ${matching_key}
+    [Documentation]    Add target field to request
+    ${target_field_template}    Set Element Text    ${TARGET_FIELD}    ${target_field_path}    xpath=.//target-field-path
+    ${target_field_template}    Set Element Text    ${target_field_template}    ${matching_key}    xpath=.//matching-key
+    ${request_template}    Add Element    ${request_template}    ${target_field_template}    xpath=.//correlation/aggregation/mapping[${mapping_index}]
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Insert Filter
+    [Arguments]    ${request_template}    ${filter_template}    ${target_field}
+    [Documentation]    Add filter to filtration
+    ${request_template}    Add Element    ${request_template}    ${filter_template}    xpath=.//correlation/filtration
+    ${model}    Get Element Text    ${request_template}    xpath=.//correlations/output-model
+    ${request_template}    Set Element Text    ${request_template}    ${model}    xpath=.//correlation/filtration/filter/input-model
+    ${request_template}    Set Element Text    ${request_template}    ${target_field}    xpath=.//correlation/filtration/filter/target-field
+    [Return]    ${request_template}
+
+Set IPV4 Filter
+    [Arguments]    ${request_template}    ${ip_address}
+    [Documentation]    Set filter ipv4 address
+    ${request_template}    Set Element Text    ${request_template}    ${ip_address}    xpath=.//correlation/filtration/filter/ipv4-address-filter/ipv4-address
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Set Range Number Filter
+    [Arguments]    ${request_template}    ${min_number}    ${max_number}
+    [Documentation]    Set filter minimum and maximum number values
+    ${request_template}    Set Element Text    ${request_template}    ${min_number}    xpath=.//correlation/filtration/filter/range-number-filter/min-number-value
+    ${request_template}    Set Element Text    ${request_template}    ${max_number}    xpath=.//correlation/filtration/filter/range-number-filter/max-number-value
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Set Range String Filter
+    [Arguments]    ${request_template}    ${min_value}    ${max_value}
+    [Documentation]    Set filter minimum and maximum string values
+    ${request_template}    Set Element Text    ${request_template}    ${min_value}    xpath=.//correlation/filtration/filter/range-string-filter/min-string-value
+    ${request_template}    Set Element Text    ${request_template}    ${max_value}    xpath=.//correlation/filtration/filter/range-string-filter/max-string-value
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Set Specific Number Filter
+    [Arguments]    ${request_template}    ${number}
+    [Documentation]    Set filter number value
+    ${request_template}    Set Element Text    ${request_template}    ${number}    xpath=.//correlation/filtration/filter/specific-number-filter/specific-number
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Set Specific String Filter
+    [Arguments]    ${request_template}    ${string_value}
+    [Documentation]    Set filter string value
+    ${request_template}    Set Element Text    ${request_template}    ${string_value}    xpath=.//correlation/filtration/filter/specific-string-filter/specific-string
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Set IPV6 Filter
+    [Arguments]    ${request_template}    ${ip_address}
+    [Documentation]    Set filter ipv6 address
+    ${request_template}    Set Element Text    ${request_template}    ${ip_address}    xpath=.//correlation/filtration/filter/ipv6-address-filter/ipv6-address
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Set Script Filter
+    [Arguments]    ${request_template}    ${script_language}    ${script}
+    [Documentation]    Set filter script
+    ${request_template}    Set Element Text    ${request_template}    ${script_language}    xpath=.//correlation/filtration/filter/script-filter/scripting/language
+    ${request_template}    Set Element Text    ${request_template}    ${script}    xpath=.//correlation/filtration/filter/script-filter/scripting/script
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Insert Link Computation Inside
+    [Arguments]    ${request_template}    ${link_computation_template}    ${input_model}    ${underlay_topology}
+    [Documentation]    Add link computation to request
+    ${request_template}    Add Element    ${request_template}    ${link_computation_template}    xpath=.
+    ${request_template}    Set Element Text    ${request_template}    ${input_model}    xpath=.//link-computation/node-info/input-model
+    ${request_template}    Set Element Text    ${request_template}    ${input_model}    xpath=.//link-computation/link-info/input-model
+    ${request_template}    Set Element Text    ${request_template}    ${input_model}    xpath=.//link-computation/output-model
+    ${request_template}    Set Element Text    ${request_template}    ${underlay_topology}    xpath=.//link-computation/link-info/link-topology
+    ${request_template}    Set Element Attribute    ${request_template}    xmlns:n    urn:opendaylight:topology:correlation    xpath=./link-computation
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
+
+Insert Link Computation
+    [Arguments]    ${request_template}    ${link_computation_template}    ${input_model}    ${underlay_topology_1}    ${underlay_topology_2}
+    [Documentation]    Add link computation to request
+    ${request_template}    Add Element    ${request_template}    ${link_computation_template}    xpath=.
+    ${request_template}    Set Element Text    ${request_template}    ${input_model}    xpath=.//link-computation/node-info/input-model
+    ${request_template}    Set Element Text    ${request_template}    ${input_model}    xpath=.//link-computation/link-info[1]/input-model
+    ${request_template}    Set Element Text    ${request_template}    ${input_model}    xpath=.//link-computation/link-info[2]/input-model
+    ${request_template}    Set Element Text    ${request_template}    ${input_model}    xpath=.//link-computation/output-model
+    ${request_template}    Set Element Text    ${request_template}    ${underlay_topology_1}    xpath=.//link-computation/link-info[1]/link-topology
+    ${request_template}    Set Element Text    ${request_template}    ${underlay_topology_2}    xpath=.//link-computation/link-info[2]/link-topology
+    ${request_template}    Set Element Attribute    ${request_template}    xmlns:n    urn:opendaylight:topology:correlation    xpath=./link-computation
+    ${request_template}    Element to String    ${request_template}
+    [Return]    ${request_template}
 
 Insert Scripting into Request
     [Arguments]    ${request}    ${language}    ${script}