def report(app, sumTime):

    header = get_phome()

    worksheet1 = workbook.add_worksheet("性能监控")
    app["maxMen"] = BaseAnalysis.maxMen(BaseMonitor.men)
    app["avgMen"] = BaseAnalysis.avgMen(men=BaseMonitor.men,
                                        total=header["rom"])
    app["maxCpu"] = BaseAnalysis.maxCpu(BaseMonitor.cpu)
    app["avgCpu"] = BaseAnalysis.avgCpu(BaseMonitor.cpu)
    app["maxFps"] = BaseAnalysis.avgFps(BaseMonitor.fps)
    app["avgFps"] = BaseAnalysis.avgFps(BaseMonitor.fps)
    app["afterBattery"] = BaseMonitor.get_battery()
    _maxFlow = BaseAnalysis.maxFlow(BaseMonitor.flow)
    _avgFLow = BaseAnalysis.avgFlow(BaseMonitor.flow)
    app["maxFlowUp"] = _maxFlow[0]
    app["maxFlowDown"] = _maxFlow[1]
    app["avgFlowUp"] = _avgFLow[0]
    app["avgFlowDown"] = _avgFLow[1]
    header["time"] = sumTime
    header["net"] = app["net"]
    bo.monitor(worksheet=worksheet1, header=header, data=app)
    print("---monkey_log------")
    print(app["monkey_log"])
    get_error(log=app["monkey_log"])

    worksheet3 = workbook.add_worksheet("详细信息")
    app = {}
    app["cpu"] = BaseMonitor.cpu
    app["men"] = BaseMonitor.men
    app["flow"] = BaseMonitor.flow
    app["battery"] = BaseMonitor.battery
    app["fps"] = BaseMonitor.fps
    bo.analysis(worksheet3, app)
def start(device):
    devices = device["devices"]
    try:
        num = device["match_num"]
        app = {}
        mkdirInit(devices, app, num)
        # mc = BaseMonkeyConfig.monkeyConfig(PATH("./monkey.ini"))

        mc = BaseMonkeyConfig.monkeyConfig("./monkey.ini")
        # 打开想要的activity
        # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等
        # monkey开始测试
        if not os.path.exists('./monkey_log'):
            os.mkdir('./monkey_log')

        mc["log"] = PATH("./monkey_log") + "\\" + str(uuid.uuid4())
        mc["monkey_log"] = mc["log"] + "monkey.log"
        mc["cmd"] = mc['cmd'] + mc["monkey_log"]
        start_monkey(devices, "adb -s " + devices + " shell " + mc["cmd"],
                     mc["log"])
        time.sleep(1)
        starttime = datetime.datetime.now()
        pid = BaseMonitor.get_pid(mc["package_name"], devices)
        cpu_kel = BaseMonitor.get_cpu_kel(devices)
        beforeBattery = BaseMonitor.get_battery(devices)
        while True:
            with open(mc["monkey_log"], encoding='utf-8') as monkeylog:
                time.sleep(1)  # 每1秒采集检查一次
                BaseMonitor.cpu_rate(pid, cpu_kel, devices)
                BaseMonitor.get_men(mc["package_name"], devices)
                BaseMonitor.get_fps(mc["package_name"], devices)
                BaseMonitor.get_flow(pid, mc["net"], devices)
                BaseMonitor.get_battery(
                    devices)  # 上方的beforeBattery和下方afterBattery会使电量列多两行,后面再优化
                if monkeylog.read().count('Monkey finished') > 0:
                    endtime = datetime.datetime.now()
                    # print(str(devices) + "测试完成!")
                    writeSum(1, path=PATH("./info/sumInfo.pickle"))
                    app[devices]["header"]["beforeBattery"] = beforeBattery
                    app[devices]["header"][
                        "afterBattery"] = BaseMonitor.get_battery(devices)
                    app[devices]["header"]["net"] = mc["net"]
                    app[devices]["header"]["monkey_log"] = mc["monkey_log"]
                    app[devices]["header"]["time"] = str(
                        (endtime - starttime).seconds) + "秒"
                    writeInfo(app, PATH("./info/info.pickle"))
                    break
                    # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒"
                    # report(go.info)
        if readInfo(PATH("./info/sumInfo.pickle")) <= 0:
            print(readInfo(PATH("./info/info.pickle")))
            report(readInfo(PATH("./info/info.pickle")))
            # subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)
            shutil.rmtree((PATH("./info/")))  # 删除持久化目录
            path = os.path.abspath('./')
            print("\n" + '{0:*^79}'.format('测试完成!') +
                  '\n{0:*^79}'.format('测试报告:' + path))
    except:
        print('>>>Stopping monkey process...')
        stop_monkey(devices)
Esempio n. 3
0
def start(dev):
    rt = os.popen('adb devices').readlines()  # os.popen()执行系统命令并返回执行后的结果
    num = len(rt) - 2
    print(num)
    app = {}
    Create_pickle(dev, app, num)
    """os.popen("adb kill-server")
    os.popen("adb start-server")
    time.sleep(5)"""

    #手动测试部分(手动测试性能数据统计),直接杀掉app进程即可结束测试统计(备注:操作过程中请不要杀掉app进程,否则测试终止)
    """signal = input("现在是手动测试部分,是否要开始你的测试,请输入(y or n): ")
    if signal == 'y':
        print("测试即将开始,请打开需要测试的app并准备执行您的操作....")
        time.sleep(5)
        path_log = Config.log_location + dev
        device_dir = os.path.exists(path_log)
        if device_dir:
            print("日志文件目录log已存在,继续执行测试!")
        else:
            os.mkdir(path_log)  # 按设备ID生成日志目录文件夹
        run_time = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))

        # logcat日志
        logcat_log = path_log + "\\" + run_time + "logcat.log"
        cmd_logcat = "adb -s " + dev + " logcat > %s" % (logcat_log)
        os.popen(cmd_logcat)
        # print("logcat 命令:", cmd_logcat)

        # "导出traces文件"
        traces_log = path_log + "\\" + run_time + "traces.log"
        cmd_traces = "adb -s " + dev + " shell cat /data/anr/traces.txt > %s" % traces_log
        os.popen(cmd_traces)
        # print("traces 命令:", cmd_traces)

        time.sleep(2)
        start_time = datetime.datetime.now()
        pid = BaseMonitor.get_pid(Config.package_name, dev)
        cpu_kel = BaseMonitor.get_cpu_kel(dev)
        beforeBattery = BaseMonitor.get_battery(dev)
        print("测试前电量", beforeBattery)
        try:
            while True:
                time.sleep(1)  # 每1秒采集一次
                print("----------------数据采集-----------------")
                BaseMonitor.cpu_rate(pid, cpu_kel, dev)
                BaseMonitor.get_men(Config.package_name, dev)
                BaseMonitor.get_fps(Config.package_name, dev)
                BaseMonitor.get_flow(pid, Config.net, dev)
                BaseMonitor.get_battery(dev)
        except:
            end_time = datetime.datetime.now()
            print(str(dev) + ":测试完成!")
            afterBattery = BaseMonitor.get_battery(dev)
            writeSum(1, path=PATH("./info/sumInfo.pickle"))
            app[dev]["header"]["beforeBattery"] = beforeBattery
            app[dev]["header"]["afterBattery"] = afterBattery
            app[dev]["header"]["net"] = Config.net
            app[dev]["header"]["time"] = str((end_time - start_time).seconds) + "秒"
            writeInfo(app, PATH("./info/info.pickle"))
    if readInfo(PATH("./info/sumInfo.pickle")) <= 0:
        report(readInfo(PATH("./info/info.pickle")))
        print("Kill adb server,test finished!")
        os.popen("taskkill /f /t /im adb.exe")
        shutil.rmtree((PATH("./info/"))) # 删除持久化目录

    elif signal == 'n':
        print('用户主动放弃测试,测试结束!')
    else:
        print("测试结束,输入非法,请重新输入y or n!")"""

    #Monkey测试部分,如果是进行monkey测试,去除该部分注释(line134~line191)并注掉手动测试部分(line72~line131);另外BaseReport.py中line85,line120~line132注释也要去除
    print("--------------开始执行Monkey----------------")
    path_log = Config.log_location + dev
    device_dir = os.path.exists(path_log)
    if device_dir:
        print("日志文件目录log已存在,继续执行测试!")
    else:
        os.mkdir(path_log)  # 按设备ID生成日志目录文件夹
    run_time = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
    # Monkey测试结果日志:monkey_log
    adb_monkey = "shell monkey -p %s -s %s %s" % (
        Config.package_name, Config.monkey_seed, Config.monkey_parameters)
    monkey_log = path_log + "\\" + run_time + "monkey.log"
    cmd_monkey = "adb -s %s %s > %s" % (dev, adb_monkey, monkey_log)
    os.popen(cmd_monkey)
    print("monkey 命令:", cmd_monkey)

    # logcat日志
    logcat_log = path_log + "\\" + run_time + "logcat.log"
    cmd_logcat = "adb -s " + dev + " logcat > %s" % (logcat_log)
    os.popen(cmd_logcat)
    # print("logcat 命令:", cmd_logcat)

    # "导出traces文件"
    traces_log = path_log + "\\" + run_time + "traces.log"
    cmd_traces = "adb -s " + dev + " shell cat /data/anr/traces.txt > %s" % traces_log
    os.popen(cmd_traces)
    # print("traces 命令:", cmd_traces)
    time.sleep(2)
    start_time = datetime.datetime.now()
    pid = BaseMonitor.get_pid(Config.package_name, dev)
    cpu_kel = BaseMonitor.get_cpu_kel(dev)
    beforeBattery = BaseMonitor.get_battery(dev)
    print("测试前电量", beforeBattery)
    while True:
        try:
            with open(monkey_log, encoding='utf-8') as monkeylog:
                time.sleep(2)  # 每2秒采集一次
                print("----------------数据采集-----------------")
                BaseMonitor.cpu_rate(pid, cpu_kel, dev)
                BaseMonitor.get_men(Config.package_name, dev)
                BaseMonitor.get_fps(Config.package_name, dev)
                BaseMonitor.get_flow(pid, Config.net, dev)
                BaseMonitor.get_battery(dev)
                if monkeylog.read().count('Monkey finished') > 0:
                    end_time = datetime.datetime.now()
                    print(str(dev) + ":测试完成!")
                    afterBattery = BaseMonitor.get_battery(dev)
                    writeSum(1, path=PATH("./info/sumInfo.pickle"))
                    app[dev]["header"]["beforeBattery"] = beforeBattery
                    app[dev]["header"]["afterBattery"] = afterBattery
                    app[dev]["header"]["net"] = Config.net
                    app[dev]["header"]["monkey_log"] = monkey_log
                    app[dev]["header"]["time"] = str(
                        (end_time - start_time).seconds) + "秒"
                    writeInfo(app, PATH("./info/info.pickle"))
                    break
        except:
            end_time = datetime.datetime.now()
            print(str(dev) + ":测试完成!")
            afterBattery = BaseMonitor.get_battery(dev)
            writeSum(1, path=PATH("./info/sumInfo.pickle"))
            app[dev]["header"]["beforeBattery"] = beforeBattery
            app[dev]["header"]["afterBattery"] = afterBattery
            app[dev]["header"]["net"] = Config.net
            app[dev]["header"]["monkey_log"] = monkey_log
            app[dev]["header"]["time"] = str(
                (end_time - start_time).seconds) + "秒"
            writeInfo(app, PATH("./info/info.pickle"))
            break
    if readInfo(PATH("./info/sumInfo.pickle")) <= 0:
        report(readInfo(PATH("./info/info.pickle")))
        print("Kill adb server,test finished!")
        os.popen("taskkill /f /t /im adb.exe")
        shutil.rmtree((PATH("./info/")))  # 删除持久化目录
Esempio n. 4
0
        threading.Thread.__init__(self)
        self.thread_stop = False
        self.dev = dev

    def run(self):
        time.sleep(2)
        start(self.dev)


def create_threads_monkey(device_list):
    thread_instances = []
    if device_list != []:
        for id_device in device_list:
            dev = id_device
            instance = MonkeyThread(dev)
            thread_instances.append(instance)
        for instance in thread_instances:
            instance.start()


if __name__ == '__main__':
    device_dir = os.path.exists(Config.info_path)
    if device_dir:
        print("持久性目录info已存在,继续执行测试!")
    else:
        os.mkdir(Config.info_path)  # 创建持久性目录
    device_list = BaseMonitor.get_devices()
    if ba.attached_devices():
        create_threads_monkey(device_list)
    else:
        print("设备不存在")
Esempio n. 5
0
def start(devicess):
    devices = devicess["devices"]
    num = devicess["num"]
    app = {}
    mkdirInit(devices, app, num)
    mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini"))
    # 打开想要的activity
    # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等
    # monkey开始测试
    mc["log"] = PATH("./log") + "\\" + str(uuid.uuid4())
    mc["monkey_log"] = mc["log"] + "monkey.log"
    mc["cmd"] = mc['cmd'] + mc["monkey_log"]
    start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"])
    time.sleep(1)
    starttime = datetime.datetime.now()
    pid = BaseMonitor.get_pid(mc["package_name"], devices)
    cpu_kel = BaseMonitor.get_cpu_kel(devices)
    beforeBattery = BaseMonitor.get_battery(devices)
    print 'start------------123'
    while True:
        with open(mc["monkey_log"], 'a+') as monkeylog:
            time.sleep(1)  # 每1秒采集检查一次
            print "star()----1"
            BaseMonitor.cpu_rate(pid, cpu_kel, devices)
            BaseMonitor.get_men(mc["package_name"], devices)
            BaseMonitor.get_fps(mc["package_name"], devices)
            print "mc vm :", mc["vm"]
            BaseMonitor.get_flow(pid, mc["vm"], devices)  # 获取流量
            BaseMonitor.get_battery(devices)
            bflag1 = (monkeylog.read().count('Monkey finished') > 0)
            bflag2 = (monkeylog.read().count('Monkey aborted due to error') >
                      0)
            if bflag1 or bflag2:
                endtime = datetime.datetime.now()
                print(str(devices) + "测试完成咯")
                writeSum(1, path=PATH("./info/sumInfo.pickle"))
                app[devices]["header"]["beforeBattery"] = beforeBattery
                app[devices]["header"][
                    "afterBattery"] = BaseMonitor.get_battery(devices)
                app[devices]["header"]["net"] = mc["net"]
                app[devices]["header"]["monkey_log"] = mc["monkey_log"]
                app[devices]["header"]["time"] = str(
                    (endtime - starttime).seconds) + "秒"
                writeInfo(app, PATH("./info/info.pickle"))
                break
                # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒"
                # report(go.info)
    if readInfo(PATH("./info/sumInfo.pickle")) <= 0:
        print(readInfo(PATH("./info/info.pickle")))
        report(readInfo(PATH("./info/info.pickle")))  # 这里有问题
        subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)
        # shutil.rmtree((PATH("./info/"))) # 删除持久化目录
        print("------来吧------")
Esempio n. 6
0
def start(devicess):
    devices = devicess["devices"]
    num = devicess["num"]
    app = {}
    mkdirInit(devices, app, num)
    mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini"))
    now = datetime.datetime.now().strftime('%b-%d-%Y-%H-%M-%S')
    mc["log"] = PATH("./log") + "\\" + now
    mc["monkey_log"] = mc["log"] + "monkey.log"
    mc["cmd"] = mc['cmd'] + mc["monkey_log"]
    start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"])
    time.sleep(1)
    starttime = datetime.datetime.now()
    pid = BaseMonitor.get_pid(mc["package_name"], devices)
    cpu_kel = BaseMonitor.get_cpu_kel(devices)
    beforeBattery = BaseMonitor.get_battery(devices)
    while True:
        with open(mc["monkey_log"], encoding='utf-8') as monkeylog:
            time.sleep(1)  # 每1秒采集检查一次
            BaseMonitor.cpu_rate(pid, cpu_kel, devices)
            BaseMonitor.get_men(mc["package_name"], devices)
            BaseMonitor.get_fps(mc["package_name"], devices)
            BaseMonitor.get_battery(devices)
            if monkeylog.read().count('Monkey finished') > 0:
                endtime = datetime.datetime.now()
                print(str(devices) + "测试完成")
                writeSum(1, path=PATH("./info/sumInfo.pickle"))
                app[devices]["header"]["beforeBattery"] = beforeBattery
                app[devices]["header"][
                    "afterBattery"] = BaseMonitor.get_battery(devices)
                app[devices]["header"]["net"] = mc["net"]
                app[devices]["header"]["monkey_log"] = mc["monkey_log"]
                app[devices]["header"]["time"] = str(
                    (endtime - starttime).seconds) + "秒"
                writeInfo(app, PATH("./info/info.pickle"))
                break
    if readInfo(PATH("./info/sumInfo.pickle")) <= 0:
        print(readInfo(PATH("./info/info.pickle")))
        report(readInfo(PATH("./info/info.pickle")))
        subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)
Esempio n. 7
0
def start(devicess):
    devices = devicess["devices"]
    num = devicess["num"]
    app = {}
    mkdirInit(devices, app, num)
    mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini"))
    # 打开想要的activity
    # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等
    # monkey开始测试
    mc["log"] = PATH("./log") + "\\" + str(uuid.uuid4())
    mc["monkey_log"] = mc["log"] + "monkey.log"
    mc["cmd"] = mc['cmd'] + mc["monkey_log"]
    start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"])
    time.sleep(1)
    starttime = datetime.datetime.now()
    pid = BaseMonitor.get_pid(mc["package_name"], devices)
    cpu_kel = BaseMonitor.get_cpu_kel(devices)
    beforeBattery = BaseMonitor.get_battery(devices)
    while True:
        with open(mc["monkey_log"], encoding='utf-8') as monkeylog:
            time.sleep(1)  # 每1秒采集检查一次
            BaseMonitor.cpu_rate(pid, cpu_kel, devices)
            BaseMonitor.get_men(mc["package_name"], devices)
            BaseMonitor.get_fps(mc["package_name"], devices)
            BaseMonitor.get_flow(pid, mc["net"], devices)
            BaseMonitor.get_battery(devices)
            if monkeylog.read().count('Monkey finished') > 0:
                endtime = datetime.datetime.now()
                print(str(devices)+"测试完成咯")
                writeSum(1, path=PATH("./info/sumInfo.pickle"))
                app[devices] ["header"]["beforeBattery"] = beforeBattery
                app[devices]["header"]["afterBattery"] = BaseMonitor.get_battery(devices)
                app[devices]["header"]["net"] = mc["net"]
                app[devices]["header"]["monkey_log"] = mc["monkey_log"]
                app[devices]["header"]["time"] = str((endtime - starttime).seconds) + "秒"
                writeInfo(app, PATH("./info/info.pickle"))
                break
                    # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒"
                    # report(go.info)
    if readInfo(PATH("./info/sumInfo.pickle")) <= 0:
        print(readInfo(PATH("./info/info.pickle")))
        report(readInfo(PATH("./info/info.pickle")))
        subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)
    ba = AdbCommon.AndroidDebugBridge()
    if ba.attached_devices():
        mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini"))
        # 打开想要的activity
        ba.open_app(mc["package_name"], mc["activity"])
        temp = ""

        # monkey开始测试

        start_monkey(mc["cmd"], mc["log"])
        time.sleep(1)
        starttime = datetime.datetime.now()

        while True:
            with open(mc["monkey_log"], encoding='utf-8') as monkeylog:
                BaseMonitor.get_cpu(mc["package_name"])
                BaseMonitor.get_men(mc["package_name"])
                BaseMonitor.get_fps(mc["package_name"])
                BaseMonitor.get_battery()
                BaseMonitor.get_flow(mc["package_name"], mc["net"])
                time.sleep(1)  # 每1秒采集检查一次
                if monkeylog.read().count('Monkey finished') > 0:
                    endtime = datetime.datetime.now()
                    print("测试完成咯")
                    app = {
                        "beforeBattery": BaseMonitor.get_battery(),
                        "net": mc["net"],
                        "monkey_log": mc["monkey_log"]
                    }
                    report(app, str((endtime - starttime).seconds) + "秒")
                    bo.close()
Esempio n. 9
0
def start(devicess):
    devices = devicess["devices"]
    num = devicess["num"]
    app = {}
    mkdirInit(devices, app, num)
    mc = BaseMonkeyConfig.monkeyConfig(PATH("monkey.ini"))
    # 打开想要的activity
    # ba.open_app(mc["package_name"], mc["activity"], devices) 留着备用可以统计每次打开哪个页面的启动时间等
    # monkey开始测试
    mc["log"] = PATH("./log") + "\\" + str(uuid.uuid4())
    mc["monkey_log"] = mc["log"] + "monkey.log"
    mc["cmd"] = mc['cmd'] + mc["monkey_log"]
    start_monkey("adb -s " + devices + " shell " + mc["cmd"], mc["log"])
    time.sleep(1)
    starttime = datetime.datetime.now()
    pid = BaseMonitor.get_pid(mc["package_name"], devices)
    print('piddddd:', pid)
    cpu_kel = BaseMonitor.get_cpu_kel(devices)
    beforeBattery = BaseMonitor.get_battery(devices)
    while True:
        with open(mc["monkey_log"], encoding='utf-8') as monkeylog:
            time.sleep(1)  # 每1秒采集检查一次
            BaseMonitor.cpu_rate(pid, cpu_kel, devices)
            BaseMonitor.get_men(mc["package_name"], devices)
            BaseMonitor.get_fps(mc["package_name"], devices)
            BaseMonitor.get_flow(pid, mc["net"], devices)
            BaseMonitor.get_battery(devices)
            if monkeylog.read().count('Monkey finished') > 0:
                endtime = datetime.datetime.now()
                print(str(devices) + "测试完成咯")
                writeSum(1, path=PATH("./info/sumInfo.pickle"))
                app[devices]["header"]["beforeBattery"] = beforeBattery
                app[devices]["header"][
                    "afterBattery"] = BaseMonitor.get_battery(devices)
                app[devices]["header"]["net"] = mc["net"]
                app[devices]["header"]["monkey_log"] = mc["monkey_log"]
                app[devices]["header"]["time"] = str(
                    (endtime - starttime).seconds) + "秒"
                writeInfo(app, PATH("./info/info.pickle"))
                break
                # go.info[devices]["header"]["sumTime"] = str((endtime - starttime).seconds) + "秒"
                # report(go.info)
    if readInfo(PATH("./info/sumInfo.pickle")) <= 0:
        print(readInfo(PATH("./info/info.pickle")))
        report(readInfo(PATH("./info/info.pickle")))
        subprocess.Popen("taskkill /f /t /im adb.exe", shell=True)