当前位置: 代码网 > 手机>品牌>手机系统 > 手机多模块反复重启压力测试脚本

手机多模块反复重启压力测试脚本

2024年08月02日 手机系统 我要评论
main.py是对template_lcd.py的封装(也能封装bat脚本),它能通过adb devices命令的输出来自动检测手机数量,将template_lcd.py中的xxxt替换为每个手机的真实序列号,并以template_lcd.py为模板,为每个手机产生一个以 序列号.py 或 序列号.bat 命名的专属脚本,所以,你可以在template_lcd.py中只考虑一个手机的情况,写对操作一个手机的操作逻辑。至于同时连接多个手机的情况,由main.py来完成。

双击main.py即可运行。如果有什么异常,窗口一闪而逝,可在cmd窗口下,输入main.py后回车,可以查看输出打印来debug
template_lcd.py 是写重启和查看节点的逻辑
main.py是对template_lcd.py的封装(也能封装bat脚本),它能通过adb   devices命令的输出来自动检测手机数量,将template_lcd.py中的xxxt替换为每个手机的真实序列号,并以template_lcd.py为模板,为每个手机产生一个以     序列号.py 或  序列号.bat    命名的专属脚本,所以,你可以在template_lcd.py中只考虑一个手机的情况,写对操作一个手机的操作逻辑。至于同时连接多个手机的情况,由main.py来完成。main.py会通过   os.system('start cmd /k xxx.suffix')弹一个cmd窗口执行

import time
import subprocess
import os
if 1:
    import os
    if os.name == "nt":
        os.system("")
        print("os.name=",os.name)
    print("\033[1;32m welcome! \033[0m")

def getdevlist1():
    devlist = []
    #connectfile = os.popen('type serialno_list.txt')
    connectfile = os.popen('adb devices')
    list1 = connectfile.readlines()
    #print(list1)
    #print(len(list1))
    #print(1,len(list1)-1)
    list2=list(list1[1:len(list1)-1])
    #print(list2)
    for i in range(len(list2)):
        #print(list1[i].find('\tdevice') )
        #print(list1[i].find('\tdevice') != -1)
        #if list1[i].find('\tdevice') != -1:
            #temp = list1[i].split('\t')
        temp = list2[i].split()
        #print(22,temp,temp[0],temp[1])
        devlist.append(temp[0])
    #print(11,devlist)
    return devlist


def create_file(file1,serialno):
    (name, suffix) = os.path.splitext(file1)
    #print("name=",name,"suffix=",suffix)
    with open(file1,"r") as f1:
        cmd1=f1.read()
    #print("before: \n",cmd1)
    cmd2=cmd1.replace("xxx",serialno)
    #print("after: \n",cmd2)
    with open(str(serialno)+suffix,"w") as f2:
        print(cmd2,file=f2)


def main(file2):
    (name, suffix) = os.path.splitext(file2)
    #detect_only_once=true
    detect_only_once=false
    ret=[]
    s=set(ret)
    t=0
    total=0
    while true:
        #ret=getdevlist1()
        #print("-"*8)
        #lst1=["431f92af"] #new
        #lst1=["431f92af","aa"] #new
    
        #with open("a.txt","r") as f1:
        #    lst1=f1.readlines()
        #for i in range(len(lst1)):
        #    lst1[i]=lst1[i][0:len(lst1[i])-1]
    
        #print("111")
        #time.sleep(3)
        lst1=getdevlist1()
        #print("222")
    
        s1=set(lst1)
        #print(ret,lst1)
        #print(s,s1,s1-s,s-s1)
        
        s2=s1-s
        #print(s-s1,(s-s1)!=set())
        #print(s2,s2!=set())
        if s2!=set():
            c=0
            print("")
            for i in s2:
                total+=1
                print(f"{c}. detect new devices: \033[33m {i} \033[0m,\033[32m {total} \033[0mdevices in total")
                create_file(file2,i)
                cmd='start cmd /k xxx'+suffix
                cmd1=cmd.replace("xxx",i)
                #print(cmd)
                #print(cmd1)
                #os.popen(cmd1)
                os.system(cmd1)
                #print("cmd1=",cmd1)
                c+=1
            s=s|s1
            #print(s,s1,s1-s,s-s1)
        t+=1
        if detect_only_once:
            break
            #exit()
        print(f"\r continuously detecting! \033[32m {t} \033[0m seconds ",end="")
        time.sleep(1)

if __name__=="__main__":
    main("template_lcd.py")
    #main("demo.py")
    #main("a.bat")

'''
import os
import time
import subprocess

#enable print with color
if 1:
    import os
    if os.name == "nt":
        os.system("")
        print("os.name=",os.name)
    print("\033[1;32m welcome! \033[0m")

def acquire_serialno_list():
    with os.popen("adb devices","r") as p:
        r=p.read()
        f1=open("serialno_list.txt","w")
        print(r,file=f1)
        f1.close()

    f1=open("serialno_list.txt","r")
    #print(f1.read())
    #print(f1.readlines())
    ret=f1.readlines()
    #print(ret)
    #print(type(ret))
    #print(len(ret))
    #print(ret[1:])
    len1=len(ret)-2
    #print(len1)
    #print(ret[1:len1])
    ret2=ret[1:len1]
    f1.close()
    return ret2


def all_devices_do_in_cmd_window2(file1):
    (name, suffix) = os.path.splitext(file1)
    print("name=",name,"suffix=",suffix)

    ret=acquire_serialno_list()
    counter=0
    #while(len(ret)>=0):
    while(len(ret)<=0):
        counter+=1
        #print("please keep \033[32m ss \033[0m device !")
        #print("\rcurrent %d devices,please at least 1 device ! waiting...%d seconds" % (len(ret),counter),end=" ")
        print("\rcurrent \033[31m %d  \033[0m devices,please at least 1 device ! waiting...%d seconds" % (len(ret),counter),end=" ")
        #os.system("ping -n 1 127.0.0.1 >nul")
        time.sleep(1)
        ret=acquire_serialno_list()
    print("")
    no_list=[]
    for i in ret:
        #print("mei hang shu ju: ",i)
        sp=i.split()
        #print("mei hang chai fen hou: ",sp)
        #print("no= ",sp[0])   
        no_list.append(sp[0])
    #print("no_list = ",no_list)
    #print("there are %d devices !" % len(ret))
    #print("there are   %d   devices ! the serialno are:" % len(no_list))
    print("there are \033[32m  %d   \033[0m devices! the serialno are:" % len(no_list))
    c=0
    for  i in no_list:
        print(c,".  ",i)
        c+=1
    c=0
    f3=open(name+"_do.bat","w")
    for i in no_list:
        print("---the %d  device---" % c)
        # zhe li gai xi tong ming ling 
        #os.system("ls %s" % (i))
        with open(file1,"r") as f1:
            cmd1=f1.read()
        print("before: \n",cmd1)
        cmd2=cmd1.replace("xxx",i)
        print("after: \n",cmd2)
        with open(str(i)+suffix,"w") as f2:
            print(cmd2,file=f2)
        #os.popen(cmd2)
        #subprocess.run(' {}'.format( cmd2), shell=true, capture_output=true,universal_newlines=true)
        s1 = 'start cmd /k "{}"'.format(str(i)+suffix) 
        #print('start cmd /k "{}"'.format(cmd2))
        print(s1)
        print(s1,file=f3)
        #ret=subprocess.run(' {}'.format( cmd2), shell=true, capture_output=true,universal_newlines=true)
        #print(cmd2)

        #os.popen("adb -s %s reboot autodloader" % i)
        #print("adb -s %s reboot autodloader" % i)
        print("---the %d  device---" % c)
        c+=1
    f3.close()
    os.startfile(name+"_do.bat")


all_devices_do_in_cmd_window2("template_lcd.py")
print('ab')
#all_devices_do_in_cmd_window2("tp_self-test.bat")
exit()
'''
 

import os
import re
import time
import subprocess

#enable print with color
if 1:
    import os
    if os.name == "nt":
        os.system("")
        print("os.name=",os.name)
    print("\033[1;32m welcome! \033[0m")

counter=0
setting={
        #"lcd":{"open":true,"version":"userdebug"},
        "lcd":{"open":true,"version":"pv"},
        #"tp":{"open":false,},
        "tp":{"open":true,},
        "finger":{"open":true,},
        "sensor":{"open":true,},
        }
d={"test_item":"error_count","lcd":0,"tp":0,"finger":0,"sensor":0}
version="pv"
#version="userdebug"
 
def clean_old_files():
    #checking if file exist or not
    list1=["xxx_lcd.txt",
           "xxx_tp.txt",
           "xxx_finger.txt",
           "xxx_sensor.txt"]
    for i in list1:
        #print(i)
        if(os.path.isfile(i)):
            os.remove(i)
            #printing the confirmation message of deletion
            #print(i,"deleted successfully")
            print("\033[32m {} deleted successfully \033[0m".format(i))
        else:
            #print(i,"does not exist")
            print("\033[32m {} does not exist \033[0m".format(i))


def clean_old_files2():
    #originfiles = {"template_lcd.py","main.py","readme.txt","b.py","a.py"}
    originfiles = {"template_lcd.py","main.py","readme.txt"}
    needdelete =  set(os.listdir(os.path.curdir))- originfiles
    #print(needdelete)
    for filename in needdelete:
       os.remove(filename)
       print("\033[32m {} deleted successfully \033[0m".format(filename))


def get_phone_time():
    cmdtask= subprocess.run(' {}'.format("adb -s xxx shell date"), shell=true, capture_output=true,universal_newlines=true)
    return cmdtask.stdout


def show_result():
    print("-"*32)
    for i in d:
        if d[i]=="error_count":
            print("|  \033[33m {0:^10} \t {1:^10} \033[0m  |".format(i,d[i]))
        elif d[i]==0:
            print("|  {0:^10} \t \033[32m {1:^10} \033[0m  |".format(i,d[i]))
        else:
            print("|  {0:^10} \t \033[31m {1:^10} \033[0m  |".format(i,d[i]))
    print("-"*32)


def perform_by_subprocess(item,cmd_list):
    filename="xxx_"+item+".txt"
    #print("filename=",filename)
    with open(filename,"a") as f1:
        print("counter=",counter," \t phone time=",get_phone_time(),file=f1)
        for i in cmd_list:
            cmdtask= subprocess.run(' {}'.format(i), shell=true, capture_output=true,universal_newlines=true)
            print(cmdtask.stdout,file=f1)
            print("\033[33m counter=",counter," ",item,": \033[0m ",i,"=",cmdtask.stdout,"\033[36m phone time=",get_phone_time(),"\033[0m")
    return cmdtask.stdout

def detect_connect():
    cmdtask= subprocess.run(' {}'.format("adb devices"), shell=true, capture_output=true,universal_newlines=true)
    #print(cmdtask.stdout)
    t=0
    while("xxx" not in cmdtask.stdout):
        t+=1
        print("\r \033[31m xxx not connect! \033[0m waiting...\033[32m %d \033[0m seconds" % t,end=" ")
        time.sleep(1)
        cmdtask= subprocess.run(' {}'.format("adb devices"), shell=true, capture_output=true,universal_newlines=true)
    print("")


def wait(wait_time):
    for i in range(wait_time):
        #print("\rwaiting ...{} seconds left  ".format(wait_time-i),end='')
        print("\rwaiting ...\033[33m {}\033[0m seconds left     ".format(wait_time-i),end='')
        time.sleep(1)
    print("\n")


def reboot():
    global counter
    while true:
        counter+=1
    ####################### lcd
        #open lcd test
        if setting["lcd"]["open"] :
            if setting["lcd"]["version"]=="pv":   
                cmds=[
                        "adb -s xxx shell charge_disable.sh",
                        "adb -s xxx shell enter_lpm.sh",
                        "adb -s xxx shell cat /proc/driver/lcd_id",
                        "adb -s xxx shell cat /proc/cmdline",
                        ]
            elif setting["lcd"]["version"]=="userdebug":
                cmds=[
                        "adb -s xxx shell cat /proc/driver/lcd_id",
                        "adb -s xxx shell cat /proc/cmdline",
                        ]            
            ret=perform_by_subprocess("lcd",cmds)
    
            #print("ret=",ret)
            #ret=""
            lcd_is_error="lcd_dummy" in ret or ret ==""
            #print("lcd_is_error=",lcd_is_error)
            if (lcd_is_error):
                d["lcd"]+=1
            ret2=re.search(r"lcd_name\s+",ret)
            #print("ret2=",ret2)
            if ret2!=none:
                print("\033[33m counter=",counter,"  lcd : \033[0m ",ret2.group(),"\033[36m phone time=",get_phone_time(),"\033[0m")
                with open("xxx_lcd.txt","a") as f1:
                    print(ret2.group(),"\n",file=f1)
    ####################### lcd
    
    ####################### tp
        if setting["tp"]["open"]:               
            cmds=[
                    "adb -s xxx shell tpdtest",
                    ]
            ret=perform_by_subprocess("tp",cmds)
            #time.sleep(8)
    ####################### tp
    
    ####################### finger
        if setting["finger"]["open"]:   
            cmds=[
                    'adb -s xxx shell "getprop | grep vendor.fingerprint.id"',
                    ]
            ret=perform_by_subprocess("finger",cmds)
    
            finger_is_error="unknown" in ret or ret==""
            #print("finger_is_error=",finger_is_error)
            if (finger_is_error):
                d["finger"]+=1
    ####################### finger
    
    ####################### sensor
        if setting["sensor"]["open"]:               
            cmds=[
                    'adb -s xxx shell "dumpsys sensorservice | grep accelerometer"',
                  'adb -s xxx shell "dumpsys sensorservice | grep proximity"',
                  ]
            ret=perform_by_subprocess("sensor",cmds)
    ####################### sensor 
    
        show_result()
    
        cmdtask = subprocess.run(' {}'.format("adb -s xxx shell reboot"), shell=true, capture_output=true,universal_newlines=true)
        wait(40)
    
        #cmdtask= subprocess.run(' {}'.format("adb -s xxx shell cat /proc/cmdline"), shell=true, capture_output=true,universal_newlines=true)
        #print(cmdtask.stdout)
        #wait(3)

        detect_connect()

        if setting["lcd"]["open"]:
            if setting["lcd"]["version"]=="pv":
                wait(20)
                #wait(3)
                cmdtask= subprocess.run(' {}'.format("adb -s xxx shell input keyevent 26"), shell=true, capture_output=true,universal_newlines=true)
                print("adb -s xxx shell input keyevent 26")
                wait(1110)
                #wait(3)

if __name__=="__main__":
    clean_old_files()
    #clean_old_files2()
    reboot()

'''
panel_list=['tongxingda',     
           'easyquick',        
           'skyworth']    
counter=0
#print(type(cmdtask1.stdout))
with open("xxx.txt","w") as f1:
    print("",file=f1)
while true:
    counter+=1
    cmdtask = subprocess.run(' {}'.format("adb -s xxx shell reboot"), shell=true, capture_output=true,universal_newlines=true)
    print(cmdtask.stdout)
    time.sleep(40)
    print("\033[31m lcd_is_error={} \033[0m".format(lcd_is_error))
        else:
            #print("\033[32m lcd_is_error={} \033[0m".format(lcd_is_error))
    #cmdtask= subprocess.run(' {}'.format("adb -s xxx shell cat /proc/driver/lcd_id"), shell=true, capture_output=true,universal_newlines=true)
    #print(cmdtask.stdout)
    #time.sleep(1)
            print("\033[31m finger_is_error={} \033[0m".format(finger_is_error))
        else:
            print("\033[32m finger_is_error={} \033[0m".format(finger_is_error))
    cmdtask1= subprocess.run(' {}'.format("adb -s xxx shell cat /proc/driver/lcd_id"), shell=true, capture_output=true,universal_newlines=true)
    print("the",counter,"times: adb shell cat /proc/driver/lcd_id=",cmdtask1.stdout)
    with open("xxx.txt","a") as f1:
        print(cmdtask.stdout,file=f1)
        if "lcd_name" in cmdtask.stdout:
            ret=re.search(r"lcd_name\s+",cmdtask.stdout)
            print("\033[33m the ",counter,"times, lcd: \033[0m ",ret.group())
            #print(ret)
            #print(ret.span())
    #print(type(cmdtask1.stdout))
    for i in panel_list:
        if (i in cmdtask1.stdout):
            print("the ",counter,"times  ok")
            break
    else:
        print("the ",counter,"times bad !")
        break
        with open("xxx_finger.txt","a") as f1:
            print("counter=",counter," \t phone time=",get_phone_time(),file=f1)
            cmdtask= subprocess.run(' {}'.format('adb -s xxx shell "getprop | grep vendor.fingerprint.id" '), shell=true, capture_output=true,universal_newlines=true)
            print(cmdtask.stdout,file=f1)
        print("\033[33m counter=",counter,"  finger: \033[0m ",'adb -s xxx shell "getprop | grep vendor.fingerprint.id"=',cmdtask.stdout,"\033[36m phone_time=",get_phone_time(),"\033[0m")

    #finger_is_error="fpc1553" in cmdtask.stdout

    #cmdtask = subprocess.run(' {}'.format("adb -s xxx shell reboot"), shell=true, capture_output=true,universal_newlines=true)
    #print(cmdtask.stdout)
    #print("adb -s xxx shell cat /proc/cmdline is done! sleeping 40 s")
    #time.sleep(40)
for i in d:
    #print(i,"\t",d[i])
    #print("%10s \t %10s" % (i,d[i]))
    print("{0:^10} \t {1:^10} ".format(i,d[i]))
#    if (lcd_is_error or finger_is_error):
#        #print("the ",counter,"times error!")
#        print("\033[31m the {} times error!\033[0m".format(counter))
#        #break
#    else:
#        #print("the ",counter,"times  ok")
#        print("\033[32m the {} times ok\033[0m".format(counter))
        with open("xxx_sensor.txt","a") as f1:
            print("counter=",counter," \t phone time=",get_phone_time(),file=f1)
            cmdtask= subprocess.run(' {}'.format('adb -s xxx shell "dumpsys sensorservice | grep accelerometer" '), shell=true, capture_output=true,universal_newlines=true)
            print(cmdtask.stdout,file=f1)
            print("\033[33m counter=",counter,"  sensor: \033[0m ",'adb -s xxx shell "dumpsys sensorservice | grep accelerometer"= ',cmdtask.stdout,"\033[36m phone_time=",get_phone_time(),"\033[0m")
            cmdtask= subprocess.run(' {}'.format('adb -s xxx shell "dumpsys sensorservice | grep proximity" '), shell=true, capture_output=true,universal_newlines=true)
            print(cmdtask.stdout,file=f1)
            print("\033[33m counter=",counter,"  sensor: \033[0m ",'adb -s xxx shell "dumpsys sensorservice | grep proximity"= ',cmdtask.stdout)
    cmdtask= subprocess.run(' {}'.format("adb -s xxx shell cat /proc/cmdline"), shell=true, capture_output=true,universal_newlines=true)
    print(cmdtask.stdout)
    print("adb -s xxx shell cat /proc/cmdline is done! sleeping 1 s")
    time.sleep(1)
#with open("xxx_lcd.txt","w") as f1:
#    print("",file=f1)
        #with open("xxx_lcd.txt","a") as f1:
        #    print("counter=",counter," \t phone time=",get_phone_time(),file=f1)

        #    cmdtask= subprocess.run(' {}'.format("adb -s xxx shell cat /proc/driver/lcd_id"), shell=true, capture_output=true,universal_newlines=true)
        #    print(cmdtask.stdout,file=f1)
        #    print("\033[33m counter=",counter,"  lcd: \033[0m ","adb -s xxx shell cat /proc/driver/lcd_id=",cmdtask.stdout,"\033[36m phone_time=",get_phone_time(),"\033[0m")

        #    cmdtask= subprocess.run(' {}'.format("adb -s xxx shell cat /proc/cmdline"), shell=true, capture_output=true,universal_newlines=true)
        #    print(cmdtask.stdout,file=f1)
        #    print("\033[33m counter=",counter,"  lcd: \033[0m ","adb -s xxx shell cat /proc/cmdline=",cmdtask.stdout)

        #    lcd_is_error="lcd_dummy" in cmdtask.stdout or cmdtask.stdout ==""
        #    #print("lcd_is_error=",lcd_is_error)
        #    if (lcd_is_error):
        #        d["lcd"]+=1
        #    ret=re.search(r"lcd_name\s+",cmdtask.stdout)
        #    #print("ret=",ret)
        #    if ret!=none:
        #        print("\033[33m counter=",counter,"  lcd: \033[0m ",ret.group())
        #        print(ret.group(),"\n",file=f1)

        #    cmdtask= subprocess.run(' {}'.format("adb -s xxx shell charge_disable.sh"), shell=true, capture_output=true,universal_newlines=true)
        #    #print(cmdtask.stdout,file=f1)
        #    print("\033[33m counter=",counter,"  lcd: \033[0m ","adb -s xxx shell charge_disable.sh=",cmdtask.stdout)
#        with open("xxx_tp.txt","a") as f1:
#            print("counter=",counter," \t phone time=",get_phone_time(),file=f1)
#            cmdtask= subprocess.run(' {}'.format('adb -s xxx shell tpdtest'), shell=true, capture_output=true,universal_newlines=true)
#            print(cmdtask.stdout,file=f1)
#        print("\033[33m counter=",counter,"  tp: \033[0m ","adb -s xxx shell tpdtest=",cmdtask.stdout,"\033[36m phone_time=",get_phone_time(),"\033[0m")
        #    cmdtask= subprocess.run(' {}'.format("adb -s xxx shell enter_lpm.sh"), shell=true, capture_output=true,universal_newlines=true)
        #    #print(cmdtask.stdout,file=f1)
        #    print("\033[33m counter=",counter,"  lcd: \033[0m ","adb -s xxx shell enter_lpm.sh=",cmdtask.stdout)
        print("\033[33m the ",counter,"times, tp: \033[0m "," adb -s xxx shell tpdtest=",cmdtask.stdout)
'''

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com