Пример #1
0
 def ssm(method, opt, wait=1):
     utils.framelog('%s .. %s' %(method, opt))
     for pn, po in tb.crs.port_dict.items():
         if pn.startswith('nc_'):
             getattr(po, method)(opt=opt)
     time.sleep(wait)
     tb.crs.cliexe('show port | match 1/2/c1/')
Пример #2
0
def cmuIfFailover():
    results = list()
    ixia = _tbd.ixplte
    cmu_mate = _tbd.cmu_mate
    cmu_master = _tbd.cmu_master

    framelog('STEP 1: start ixia traffic')
    ixia.start_traffic()
    ixia.set_stats()

    framelog('STEP 2: CMU interface-1 failover')
    cmu_master.intf1.shutdown()

    framelog('STEP 3: stop traffic and check loss% (failover)')
    ixia.stop_traffic(btime=120)
    results += ixia.check_losspct()

    framelog('STEP 4: Start traffic and CMU interface-1 failback')
    ixia.start_traffic()
    cmu_master.intf1.noshutdown()

    framelog('STEP 5: stop traffic and check loss% (failback)')
    ixia.stop_traffic(btime=120)
    results += ixia.check_losspct()

    return [ppf(results)]
Пример #3
0
def cmuSvrFailover():
    results = list()
    boot = True
    ixia = _tbd.ixplte
    cmu_mate = _tbd.cmu_mate
    cmu_master = _tbd.cmu_master

    step = 1
    for cmu in [cmu_master, cmu_mate]:
        framelog('STEP %s: start ixia traffic' % step)
        ixia.start_traffic()
        ixia.set_stats()

        framelog('STEP %d: %s failover' % (step, cmu.name))
        if not cmu_master.reboot():
            boot = False
            results.append(False)

        framelog('STEP %d: stop traffic and check loss%')
        ixia.stop_traffic(btime=120)
        results += ixia.check_losspct()

        if boot:
            framelog('STEP %d: Wait till %s comes back' % (step, cmu.name))
            utils.poll(cmu_master.connect, timeout=300, intv=20)

    return [ppf(results)]
Пример #4
0
def netconf_xml():
    testcheck = True

    framelog('STEP 1: Port shut/noshut via netconf-xml', '*')
    for node in tb:
        framelog('Node %s port shut/noshut' % node.sysname)
        for port in node:
            port.shutdown(opt='netconf')
            testcheck and port.check_admin_state(state='down')
            port.noshutdown(opt='netconf')
            testcheck and port.check_admin_state()

    if testcheck:
        return ['PASS']
    return ['FAIL']
Пример #5
0
def kpi_demo_1(tc_name):
    result = ['PASS']  # result is a list

    kpidict = OrderedDict()
    kpidict['KPIs'] = list()  # init as empty list

    # kpi_name should be 'tc_name.kpi_name'. in this case
    # tc_name='kpi_demo_1' and kpi_name are 'tx' & 'rx'
    kpi1 = '.'.join([tc_name, 'tx'])  # kpi1 = 'kpi_demo_1.tx'
    kpi2 = '.'.join([tc_name, 'rx'])  # kpi2 = 'kpi_demo_2.rx'

    kpidict['KPIs'].append(kpi1)
    kpidict['KPIs'].append(kpi2)
    # now we have two kpi_names in kpidict
    # kpidict['KPIs']=['kpi_demo_1.tx', 'kpi_demo_1.rx']

    # each kpi_name may have multiple actual ixia data streams
    # here we set up examle stream names and random data
    lstrms = ['streamA', 'streamB', 'streamC', 'streamD', 'streamE']
    lrands = [random.random() for i in range(len(lstrms))]
    for k, v in zip(lstrms, lrands):
        kpidict['.'.join([kpi1, k])] = v
        kpidict['.'.join([kpi2, k])] = v

    # now kpidict looks like:
    # kpidict['KPIs']=['kpi_demo_1.tx', 'kpi_demo_1.rx']
    # kpidict['kpi_demo_1.tx.streamA']=0.1765527465253881
    # kpidict['kpi_demo_1.rx.streamA']=0.1765527465253881
    # kpidict['kpi_demo_1.tx.streamB']=0.7410514463087737
    # kpidict['kpi_demo_1.rx.streamB']=0.7410514463087737
    # kpidict['kpi_demo_1.tx.streamC']=0.7467162353471369
    # kpidict['kpi_demo_1.rx.streamC']=0.7467162353471369
    # kpidict['kpi_demo_1.tx.streamD']=0.5611944638798385
    # kpidict['kpi_demo_1.rx.streamD']=0.5611944638798385
    # kpidict['kpi_demo_1.tx.streamE']=0.1742471165521735
    # kpidict['kpi_demo_1.rx.streamE']=0.1742471165521735

    # log kpidict
    utils.framelog('kpidict in this run')
    for k in kpidict:
        mylog.info('kpidict[%s]=%s' % (k, kpidict[k]))

    result.append(kpidict)
    # result = ['PASS', kpidict]

    return result
Пример #6
0
def netconf_cli():
    testcheck = True

    framelog('STEP 1: Port shut/noshut via netconf-cli', '*')
    for node in tb:
        framelog('Node %s port shut/noshut' % node.sysname)
        for port in node:
            cmd = 'config port %s shutdown' % port.port
            port.node.send_command(cmd, protocol='netconf')
            testcheck and port.check_admin_state(state='down')
            cmd = 'config port %s no shutdown' % port.port
            port.node.send_command(cmd, protocol='netconf')
            testcheck and port.check_admin_state()

    if testcheck:
        return ['PASS']
    return ['FAIL']
Пример #7
0
def ssh_modeldriven():
    testcheck = True

    framelog('STEP 1: Port shut/noshut via ssh/model-driven', '*')
    for node in tb:
        framelog('Node %s port shut/noshut' % node.sysname)
        for port in node:
            cmd = 'config port %s admin-state disable' % port.port
            port.node.send_command(cmd, style='md')
            testcheck and port.check_admin_state(state='down', style='md')
            cmd = 'config port %s admin-state enable' % port.port
            port.node.send_command(cmd, style='md')
            testcheck and port.check_admin_state(style='md')

    if testcheck:
        return ['PASS']
    return ['FAIL']
Пример #8
0
def vsrfailover(tc=1):
    results = list()
    ixia = _tbd.ixplte
    vsri1 = [_tbd.vSRi01]
    vsri1n2 = [_tbd.vSRi01, _tbd.vSRi02]
    vsra1 = [_tbd.vSRa01]
    vsra1n2 = [_tbd.vSRa01, _tbd.vSRa02]
    core1 = [_tbd.SRa8_01]
    core1n2 = [_tbd.SRa8_01, _tbd.SRa8_01]

    rtrs = vsri1
    losspct = 2
    # for various test cases
    if tc == 2:
        rtrs = vsri1n2
        losspct = 5
    elif tc == 4:
        rtrs = core1
    elif tc == 5:
        rtrs = core1n2

    framelog('STEP 0: shutdown core1&2 ports')
    for sr in core1n2:
        sr.port1.shutdown()
        sr.port2.shutdown()

    framelog('STEP 1: start ixia traffic')
    ixia.start_traffic(atime=30)
    ixia.set_stats()

    framelog('STEP 2: router reboot (failover)')
    for rtr in rtrs:
        mylog.info('%s reboot' % rtr.name)
        rtr.reboot()

    framelog('STEP 3: stop traffic and check loss%')
    ixia.stop_traffic(btime=120)
    results += ixia.check_losspct(losspct)

    framelog('STEP 4: re-connect routers')
    for rtr in rtrs:
        mylog.info('%s re-connect' % rtr.name)
        utils.poll(rtr.connect, timeout=60, intv=10)

    return [ppf(results)]
Пример #9
0
def snmp_and_ssh_classic():
    testcheck = True

    step = 1
    for protocol in ['snmp', 'ssh']:
        framelog('STEP %d: Port shut/noshut via %s' % (step, protocol), '*')
        step += 1
        for node in tb:
            framelog('Node %s port shut/noshut' % node.sysname)
            for port in node:
                port.shutdown(opt=protocol)
                testcheck and port.check_admin_state(state='down')
                port.noshutdown(opt=protocol)
                testcheck and port.check_admin_state(state='up')

    # return result list
    # 1st element must present. -- PASS|FAIL
    # 2nd element is optional. -- KPI dictionary for regression kpi diagram
    if testcheck:
        return ['PASS']
    return ['FAIL']
Пример #10
0
def main(testsuite_name='exampleA',
         testcase_name='snmp_and_ssh_classic',
         testbed_file='example.yaml'):

    global tb
    if not tb:
        tb = nodelib.Testbed(testbed_file)

    # initialize testcheck True
    testcheck = True

    # tc: snmp_and_ssh_classic
    if testcase_name == 'snmp_and_ssh_classic':
        step = 1
        for protocol in ['snmp', 'ssh']:
            framelog('STEP %d: Port shut/noshut via %s' % (step, protocol),
                     '*')
            step += 1
            for node in tb:
                framelog('Node %s port shut/noshut' % node.sysname)
                for port in node:
                    port.shutdown(opt=protocol)
                    testcheck and port.check_admin_state(state='down')
                    port.noshutdown(opt=protocol)
                    testcheck and port.check_admin_state(state='up')
    # tc: ssh_modeldriven
    elif testcase_name == 'ssh_modeldriven':
        framelog('STEP 1: Port shut/noshut via ssh/model-driven', '*')
        for node in tb:
            framelog('Node %s port shut/noshut' % node.sysname)
            for port in node:
                cmd = 'config port %s admin-state disable' % port.port
                port.node.send_command(cmd, style='md')
                testcheck and port.check_admin_state(state='down', style='md')
                cmd = 'config port %s admin-state enable' % port.port
                port.node.send_command(cmd, style='md')
                testcheck and port.check_admin_state(style='md')
    # tc: netconf_cli
    elif testcase_name == 'netconf_cli':
        framelog('STEP 1: Port shut/noshut via netconf-cli', '*')
        for node in tb:
            framelog('Node %s port shut/noshut' % node.sysname)
            for port in node:
                cmd = 'config port %s shutdown' % port.port
                port.node.send_command(cmd, protocol='netconf')
                testcheck and port.check_admin_state(state='down')
                cmd = 'config port %s no shutdown' % port.port
                port.node.send_command(cmd, protocol='netconf')
                testcheck and port.check_admin_state()
    # tc: netconf_cli
    elif testcase_name == 'netconf_xml':
        framelog('STEP 1: Port shut/noshut via netconf-xml', '*')
        for node in tb:
            framelog('Node %s port shut/noshut' % node.sysname)
            for port in node:
                port.shutdown(opt='netconf')
                testcheck and port.check_admin_state(state='down')
                port.noshutdown(opt='netconf')
                testcheck and port.check_admin_state()
    else:
        mylog.error('Wrong testcase_name %s' % testcase_name)
        return ['FAIL']

    if testcheck:
        return ['PASS']
    return ['FAIL']
Пример #11
0
def sanity1():
    results = list()
    sarhms7475 = utils.find_nodes(
        _tbd.node_dict,
        '_SARHm02 - DC01|_SARHm07 - DC01|_SARHm02 - DC02|_SARHm07 - DC02')
    sarhms7455 = utils.find_nodes(_tbd.node_dict, '_SARHm11 - DC02')
    sarhms = sarhms7475 + sarhms7455
    #sarhms=utils.find_nodes(_tbd.node_dict,'_SARHm')

    srhm = utils.find_nodes(_tbd.node_dict, '_SARHm06 - DC01')
    vsrs = utils.find_nodes(_tbd.node_dict, '_vSRi')

    bgpsum = vsrs[0].cliexe('show router bgp summary')
    ports = srhm[0].cliexe("show port")

    ports = vsrs[0].cliexe("show port")
    vsrs[0].cellif.shutdown()
    sst = vsrs[0].cellif.getstate()

    ports = vsrs[0].cliexe("show port")
    vsrs[0].cellif.noshutdown()
    sst = vsrs[0].cellif.getstate()

    ports = vsrs[0].cliexe("show port")

    vsrs[0].cellif.shutdown(snmp=True)
    ports = vsrs[0].cliexe("show port")
    vsrs[0].cellif.noshutdown(snmp=True)
    ports = vsrs[0].cliexe("show port")

    log99 = vsrs[0].show_log_99()
    vsrs[0].clear_log_99()
    log99 = vsrs[0].show_log_99()
    srbof = vsrs[0].show_bof()
    vsrs[0].send_cli_command('/configure router isis area-id 49.0002')
    vsrs[0].send_cli_command('/configure router isis area-id 49.0003')
    vsrs[0].send_cli_command('/configure router isis area-id 49.0004')
    vsrs[0].send_cli_command('admin display-config | match area-id')
    vsrs[0].send_cli_command('/configure router isis no area-id 49.0002')
    vsrs[0].send_cli_command('/configure router isis no area-id 49.0003')
    vsrs[0].send_cli_command('/configure router isis no area-id 49.0004')
    vsrs[0].send_cli_command('admin display-config | match area-id')
    vsrs[0].shutdown_log_98()
    vsrs[0].no_shutdown_log_98()
    vsrs[0].close()
    vsrs[0].send_cli_command('admin display-config | match area-id')

    results.append('PASS')
    framelog('STEP 2: No shutdown SRHm LTE ports\n' + 'step3: whatever is \n' +
             ' step4: good stuff\n  ' + '   step5: the end')
    framelog('STEP 2: No shutdown SRHm LTE ports', '*')
    xx = vsrs[0].cliexe('show port')
    yy = vsrs[0].cliexe('admin display-config')
    vsrs[0].connect()
    vsrs[0].close()
    vsrs[0].send_cli_command('admin display-config | match area-id')
    vsrs[0].send_cli_command('show port')

    return results

    framelog('STEP 2: No shutdown SRHm LTE ports', '*')
    for sr in sarhms:
        sr.cellif.noshutdown()

    framelog('STEP 3: Verify cellular-interfaces info', '*')
    ta_verify(nodes=sarhms, save=True)

    for sr in sarhms7475:
        if not hasattr(sr, 'lted'):
            mylog.error('%s failed to get LTE data')
            results.append(False)
            continue
        # verify LTE port status on 7475 SARHms
        check = True
        srpt = (sr.name, sr.cellif.port)
        if sr.lted['stat'] != 'up':
            mylog.error('%s %s NOT up' % srpt)
            check = False
        if sr.lted['band'] != '125':
            mylog.error('%s %s band NOT 125' % srpt)
            check = False
        if sr.lted['pdn'] != 'connected':
            mylog.error('%s %s PDN NOT connected' % srpt)
            check = False
        if sr.lted['network'] != 'registered-home':
            mylog.error('%s %s network NOT registered-home' % srpt)
            check = False

        if check: mylog.info('%s %s in good state' % srpt)
        results.append(check)

    for sr in sarhms7455:
        if not hasattr(sr, 'lted'):
            mylog.error('%s failed to get LTE data')
            results.append(False)
            continue
        # verify LTE port status on 7455 SARHms
        check = True
        srpt = (sr.name, sr.cellif.port)
        if sr.lted['stat'] != 'up':
            mylog.error('%s %s NOT up' % srpt)
            check = False
        if sr.lted['band'] != '8':
            mylog.error('%s %s band NOT 8' % srpt)
            check = False
        if sr.lted['pdn'] != 'connected':
            mylog.error('%s %s PDN NOT connected' % srpt)
            check = False
        if sr.lted['network'] != 'registered-home':
            mylog.error('%s %s network NOT registered-home' % srpt)
            check = False

        if check: mylog.info('%s %s in good state' % srpt)
        results.append(check)

    for sr in vsrs:
        txt = sr.cliexe('show router bgp summary')
        if txt == 'ERROR':
            results.append(False)
            continue
        # parse bgp stats and verify up
        check = True
        bgpd = utils.parse_show_bgp(txt)
        if bgpd['operState'] == "Up":
            mylog.info('%s BGP Up. Good!' % sr.name)
        else:
            mylog.error('%s BGP NOT Up' % sr.name)
            check = False
        results.append(check)

    return [ppf(results)]
Пример #12
0
def mobility_test():
    results = list()

    ta1 = '0032'
    ta2 = '0001'
    ta3 = '000a'
    sarhmG1 = utils.find_nodes(_tbd.node_dict, ta1, attr='area_code')
    #sarhmG2=utils.find_nodes(_tbd.node_dict,ta2,attr='area_code')
    #sarhms=utils.find_nodes(_tbd.node_dict,'_SARHm')
    #for dev in sarhmG1: dev.clear_console()
    #for dev in sarhmG1: dev.connect()

    rfsim1a = _tbd.rfsim1a
    # initialize rfsim1A
    framelog('STEP 0: Force group1 UEs to attach to cell-1')
    rfsim1a.set_rssi(mobiles=3, cells=1, rssi=0)
    rfsim1a.set_rssi(mobiles=3, cells=234, rssi=127)
    utils.poll(ta_verify, nodes=sarhmG1, log=False)

    # open cell-4 RF (TA=0001)
    framelog('STEP 1: Turn on cell-4 RF (TA=0001)')
    rfsim1a.set_rssi(mobiles=3, cells=4, rssi=0)

    # increase rssi and check G1-UE status
    for i in range(2, 6):
        rssi = i * 10
        framelog('STEP %s: Increase cell-1 RF attenuation to %s' % (i, rssi),
                 '*')
        rfsim1a.set_rssi(mobiles=3, cells=1, rssi=rssi)

        framelog('STEP %s.1: Check UE switch to cell-4 TA' % i, '*')
        ta_verify(nodes=sarhmG1, log=False)

    # check TA switched
    if not ta_verify(nodes=sarhmG1, ta=ta2, log=False):
        results.append(False)

    framelog('STEP %s: Turn off cell-4 RF' % (i + 1), '*')
    rfsim1a.set_rssi(mobiles=3, cells=1, rssi=0)
    rfsim1a.set_rssi(mobiles=3, cells=234, rssi=127)

    framelog('STEP %s: check UE switch back to cell-1 TA' % (i + 1), '*')
    if not utils.poll(ta_verify, nodes=sarhmG1, ta=ta1, log=False):
        results.append(False)

    return [ppf(results)]
Пример #13
0
    # test backup via ftp and netconf
    for nd in tb:
        nd.backup_ftp()
        nd.backup_xml()
    bkdir = tb.bkup_dir
    mylog.info('Testbed backup: %s' % bkdir)
    resultd['backup_case'] = 'PASS'
    #mylog.info('JSON result: %s' % json.dumps(resultd))
    #utils.log2html(logfile, logid, bkdir)
    #sys.exit(0)

    # test port shut and noshut
    for opt in ['ssh', 'snmp', 'netconf']:
        for nd in tb:
            utils.framelog(">%s< %s switch to Classic" % (opt, nd.sysname))
            for pt in nd:
                pt.shutdown(opt=opt)
                pt.noshutdown(opt=opt)
                time.sleep(2)
                nd.cliexe('show port | match %s' % pt.port)

            utils.framelog(">%s< %s switch to MD-CLI" % (opt, nd.sysname))
            for pt in nd:
                pt.shutdown(opt=opt)
                pt.noshutdown(opt=opt)
                time.sleep(2)
                nd.cliexe('show port | match %s' % pt.port)

    resultd['shut/noshut port'] = 'PASS'
    mylog.info('JSON result: %s' % json.dumps(resultd))