0


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

双击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)

'''


本文转载自: https://blog.csdn.net/m0_73462935/article/details/136407130
版权归原作者 2802497306 所有, 如有侵权,请联系我们删除。

“手机多模块反复重启压力测试脚本”的评论:

还没有评论