Commit e57c8dbf authored by douomo's avatar douomo
Browse files

added swith for svc_inventory in CB, PB and PEB

parent fee47bfd
Loading
Loading
Loading
Loading
+18 −13
Original line number Original line Diff line number Diff line
@@ -25,7 +25,8 @@ Test Net
    Test Net    ${vendor_1}     filters/NETFilter/lldp_filter.xml
    Test Net    ${vendor_1}     filters/NETFilter/lldp_filter.xml


Test Service
Test Service
    Test Service    ${vendor_1}    filters/ServiceFilter/bridge_filter.xml
    Test Service    ${vendor_1}    filters/ServiceFilter/bridge_filter.xml    filters/ServiceFilter/interface_filter.xml    CB
    # the 3rd argument can be CB, PB or PEB
    #Test Service PEB Mode    ${vendor_1}    filters/ServiceFilter/bridge_filter.xml    filters/ServiceFilter/interface_filter.xml
    #Test Service PEB Mode    ${vendor_1}    filters/ServiceFilter/bridge_filter.xml    filters/ServiceFilter/interface_filter.xml


    
    
@@ -80,23 +81,27 @@ Test Net
    Should Be Equal    ${passed}    SUCCESS
    Should Be Equal    ${passed}    SUCCESS




Test Service
#Test Service
    [Arguments]    ${info}    @{args}
#    [Arguments]    ${info}    @{args}
    ${svc_inventory}=    Inventory Request    ${info}    @{args}
#    ${svc_inventory}=    Inventory Request    ${info}    ${args[0]}
    ${passed}=    Check SVC Inventory    ${svc_inventory}
#    ${passed}=    Check SVC Inventory    ${svc_inventory}    ${args[1]}  
    Log    ${passed}    console=yes
#    Log    ${passed}    console=yes
    Should Be Equal    ${passed}    SUCCESS
#    Should Be Equal    ${passed}    SUCCESS


Test Service PEB Mode
Test Service
    [Arguments]    ${info}    @{args}
    [Arguments]    ${info}    @{args}
    ${svc_inventory}=    Inventory Request    ${info}    @{args[0]}
    ${svc_inventory}=    Inventory Request    ${info}    @{args[0]}
    ${passed}=    Check SVC Inventory    ${svc_inventory}
    ${passed}=    Check SVC Inventory    ${svc_inventory}    ${args[2]}
    Log    ${passed}    console=yes
    Log    ${passed}    console=yes
    Should Be Equal    ${passed}    SUCCESS
    Should Be Equal    ${passed}    SUCCESS
    IF    ${args[2]}=="PEB"
        ${iface_inventory}=    Inventory Request    ${info}    @{args[1]}
        ${iface_inventory}=    Inventory Request    ${info}    @{args[1]}
        ${passed}=    Check SVC PEB Inventory    ${iface_inventory}
        ${passed}=    Check SVC PEB Inventory    ${iface_inventory}
        Log    ${passed}    console=yes
        Log    ${passed}    console=yes
        Should Be Equal    ${passed}    SUCCESS    
        Should Be Equal    ${passed}    SUCCESS    
    END
    
    




Inventory Request
Inventory Request
+2 −2
Original line number Original line Diff line number Diff line
@@ -36,10 +36,10 @@ Decrease TX Power
    #${m}=    Connect With Credentials    ${par["host"]}    ${par["port"]}    ${par["username"]}    ${par["password"]}
    #${m}=    Connect With Credentials    ${par["host"]}    ${par["port"]}    ${par["username"]}    ${par["password"]}
    ${t}=    Connect With Key    ${transmitter["host"]}    ${transmitter["port"]}    ${transmitter["username"]}    ${transmitter["key_filename"]}
    ${t}=    Connect With Key    ${transmitter["host"]}    ${transmitter["port"]}    ${transmitter["username"]}    ${transmitter["key_filename"]}
    #${t}=    Connect With Credentials    ${transmitter["host"]}    ${transmitter["port"]}    ${transmitter["username"]}    ${transmitter["password"]}
    #${t}=    Connect With Credentials    ${transmitter["host"]}    ${transmitter["port"]}    ${transmitter["username"]}    ${transmitter["password"]}
    Set TX Power    ${t}    ${transmitter["testInterface"]}    ${transmitter["maxTxPower"]}    #On transmitter node: need to connect to the TX and change ${m} with the reference to the transmitter
    Set TX Power    ${t}    ${transmitter["testInterface"]}    ${transmitter["maxTxPower"]}
    BuiltIn.Sleep    5s
    BuiltIn.Sleep    5s
    ${init_RSL} =    Get Iface Metrics    ${m}    ${par["testInterface"]}    "actual-received-level"
    ${init_RSL} =    Get Iface Metrics    ${m}    ${par["testInterface"]}    "actual-received-level"
    Set TX Power    ${t}    ${transmitter["testInterface"]}    ${transmitter["minTxPower"]}    #On transmitter node: need to connect to the TX and change ${m} with the reference to the transmitter
    Set TX Power    ${t}    ${transmitter["testInterface"]}    ${transmitter["minTxPower"]}
    BuiltIn.Sleep    5s
    BuiltIn.Sleep    5s
    ${final_RSL} =    Get Iface Metrics    ${m}    ${par["testInterface"]}    "actual-received-level"
    ${final_RSL} =    Get Iface Metrics    ${m}    ${par["testInterface"]}    "actual-received-level"
    Log    Initial RSL value: ${init_RSL}    console=yes
    Log    Initial RSL value: ${init_RSL}    console=yes
+7 −1
Original line number Original line Diff line number Diff line
@@ -6,6 +6,7 @@ import xml.etree.ElementTree as ET
from jinja2 import Environment, FileSystemLoader
from jinja2 import Environment, FileSystemLoader
import time
import time
from robot.libraries.BuiltIn import BuiltIn
from robot.libraries.BuiltIn import BuiltIn
from ncclient.operations import RPCError




def get_filtered_config(mgr, filter):   
def get_filtered_config(mgr, filter):   
@@ -79,7 +80,12 @@ def set_TX_power(m, int_name, txPower):
    BuiltIn().log_to_console("New config for tx-power:")
    BuiltIn().log_to_console("New config for tx-power:")
    BuiltIn().log_to_console(xml)
    BuiltIn().log_to_console(xml)
    m.edit_config(target="candidate", config=xml)
    m.edit_config(target="candidate", config=xml)
    try:
        m.commit()
        m.commit()
    except RPCError as e:
        BuiltIn().log_to_console("RCP ERROR. Message :", e.message, " info: ", e.info)
    BuiltIn().log_to_console("new pwer committed")
        
    
    
def set_SNR_threshold(m,int_name, t):
def set_SNR_threshold(m,int_name, t):
    env = Environment( loader=FileSystemLoader("."), autoescape=False)
    env = Environment( loader=FileSystemLoader("."), autoescape=False)
+24 −9
Original line number Original line Diff line number Diff line
@@ -38,8 +38,8 @@ def check_hardware_inventory(xml_reply):
        if "chassis" in cls[0].text or "module" in cls[0].text:
        if "chassis" in cls[0].text or "module" in cls[0].text:
            expected_params = expected_params + 1
            expected_params = expected_params + 1
            actual_params = actual_params + min([1,len(serial_num)])
            actual_params = actual_params + min([1,len(serial_num)])
            if len(serial_num)==0:
            #if len(serial_num)==0:
                print("not found serial num for component ",cls[0].text," with name ",name[0].text)
                #print("not found serial num for component ",cls[0].text," with name ",name[0].text)
        if "port" in cls[0].text:
        if "port" in cls[0].text:
            if len(parent) == 0 or len(contains_child)>0:
            if len(parent) == 0 or len(contains_child)>0:
                return "tree not consistent"
                return "tree not consistent"
@@ -252,12 +252,12 @@ def check_LLDP_inventory(xml_reply):
        actual_params = actual_params -2 + len(chassis_id) + len(chassis_id_subtype)
        actual_params = actual_params -2 + len(chassis_id) + len(chassis_id_subtype)
    ports = tree.findall(".//ns1:port", namespaces={"ns1": "urn:ieee:std:802.1AB:yang:ieee802-dot1ab-lldp"})
    ports = tree.findall(".//ns1:port", namespaces={"ns1": "urn:ieee:std:802.1AB:yang:ieee802-dot1ab-lldp"})
    for port in ports:
    for port in ports:
        expected_params = expected_params + 2
        actual_params = actual_params + 2 
        portID = port.findall(".//ns1:port-id", namespaces={"ns1": "urn:ieee:std:802.1AB:yang:ieee802-dot1ab-lldp"})
        portID = port.findall(".//ns1:port-id", namespaces={"ns1": "urn:ieee:std:802.1AB:yang:ieee802-dot1ab-lldp"})
        portIDSubtype = port.findall(".//ns1:port-id-subtype", namespaces={"ns1": "urn:ieee:std:802.1AB:yang:ieee802-dot1ab-lldp"})
        portIDSubtype = port.findall(".//ns1:port-id-subtype", namespaces={"ns1": "urn:ieee:std:802.1AB:yang:ieee802-dot1ab-lldp"})
        adminstatus = port.findall(".//ns1:admin-status", namespaces={"ns1": "urn:ieee:std:802.1AB:yang:ieee802-dot1ab-lldp"}) #HW
        adminstatus = port.findall(".//ns1:admin-status", namespaces={"ns1": "urn:ieee:std:802.1AB:yang:ieee802-dot1ab-lldp"}) #HW
        if adminstatus[0].text != "disabled": #HW
        if adminstatus[0].text != "disabled": #HW
            expected_params = expected_params + 2
            actual_params = actual_params + 2 
            if len(portID)==0 or len(portIDSubtype)==0:
            if len(portID)==0 or len(portIDSubtype)==0:
                actual_params = actual_params -2+ len(portID) + len(portIDSubtype)
                actual_params = actual_params -2+ len(portID) + len(portIDSubtype)
            #return "port data incomplete"
            #return "port data incomplete"
@@ -276,7 +276,18 @@ def check_LLDP_inventory(xml_reply):
        return "expected params = ",expected_params," got ", actual_params
        return "expected params = ",expected_params," got ", actual_params
    return "SUCCESS"
    return "SUCCESS"


def check_svc_inventory(xml_reply):
def check_svc_inventory(xml_reply, flag):
    bridge_type_filter = None
    component_type_filter  = None
    if flag == "CB":
        bridge_type_filter = "dot1q:customer-vlan-bridge"
        component_type_filter = "dot1q:c-vlan-component"
    elif flag == "PB":
        bridge_type_filter = "dot1q:provider-bridge"
        component_type_filter = "dot1q:s-vlan-component"
    else:
        bridge_type_filter = "dot1q:provider-edge-bridge"
        component_type_filter = "dot1q:s-vlan-component"
    tree = ET.fromstring(xml_reply)
    tree = ET.fromstring(xml_reply)
    bridges = tree.findall(".//ns0:bridge", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
    bridges = tree.findall(".//ns0:bridge", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
    expected_params = 0
    expected_params = 0
@@ -288,8 +299,10 @@ def check_svc_inventory(xml_reply):
        address = bridge.findall(".//ns0:address", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
        address = bridge.findall(".//ns0:address", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
        bridge_type = bridge.findall(".//ns0:bridge-type", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
        bridge_type = bridge.findall(".//ns0:bridge-type", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
        components = bridge.findall(".//ns0:component", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
        components = bridge.findall(".//ns0:component", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
        if bridge_type[0].text != bridge_type_filter:
            continue
        if len(name)==0 or len(address)==0 or len(bridge_type)==0 or len(components)==0:
        if len(name)==0 or len(address)==0 or len(bridge_type)==0 or len(components)==0:
            #return "mssing bridge's info"
            #print("mssing bridge's info")
            actual_params = actual_params - 4 + len(name) + len(address) + len(bridge_type) + len(components)
            actual_params = actual_params - 4 + len(name) + len(address) + len(bridge_type) + len(components)
        for component in components:
        for component in components:
            expected_params = expected_params + 6
            expected_params = expected_params + 6
@@ -300,8 +313,10 @@ def check_svc_inventory(xml_reply):
            bridge_port = component.findall(".//ns0:bridge-port", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
            bridge_port = component.findall(".//ns0:bridge-port", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
            filtering_database = component.findall(".//ns0:filtering-database", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
            filtering_database = component.findall(".//ns0:filtering-database", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
            bridge_vlan = component.findall(".//ns0:bridge-vlan", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
            bridge_vlan = component.findall(".//ns0:bridge-vlan", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
            if type[0].text != component_type_filter:
                continue
            if len(name)==0 or len(id)==0 or len(type)==0 or len(bridge_port)==0 or len(filtering_database)==0 or len(bridge_vlan)==0:
            if len(name)==0 or len(id)==0 or len(type)==0 or len(bridge_port)==0 or len(filtering_database)==0 or len(bridge_vlan)==0:
                #return "missing components's info"
                #print("missing components's info")
                actual_params = actual_params - 6 + len(name) + len(id) + len(type) + len(bridge_port) + len(filtering_database) + len(bridge_vlan)
                actual_params = actual_params - 6 + len(name) + len(id) + len(type) + len(bridge_port) + len(filtering_database) + len(bridge_vlan)
            for db in filtering_database:
            for db in filtering_database:
                expected_params = expected_params + 1 #if there's the filtering db I expect to see also vlan_reg_entry
                expected_params = expected_params + 1 #if there's the filtering db I expect to see also vlan_reg_entry
@@ -330,7 +345,7 @@ def check_svc_inventory(xml_reply):
                        vlan_transmitted = p.findall(".//ns0:vlan-transmitted", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
                        vlan_transmitted = p.findall(".//ns0:vlan-transmitted", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
                        registrar_admin_control = p.findall(".//ns0:registrar-admin-control", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
                        registrar_admin_control = p.findall(".//ns0:registrar-admin-control", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
                        if len(port_ref)==0 or len(static_vlan_reg_entry)==0 or len(vlan_transmitted)==0 or len(registrar_admin_control)==0:
                        if len(port_ref)==0 or len(static_vlan_reg_entry)==0 or len(vlan_transmitted)==0 or len(registrar_admin_control)==0:
                            #return "Missing data in port map"
                            #print("Missing data in port map")
                            actual_params = actual_params - 4 + len(port_ref) + len(static_vlan_reg_entry) + len(vlan_transmitted) + len(registrar_admin_control)
                            actual_params = actual_params - 4 + len(port_ref) + len(static_vlan_reg_entry) + len(vlan_transmitted) + len(registrar_admin_control)
            for br in bridge_vlan:
            for br in bridge_vlan:
                expected_params = expected_params + 1 #if there's a bridge_vlan I also expect to see vlans
                expected_params = expected_params + 1 #if there's a bridge_vlan I also expect to see vlans
@@ -345,7 +360,7 @@ def check_svc_inventory(xml_reply):
                    name = vlan.findall(".//ns0:name", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
                    name = vlan.findall(".//ns0:name", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
                    egress_ports = vlan.findall(".//ns0:egress-ports", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
                    egress_ports = vlan.findall(".//ns0:egress-ports", namespaces={"ns0": "urn:ieee:std:802.1Q:yang:ieee802-dot1q-bridge"})
                    if len(vid)==0 or len(name)==0 or len(egress_ports)==0:
                    if len(vid)==0 or len(name)==0 or len(egress_ports)==0:
                        #return "Missing data in bridge vlan"
                        #print("Missing data in bridge vlan")
                        actual_params = actual_params - 3 + len(vid) + len(name) + len(egress_ports)
                        actual_params = actual_params - 3 + len(vid) + len(name) + len(egress_ports)
    if actual_params<expected_params:
    if actual_params<expected_params:
        return "expected params = ",expected_params," got ", actual_params
        return "expected params = ",expected_params," got ", actual_params