コード例 #1
0
def T_01_scanAllCode_A(product):
    u'扫码条码并写入MAC-扫码单板、整机条码分配MAC并写入'
    barCode1 = askForSomething(u'扫描条码', u'请扫描RSDB0单板条码', autoCommit=False)
    __checkManualFinished(barCode1)
    barCode3 = askForSomething(u'扫描条码', u'请扫描整机条码', autoCommit=False)
    while not __checkBarCodeAll(barCode3):
        barCode3 = askForSomething(u"扫描条码",
                                   u"整机条码扫描错误,请重新扫描",
                                   autoCommit=False)
    product.setTestingProductIdCode(barCode3)
    product.setTestingSuiteBarCode(barCode1)
    with ServerBusiness(testflow=True) as sb:
        getMac = sb.getBindingCode(productName=u"RD50C_RSU",
                                   idCode=barCode3,
                                   bindingCodeName=u"MAC")
        if getMac is not None and getMac != "":
            mac = getMac
        else:
            mac = serialCode(PARAM["macName"])
            if int(mac, 16) > int(PARAM["macMax"], 16):
                raise AbortTestException(message=u"MAC地址超出范围,没有可分配mac")
            product.addBindingCode(u"MAC", mac)

        getMac2 = sb.getBindingCode(productName=u"RD50C_RSU",
                                    idCode=barCode3,
                                    bindingCodeName=u"MAC2")
        if getMac2 is not None and getMac2 != "":
            mac2 = getMac2
        else:
            mac2 = serialCode(PARAM["macName"])
            if int(mac2, 16) > int(PARAM["macMax"], 16):
                raise AbortTestException(message=u"MAC地址超出范围,没有可分配mac")
            product.addBindingCode(u"MAC2", mac2)

    for i in range(10):
        pingResult = pingIPOpen(PARAM["defaultNetOneIp"])
        if pingResult == "ok":
            break
        time.sleep(5)
    else:
        raise TestItemFailException(failWeight=10, message=u"连接失败有可能是网口通信问题")
    macoffset = 0x46
    myWriteMac(macoffset, mac)
    macstrRead = myReadMac(macoffset)

    macoffset2 = 0x40
    myWriteMac(macoffset2, mac2)
    macstrRead2 = myReadMac(macoffset2)

    if macstrRead.upper() == mac and macstrRead2.upper() == mac2:
        return {
            u"单板条码": barCode1,
            u"整机条码": barCode3,
            u"MAC1地址": mac,
            u"MAC2地址": mac2
        }
    else:
        TestItemFailException(failWeight=10, message=u"写入与分配mac不一致,写入mac失败")
コード例 #2
0
def T_13_setMac_A(product):
    u"设置MAC地址-设置初始MAC地址"
    global CURRENT_TESTING_READER, TC
    ret = CURRENT_TESTING_READER.readMacAddr()
    nowMac = binascii.hexlify(ret)

    with ServerBusiness(testflow=True) as sb:
        shouldMac = sb.getBindingCode(productName=u"KC-RD40-M",
                                      idCode=product.getTestingProductIdCode(),
                                      bindingCodeName=u"MAC")
    if shouldMac != "":
        if shouldMac == nowMac:
            uiLog(u"已分配过MAC地址")
            return {u"MAC地址": nowMac}
        else:
            uiLog(u"重写MAC地址:" + shouldMac)
            mac_addr = binascii.unhexlify(shouldMac)
            CURRENT_TESTING_READER.setMacAddr(mac_addr)
            ret = CURRENT_TESTING_READER.readMacAddr()
            TC.assertEqual(ret, mac_addr)
            product.addBindingCode(u"MAC", shouldMac)
            return {u"MAC地址": shouldMac}
    else:
        mac = serialCode("rd40.mac")
        uiLog(u"分配新的MAC地址:" + mac)
        mac_addr = binascii.unhexlify(mac)
        CURRENT_TESTING_READER.setMacAddr(mac_addr)
        ret = CURRENT_TESTING_READER.readMacAddr()
        TC.assertEqual(ret, mac_addr)
        product.addBindingCode(u"MAC", mac)
        return {u"MAC地址": mac}
コード例 #3
0
def T_03_allocMac_A(product):
    u"分配MAC地址-读取MAC地址,如果不存在,分配新的,并写入出厂信息"
    sc = __getObuSerial(product.productSlot)
    r = sc.sendAndGet("D-ReadFlashPara 0x02 0x00 0x10").strip()
    if not r.startswith("D-ReadFlashOK"):
        raise AbortTestException(message=u"读取OBU的MAC地址失败")
    obuFlash = util.cmdFormatToHexStr(r[14:])
    obuid = obuFlash[8:16]
    uiLog(u"读取到OBUFlash:" + obuFlash)

    initFactoryInfo = obuFlash[16:]
    # initFactoryInfo = SP("gs11.test.initFactoryInfo","0109200100010000",paramType=str)    #01(显示模式)09 20 01 00(软件版本号)01 00 00(硬件版本号);

    if not obuid.startswith(PARAM["macPrefix"]):
        obuid = serialCode("gs11sh.mac")  #分配新的MAC地址(obuid)
        product.setTestingProductIdCode(obuid)
        uiLog(u"分配新的OBUID:%s" % obuid)
    else:
        uiLog(u"OBUID已存在,原标识:%s" % obuid)
        product.setTestingProductIdCode(obuid)

    targetFlash = "55555555" + obuid.lower() + initFactoryInfo
    r = sc.sendAndGet(request="D-WriteFlashPara 0x11 0x00 " +
                      util.hexStrToSerialCmdFormat(targetFlash))
    if not r.startswith("D-WriteFlashOK"):
        raise AbortTestException(message=u"写入OBUID及出厂信息失败")

    r = sc.sendAndGet("D-ReadFlashPara 0x02 0x00 0x10").strip()
    if not r.startswith("D-ReadFlashOK"):
        raise AbortTestException(message=u"读取OBU的MAC地址失败")
    obuFlash = util.cmdFormatToHexStr(r[14:])
    if obuFlash != targetFlash:
        raise AbortTestException(message=u"写入OBU灵敏度信息失败")

    return {"OBUID": obuid, u"出厂信息": initFactoryInfo}
コード例 #4
0
def T_02_updateMac_A(product):
    u'''更新MAC地址-获取新的MAC地址并BSL写入'''
    manulCheck(u"操作提示", u"请连接整机和工装板的U口线,然后点击确定", "ok")
    if SESSION["testor"] != u"单机":
        obuid = serialCode("mac")
    else:
        obuid = ""
        while re.match("^([0-9]|[A-F]|[a-f]){8}$", obuid) is None:
            obuid = askForSomething(u"MAC地址",
                                    u"请输入MAC地址",
                                    autoCommit=False,
                                    defaultValue="24")

    uiLog(u"分配测试产品标识:" + obuid)

    sc = __askForPlateDeviceCom()
    product.setTestingProductIdCode(obuid)
    try:
        sc.startBslWriting(passwordFile)
        uiLog(u"开始写入MAC地址")
        sc.save_obu_id(__toBytesarray(obuid))
    finally:
        sc.finishBslWritten()
    time.sleep(1)
    sc.clearSerialBuffer()
コード例 #5
0
def T_02_allotCpcId_A(product):
    u"分配CPCID-分配新的CPCID"
    # 检查MAC是否已经对应过CPCID
    with ServerBusiness() as sb:
        currentCpcIdOnServer = sb.getBindingCode(productName=u"CPC卡片",idCode=product.param["mac"],bindingCodeName=u"CPCID")
    if currentCpcIdOnServer is not None and currentCpcIdOnServer!="":
        if currentCpcIdOnServer == product.param["currentCpcId"]:  # CPCID完全相同,属于复测,直接判为成功即可
            product.param["targetCpcId"] = str(currentCpcIdOnServer)
            product.param["retest"] = True
        else:
            uiLog(u"当前卡片的CPCID:%s,与数据库中记录不符,重新刷写成:%s"%(product.param["currentCpcId"],currentCpcIdOnServer))
            product.param["retest"] = False
            product.param["targetCpcId"] = str(currentCpcIdOnServer)
    else:
        uiLog(u"卡片没有刷写过CPCID,分配新的CPCID")

        # 判断是补卡流程,还是新生产流程。看cpcIdSerialName参数,如果是文件名,说明是补卡;否则是正常ID
        if "\\" not in PARAM["cpcIdSerialName"]:    #从服务端分配,正常生产
            targetCpcId = serialCode(PARAM["cpcIdSerialName"])
            if targetCpcId > PARAM["endCpcId"]: # 产量已超
                retrieveSerialCode(PARAM["cpcIdSerialName"],targetCpcId )
                raise AbortTestException(u"CPCID已超过范围,产量已完成")
        else:   #从补卡文件中获取,补卡
            targetCpcId = COMP_SERIAL.fetchCpcSerialFromFile()
            if targetCpcId == "FF"*8:   #补卡完成
                raise AbortTestException(u"补卡全部完成,本片忽略")

        uiLog(u"分配新的CPCID:%s"%targetCpcId)
        product.param["retest"] = False
        product.param["targetCpcId"] = str(targetCpcId)
コード例 #6
0
def T_01_initFactorySetting_A(product):
    u'''出厂信息写入-出厂信息写入(包括MAC地址,唤醒灵敏度参数)'''
    mac = serialCode("mac")
    barCode = askForSomething(u"扫描条码", u"请扫描条码", autoCommit=False)
    product.setTestingSuiteBarCode(barCode)
    product.setTestingProductIdCode(mac)
    time.sleep(1)
    return {"扫描条码结果": barCode, "写入MAC地址": mac}
コード例 #7
0
def __initFactorySetting(product, barCode):
    '''初始化出厂信息,扫描条码根据自动/手动获取后传入这里'''
    uiLog(u'单板条码扫描结果:' + barCode)
    product.setTestingSuiteBarCode(barCode)
    if SESSION["testor"] != u"单机":
        #读取旧的MAC地址,如果存在,使用之;否则分配新的
        obuid = __readOldMac()
        if obuid == 'FFFFFFFF' or re.match("^24[0-9|A-F]{6}$", obuid) == None:
            obuid = serialCode("mac")  #分配新的MAC地址(obuid)
            uiLog(u"分配测试产品标识:" + obuid)
        else:
            uiLog(u"单板%s存在旧标识:%s" % (barCode, obuid))
    else:
        obuid = "FFFFFFFF"
    product.setTestingProductIdCode(obuid)

    magicWord = "55555555"
    displayDirect = SP("gs10.initParam.displayDirect", "00", str)  #显示方向
    softwareVersion = SP("gs10.initParam.softwareVersion", "01200100",
                         str)  #软件版本号
    hardwareVersion = SP("gs10.initParam.hardwareVersion", "010000",
                         str)  #硬件版本号

    initWankenSensi_high_grade = SP('gs10.initWanken.high.grade', "03",
                                    str)  #高灵敏度-grade
    initWankenSensi_high_level = SP('gs10.initWanken.high.level', "0E",
                                    str)  #高灵敏度-level
    initWankenSensi_low_grade = SP('gs10.initWanken.low.grade', "03",
                                   str)  #低灵敏度-grade
    initWankenSensi_low_level = SP('gs10.initWanken.low.level', "0E",
                                   str)  #低灵敏度-level
    wakeupMode = SP("gs10.initParam.wakeupMode", "04", str)  #唤醒模式
    amIndex = SP("gs10.initParam.amIndex", "00", str)  #AmIndex
    transPower = SP("gs10.initParam.transPower", "02", str)  #发射功率
    txFilter = SP("gs10.initParam.txFilter", "06", str)  #TxFilter

    CONFIG_BUILD_INFO = "".join(
        (magicWord, obuid, displayDirect, softwareVersion, hardwareVersion))
    CONFIG_RF_PARA = "".join(
        (magicWord, initWankenSensi_high_grade, initWankenSensi_high_level,
         initWankenSensi_low_grade, initWankenSensi_low_level, wakeupMode,
         amIndex, transPower, txFilter))

    sc = __askForPlateDeviceCom()

    passwordFile = os.path.dirname(
        os.path.abspath(__file__)) + os.sep + "versions\\obu-vat.txt"
    try:
        sc.startBslWriting(passwordFile)
        uiLog(u"开始写入CONFIG_BUILD_INFO,值:%s" % CONFIG_BUILD_INFO)
        sc.save_CONFIG_BUILD_INFO(__toBytesarray(CONFIG_BUILD_INFO))
        uiLog(u"开始写入CONFIG_RF_PARA,值:%s" % CONFIG_RF_PARA)
        sc.save_CONFIG_RF_PARA(__toBytesarray(CONFIG_RF_PARA))
    finally:
        sc.finishBslWritten()
    time.sleep(1)
    sc.clearSerialBuffer()
コード例 #8
0
def _T_05_carving_A(product):
    u"卡面镭雕-将CPC ID镭雕到卡面"
    carvingCode = serialCode("carvingCode")
    print "5"
    product.setTestingSuiteBarCode(carvingCode)
    __getLaserCaving().toCarveCode(carvingCode)
    try:
        autoCloseAsynMessage(u"操作提示(提示框会自动关闭)",u"当前镭雕号:%s,请踩下踏板进行镭雕"%carvingCode,
                                 lambda:__getLaserCaving().carved()
                                ,TestItemFailException(failWeight = 10,message = u'镭雕机未响应'))
    except TestItemFailException,e:
        __getLaserCaving().clearCarveCode()
        raise e
コード例 #9
0
def performTestThread():
    global totalProductCount
    with ServerBusiness() as sb:
        while True:
            startTime = time.time()
            idCode = serialCode("mac")
            sb.uploadTestReport(generateMockReport(idCode, 1))
            time.sleep(3.5)
            sb.uploadTestReport(generateMockReport(idCode, 2))
            time.sleep(3.5)
            sb.uploadTestReport(generateMockReport(idCode, 3))
            totalProductCount = totalProductCount + 1
            time.sleep(3.5)
            endTime = time.time()
            print u'完成一个,平均交互耗时:%f秒' % ((endTime - startTime - 10.5) / 3)
コード例 #10
0
def T_01_inventoryAndGetSys_A(product):
    u"卡片唤醒-唤醒卡片并读取CPC-ID等系统信息,并验证MAC"
    rsu = __getRsu()
    rsu.cpcHfActive()
    cpcSysInfo = rsu.cpcHFReadSysInfo()
    cpcId = cpcSysInfo["cpcId"]
    mac = rsu.cpcReadMac()
    uiLog(u"读取到MAC:%s,当前(临时)CPCID:%s" % (mac, cpcId))

    if mac.upper().startswith(PARAM["macPrefix"]):  #MAC前缀正确,不需要补写MAC
        product.param["retest"] = True
        product.setTestingProductIdCode(mac)
        product.param["targetMac"] = mac
    else:
        product.param["retest"] = False
        product.param["targetMac"] = serialCode("cpc.mac")
        uiLog(u"分配新MAC:%s" % product.param["targetMac"])

    product.param["cpcId"] = cpcId
    return cpcSysInfo
コード例 #11
0
def T_06_setDeviceSn_A(product):
    u"分配设备编号-自动分配全局唯一的设备编号"
    global CURRENT_TESTING_READER, TC
    ret = CURRENT_TESTING_READER.readDeviceSn()
    if not ret.startswith("FFFF"):
        uiLog(u"设备编号已分配:" + ret)
        product.setTestingProductIdCode(ret)
        return {u"设备编号": ret}
    else:
        deviceSn = serialCode("rd40.deviceSn")
        uiLog(u"分配新的设备编号:" + deviceSn)
        CURRENT_TESTING_READER.setDeviceSn(deviceSn)
        ret = CURRENT_TESTING_READER.readDeviceSn()
        TC.assertEqual(ret, deviceSn, u"DeviceSN读取验证失败")
        uiLog(u"设备编号写入DeviceSn成功")
        CURRENT_TESTING_READER.setAppDeviceId(deviceSn)
        ret = CURRENT_TESTING_READER.readAppDeviceId()
        TC.assertEqual(ret, deviceSn, u"AppDeviceId读取验证失败")
        uiLog(u"设备编号写入AppDeviceId成功")
        product.setTestingProductIdCode(ret)
        return {u"设备编号": ret}
コード例 #12
0
def T_01_scanCode_A(product):
    u'扫码条码-扫描条码'
    barCode1 = askForSomething(u'扫描条码', u'请扫描RSDB5数字单板条码', autoCommit=False)
    __checkRSDB5Finished(barCode1)
    barCode2 = askForSomething(u'扫描条码', u'请扫描RSRB4射频单板条码', autoCommit=False)
    __checkRSRB4Finished(barCode2)
    barCode3 = askForSomething(u'扫描条码', u'请扫描整机条码', autoCommit=False)
    while not __checkBarCode(barCode3):
        barCode3 = askForSomething(u"扫描条码",
                                   u"整机条码扫描错误,请重新扫描",
                                   autoCommit=False)

    product.setTestingProductIdCode(barCode3)
    product.setTestingSuiteBarCode(barCode1)

    with ServerBusiness(testflow=True) as sb:
        getMac = sb.getBindingCode(productName=u"RD52_RSU",
                                   idCode=barCode3,
                                   bindingCodeName=u"MAC")
        if getMac is not None and getMac != "":
            mac = getMac
        else:
            mac = serialCode(PARAM["macName"])
            if int(mac, 16) > int(PARAM["macMax"], 16):
                raise AbortTestException(message=u"MAC地址超出范围,没有可分配mac")
            product.addBindingCode(u"MAC", mac)

    # mac = serialCode(PARAM["macName"])
    # if int(mac, 16) > int(PARAM["macMax"], 16):
    #     raise AbortTestException(message=u"MAC地址超出范围,没有可分配mac")
    # product.addBindingCode(u"MAC", mac)

    return {
        u"RSDB5数字单板条码": barCode1,
        u"RSRB4射频单板条码": barCode2,
        u'整机条码': barCode3,
        u"MAC地址": mac
    }
コード例 #13
0
def T_04_initDeviceId_A(product):
    u'''分配设备标识-分配唯一的设备标识并写入设备'''
    global usbTestor
    try:
        usbTestor.setUp()
        oriDeviceSn = testCases.GS25.readDeviceSn()[0]
        deviceSn = None
        if oriDeviceSn == "ffffffffff":
            if SESSION["testor"] == u"单机":
                deviceSn = "0000000001"
                uiLog(u"因单机运行而无法分配设备序列号,写入测试值:" + deviceSn)
            else:
                deviceSn = serialCode("gs25DeviceSn")  #分配新标识
            usbTestor.test_writeDeviceSn(deviceSn)
        else:
            uiLog(u"存在原序列号:" + oriDeviceSn)
            deviceSn = oriDeviceSn
        product.setTestingProductIdCode(deviceSn)
        return {u"设备序列号": deviceSn}
    except Exception, e:
        print e
        raise TestItemFailException(failWeight=10,
                                    message=u"USB通信失败 " + str(e))
コード例 #14
0
def T_04_allotMac_A(product):
    u"分配MAC地址-从服务统一分配MAC"
    # 读MAC,检查之
    board = __downloadBoard()
    info40000, info40040, info40080 = board.readInfo(product.productSlot)
    board.activeEsam(product.productSlot)
    targetMac = board.readMacFromEsam(product.productSlot, chooseDf01=True)

    mac = None
    # 检查MAC是否已经写过,如果写过,就不用分配了
    if info40000[:8] == "55555555":
        mac = info40000[8:16]
        if mac.upper().startswith(
                PARAM["macPrefix"]) and targetMac.upper() == mac.upper():
            uiLog(u"产品已测试过,原MAC:%s" % mac)
            product.param["retest"] = True
        else:
            mac = None
            product.param["retest"] = False

    if mac is None:
        mac = serialCode("cpc.mac")
        uiLog(u"new mac:%s" % mac)
        if mac > PARAM["endMac"]:
            global shouldNotRun
            shouldNotRun = True
            retrieveSerialCode("cpc.mac", mac)
            raise AbortTestException(u"MAC已超过范围,产量已完成")
        uiLog(u"分配新MAC:%s" % mac)
        product.param["retest"] = False

    mac = mac.upper()
    product.param["mac"] = mac
    product.setTestingProductIdCode(mac)
    product.addBindingCode("MAC", mac)
    return {"mac": mac}
コード例 #15
0
ファイル: board.py プロジェクト: kingdomjc/RSU_production_VAT
def T_03_initFactorySetting_A(product):
    u'''出厂信息写入-写入MAC地址,唤醒灵敏度参数等,通过ICP方式写入并自动判断信息一致'''
    #读取旧的信息内容
    magicWord = "55555555"
    try:
        uiLog(u"切换至NuLink模式")
        __getIoBoard().switchToNuLink()
        nul = __getNuLink()
        infos = None
        try:
            infos = nul.readInfo()
            obuid = infos[8:16]
            superUiLog(u"单板信息区内容:" + infos)
            if infos.startswith(
                    magicWord) and obuid != "FFFFFFFF":  #有魔术字,说明出场信息已经写过了
                uiLog(u"出厂信息已写入,原标识:%s" % obuid)
                product.setTestingProductIdCode(obuid)
                uiLog(u"复位芯片...")
                nul.resetChip()
                return {
                    "OBUID": obuid,
                    "原出厂信息区": infos[:36] + "," + infos[128:200]
                }
        except TestItemFailException, e:
            #如果读出失败,那么也判定为需要写
            uiLog(u"区域读取失败,开始写入出厂信息")
        obuid = serialCode("mac")  #分配新的MAC地址(obuid)
        displayDirect = SP("gs11.initParam.displayDirect", "00", str)  #显示方向

        softwareVerionFile = SP("gs11.vatVersion.filename",
                                "GS11-VAT-09.00.00.version", str)
        softwareVersion = "".join(
            softwareVerionFile.split("-")[2].split(".")[:3]) + "00"
        hardwareVersion = SP("gs11.initParam.hardwareVersion", "010000",
                             str)  #硬件版本号

        initWankenSensi_high_grade = SP('gs11.initWanken.high.grade', "03",
                                        str)  #高灵敏度-grade
        initWankenSensi_high_level = SP('gs11.initWanken.high.level', "0E",
                                        str)  #高灵敏度-level
        initWankenSensi_low_grade = SP('gs11.initWanken.low.grade', "03",
                                       str)  #低灵敏度-grade
        initWankenSensi_low_level = SP('gs11.initWanken.low.level', "0E",
                                       str)  #低灵敏度-level
        wakeupMode = SP("gs11.initParam.wakeupMode", "04", str)  #唤醒模式
        amIndex = SP("gs11.initParam.amIndex", "00", str)  #AmIndex
        transPower = SP("gs11.initParam.transPower", "02", str)  #发射功率
        txFilter = SP("gs11.initParam.txFilter", "06", str)  #TxFilter
        sensitivity = SP("gs11.initParam.sensitivity", "00", str)  #使用灵敏度

        CONFIG_BUILD_INFO = "".join((magicWord, obuid, displayDirect,
                                     softwareVersion, hardwareVersion))
        CONFIG_RF_PARA = "".join(
            (magicWord, initWankenSensi_high_grade, initWankenSensi_high_level,
             initWankenSensi_low_grade, initWankenSensi_low_level, wakeupMode,
             amIndex, transPower, txFilter, sensitivity))
        uiLog(u"初始化config区配置")
        nul.initCfg()
        nul.writeToInfo(CONFIG_BUILD_INFO, CONFIG_RF_PARA)
        uiLog(u"分配新的OBUID:%s" % obuid)
        product.setTestingProductIdCode(obuid)
        uiLog(u"复位芯片...")
        nul.resetChip()
        return {
            "OBUID": obuid,
            u"初始信息区": CONFIG_BUILD_INFO + "," + CONFIG_RF_PARA
        }