Пример #1
0
    def run(order, toruncases):
        # order.starttime=datetime.datetime.now().strftime('%Y-%m-%d_%H:%M:%S')
        print "\n---------------------------------The test order %s begins at %s-----------------------" % (
            order.orderid,
            order.starttime,
        )
        print "Thread %s is running\n" % threading.current_thread().name
        numangle = len(order.anglelist)
        for crcase in toruncases[:]:
            # print 'rem:',curorder.remainingcases,'total:',curorder.caselist
            active_status = TMS.getrunningstatus(order.orderid)
            if not active_status:
                print "The test order %s has been stop by the server"
                break
            match = re.search(r"^(\d{1,4})\s(\d+)", crcase)
            if not match:
                print "Not matched, the format of testcase is not correct, can not generate the tclfile"
                order.failedcases[crcase] = "The test case is not in database"
                # order.remainingcases.remove(crcase)

            else:
                # order.remainingcases.remove(crcase)
                order.passedcases.append(crcase)
                print match.group(1), match.group(2)
                if order.attenuationlist:
                    cur_case = iccase(match.group(1), match.group(2), order.conf_name, len(order.attenuationlist))
                else:
                    cur_case = iccase(match.group(1), match.group(2), order.conf_name)
                    # print order.clientIP
                if cur_case.isInited():
                    for curclient in order.clientlist:
                        print "curclient:", curclient

                        if ":" in curclient:
                            if cur_case.radio != "Dual":
                                print "The current case radio is different, skip this client-------------------\n"
                            else:
                                print "the Dual band test"
                                curclient_1 = curclient.split(":")[0]
                                curclient_2 = curclient.split(":")[1]
                                curclient_1info = order.clientIP[curclient_1]
                                curclient_2info = order.clientIP[curclient_2]
                                cur_case.clientID = curclient_1info["clientid"]
                                # cur_case.location=['A','B','C','D','E']
                                # curclient_1info['radio']=='2.4GHz':
                                cur_case.endpoint_2G["A"] = curclient_1info["A"]
                                # if order.testbed == 8:
                                cur_case.endpoint_2G["B"] = curclient_1info["B"]
                                cur_case.endpoint_2G["C"] = curclient_1info["C"]
                                cur_case.endpoint_2G["D"] = curclient_1info["D"]
                                cur_case.endpoint_2G["E"] = curclient_1info["E"]

                                cur_case.endpoint_5G["A"] = curclient_2info["A"]
                                # if order.testbed == 8:
                                cur_case.endpoint_5G["B"] = curclient_2info["B"]
                                cur_case.endpoint_5G["C"] = curclient_2info["C"]
                                cur_case.endpoint_5G["D"] = curclient_2info["D"]
                                cur_case.endpoint_5G["E"] = curclient_2info["E"]
                                cur_case.creatclonefile()

                                if numangle != 0:
                                    for iangle in range(numangle):
                                        # print order.anglelist
                                        cur_case.xangle = order.anglelist[iangle]

                                        print cur_case.xangle
                                        if order.turntableip:
                                            setangle_success = order.iturntable.setangle(cur_case.xangle)
                                        else:
                                            setangle_success = 1
                                        time.sleep(10)
                                        if not setangle_success:
                                            print " Failed to set the turntable angle, the system exit"
                                            break

                                            # print 'order.client:',order.client
                                        asucess = cur_case.go(curclient, order.client_location, order.attenuationlist)
                                        if not asucess:
                                            order.failedcasecount += 1
                                            print "failed once", order.failedcasecount

                                        else:
                                            order.passedcasecount += 1
                                            print "passed", order.passedcasecount
                                        cur_case.uploadresult(order, dut, tms_server)
                                        # print cur_case.result_pdf,'\n',cur_case.result_csv,'\n',cur_case.result_tst
                                        cur_case.dealresult(order.backupdir, cur_case.xangle)
                                        order.errorlog += " end :%s    \n" % datetime.datetime.now().strftime(
                                            "%H:%M:%S"
                                        )
                                        atestcasestatus = "%s_%s_%s" % (
                                            order.passedcasecount,
                                            order.failedcasecount,
                                            order.totalcasecount,
                                        )
                                        # atestcasestatus='%s_%s_%s'%(len(order.passedcases),len(order.failedcases),order.totalcases-len(order.failedcases)-len(order.failedcases))
                                        TMS.updateprogress(
                                            (order.passedcasecount + order.failedcasecount)
                                            / float(order.totalcasecount)
                                            * 100,
                                            "------",
                                            order.errorlog,
                                            atestcasestatus,
                                            order.order_exec_id,
                                            1,
                                        )
                                        # for angleindex in range(order.xangle):
                                        # cur_case.xangle=ixchorder.iturntable.angle[angleindex]
                                        #

                                        # print " Failed to set the turntable angle, the system exit"
                                        # sys.exit(0)

                                else:
                                    print iangle, [0, 90, 180, 270][iangle]
                                    sys.exit(0)

                        else:

                            curclientinfo = order.clientIP[curclient]
                            if cur_case.radio != curclientinfo["radio"]:
                                print "The current case radio is different, skip this client-------------------\n"
                            else:
                                print "\n-----radio", cur_case.radio, curclientinfo["radio"], "clientID", curclientinfo[
                                    "clientid"
                                ], "\n clientIP", curclientinfo["A"], "------"
                                cur_case.clientID = curclientinfo["clientid"]
                                # if order.testbed ==9 or order.testbed==10:
                                # cur_case.location=['A','B','C','D','E']
                                # elif order.testbed ==8:
                                # cur_case.location=['A','B','C','D','E']
                                # else:
                                # print "wrong testbed"
                                # sys.exit(0)

                                if cur_case.radio == "2.4GHz":
                                    cur_case.endpoint_2G["A"] = curclientinfo["A"]
                                    # if order.testbed == 8:
                                    cur_case.endpoint_2G["B"] = curclientinfo["B"]
                                    cur_case.endpoint_2G["C"] = curclientinfo["C"]
                                    cur_case.endpoint_2G["D"] = curclientinfo["D"]
                                    cur_case.endpoint_2G["E"] = curclientinfo["E"]
                                elif cur_case.radio == "5GHz":
                                    # cur_case.endpoint_5G['base']='192.168.8.205'
                                    cur_case.endpoint_5G["A"] = curclientinfo["A"]
                                    # if order.testbed == 8:
                                    cur_case.endpoint_5G["B"] = curclientinfo["B"]
                                    cur_case.endpoint_5G["C"] = curclientinfo["C"]
                                    cur_case.endpoint_5G["D"] = curclientinfo["D"]
                                    cur_case.endpoint_5G["E"] = curclientinfo["E"]
                                else:
                                    print "not supported"
                                cur_case.creatclonefile()
                                if numangle != 0:
                                    for iangle in range(numangle):
                                        print "iangle", iangle
                                        cur_case.xangle = order.anglelist[iangle]
                                        if order.turntableip:
                                            setangle_success = order.iturntable.setangle(cur_case.xangle)
                                        else:
                                            setangle_success = 1
                                        time.sleep(10)
                                        if not setangle_success:
                                            print " Failed to set the turntable angle, the system exit"
                                            break

                                            # print 'order.client:',order.client
                                            # cur_case.go(curclient, order.client_location)
                                        print "\n-----debug:", curclient, order.client_location
                                        #'0',['0,1']
                                        asucess = cur_case.go(curclient, order.client_location, order.attenuationlist)
                                        if not asucess:
                                            order.failedcasecount += 1
                                            print "failed once", order.failedcasecount

                                        else:
                                            order.passedcasecount += 1
                                            print "passed", order.passedcasecount
                                        cur_case.uploadresult(order, dut, tms_server)
                                        # print cur_case.result_pdf,'\n',cur_case.result_csv,'\n',cur_case.result_tst
                                        cur_case.dealresult(order.backupdir, cur_case.xangle)
                                        # print fo.log
                                        # order.errorlog+=fo.log
                                        # print order.errorlog
                                        order.errorlog += " end :%s    \n" % datetime.datetime.now().strftime(
                                            "%H:%M:%S"
                                        )

                                        atestcasestatus = "%s_%s_%s" % (
                                            order.passedcasecount,
                                            order.failedcasecount,
                                            order.totalcasecount,
                                        )
                                        # atestcasestatus='%s_%s_%s'%(len(order.passedcases),len(order.failedcases),order.totalcases-len(order.failedcases)-len(order.failedcases))
                                        TMS.updateprogress(
                                            (order.passedcasecount + order.failedcasecount)
                                            / float(order.totalcasecount)
                                            * 100,
                                            "------",
                                            order.errorlog,
                                            atestcasestatus,
                                            order.order_exec_id,
                                            1,
                                        )
                                        # for angleindex in range(order.xangle):
                                        # cur_case.xangle=ixchorder.iturntable.angle[angleindex]
                                        #

                                        # print " Failed to set the turntable angle, the system exit"
                                        # sys.exit(0)

                                else:
                                    print iangle, [0, 90, 180, 270][iangle]
                                    sys.exit(0)

                                    # print ixchorder.iturntable[0]

                                    # print curclientinfo  case.location=['A','B','C','D','E'] case.clientID='2'

                                    # print 'curclient:',curclient,'radio',curclient,'clientID',curclientinfo['clientid'],'A:',curclientinfo['A'],'E:',curclientinfo['E']

                                    # case_i.dealresult(dut,'./tmpresult','./tmpresult')
                                    # case_i.uploadresult(testorder,dut,tms_server)
                    print "Failinfo", cur_case.Failinfo
                    if not cur_case.Failinfo:
                        print "pass"
                    else:
                        print "fail"
                else:
                    print "the case failed"