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)
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("------来吧------")
Exemple #3
0
def start(devicess):
    devices = devicess["devices"]
    print(devices)
    num = devicess["num"]
    print(num)
    app = {}
    print(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)
Exemple #4
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)
Exemple #5
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)
    def analysis(self, info):
        for t in info:
            for wrap in t:
                name = wrap  # sheet名字
                worksheet = self.wd.add_worksheet(name)
                worksheet.set_column("A:A", 10)
                worksheet.set_column("B:B", 10)
                worksheet.set_column("C:C", 10)
                worksheet.set_column("D:D", 10)
                worksheet.set_column("E:E", 10)
                worksheet.set_column("F:F", 10)

                worksheet.set_row(1, 30)
                worksheet.set_row(2, 30)
                worksheet.set_row(3, 30)
                worksheet.set_row(4, 30)
                worksheet.set_row(5, 30)
                worksheet.set_row(6, 30)
                define_format_H1 = get_format(self.wd, {
                    'bold': True,
                    'font_size': 18
                })
                define_format_H2 = get_format(self.wd, {
                    'bold': True,
                    'font_size': 14
                })
                define_format_H1.set_border(1)

                define_format_H2.set_border(1)
                define_format_H1.set_align("center")
                define_format_H2.set_align("center")
                define_format_H2.set_bg_color("blue")
                define_format_H2.set_color("#ffffff")

                _write_center(worksheet, "A1", 'cpu(%)', self.wd)
                _write_center(worksheet, "B1", 'men(M)', self.wd)
                _write_center(worksheet, "C1", 'fps', self.wd)
                _write_center(worksheet, "D1", 'battery(%)', self.wd)
                _write_center(worksheet, "E1", '上行流量(KB)', self.wd)
                _write_center(worksheet, "F1", '下行流量(KB)', self.wd)
                for item in t[wrap]:
                    print("------data-----")
                    temp = 2
                    cpu = readInfo(t[wrap]["cpu"])
                    for item in cpu:
                        _write_center(worksheet, "A" + str(temp),
                                      float("%.1f" % item) * 10, self.wd)
                        temp = temp + 1

                    temp = 2
                    men = readInfo(t[wrap]["men"])
                    for item in men:
                        _write_center(worksheet, "B" + str(temp),
                                      math.ceil(item / 1024), self.wd)
                        temp = temp + 1

                    temp = 2
                    fps = readInfo(t[wrap]["fps"])
                    for item in fps:
                        _write_center(worksheet, "C" + str(temp), item,
                                      self.wd)
                        temp = temp + 1

                    temp = 2
                    battery = readInfo(t[wrap]["battery"])
                    for item in battery:
                        _write_center(worksheet, "D" + str(temp), item,
                                      self.wd)
                        temp = temp + 1

                    temp = 2
                    flow = readInfo(t[wrap]["flow"])
                    for item in flow[0]:
                        if item > 0:
                            _write_center(worksheet, "E" + str(temp),
                                          math.ceil(item / 1024), self.wd)
                        else:
                            _write_center(worksheet, "E" + str(temp), 0,
                                          self.wd)
                        temp = temp + 1

                    temp = 2
                    for item in flow[1]:
                        if item > 0:
                            _write_center(worksheet, "F" + str(temp),
                                          math.ceil(item / 1024), self.wd)
                        else:
                            _write_center(worksheet, "F" + str(temp), 0,
                                          self.wd)
                        temp = temp + 1
                    self.plot(worksheet, "cpu", len(cpu), name)
                    self.plot(worksheet, "men", len(men), name)
                    self.plot(worksheet, "battery", len(battery), name)
                    self.plot(worksheet, "fps", len(fps), name)
                    self.plot(worksheet, "flowUp", len(flow[0]), name)
                    self.plot(worksheet, "flowDown", len(flow[1]), name)
                    break
    def monitor(self, info):
        worksheet = self.wd.add_worksheet("性能数据详情")
        worksheet.set_column("A:A", 20)
        worksheet.set_column("B:B", 10)
        worksheet.set_column("C:C", 10)
        worksheet.set_column("D:D", 10)
        worksheet.set_column("E:E", 10)
        worksheet.set_column("F:F", 10)
        worksheet.set_column("G:G", 10)
        worksheet.set_column("H:H", 10)
        worksheet.set_column("I:I", 10)
        worksheet.set_column("J:J", 10)
        worksheet.set_column("K:K", 10)
        worksheet.set_column("L:L", 10)
        worksheet.set_column("L:L", 10)
        worksheet.set_column("M:M", 12)
        worksheet.set_column("N:N", 12)
        worksheet.set_column("O:O", 12)
        worksheet.set_column("P:P", 12)
        worksheet.set_column("Q:Q", 12)
        worksheet.set_column("R:R", 12)

        worksheet.set_row(1, 30)
        worksheet.set_row(2, 30)
        worksheet.set_row(3, 30)
        worksheet.set_row(4, 30)
        worksheet.set_row(5, 30)
        worksheet.set_row(6, 30)
        worksheet.set_row(7, 30)
        worksheet.set_row(8, 30)
        worksheet.set_row(9, 30)
        worksheet.set_row(10, 30)
        worksheet.set_row(11, 30)
        worksheet.set_row(12, 30)

        define_format_H1 = get_format(self.wd, {'bold': True, 'font_size': 18})
        define_format_H2 = get_format(self.wd, {'bold': True, 'font_size': 14})
        define_format_H1.set_border(1)

        define_format_H2.set_border(1)
        define_format_H1.set_align("center")
        define_format_H2.set_align("center")
        define_format_H2.set_bg_color("blue")
        define_format_H2.set_color("#ffffff")
        worksheet.merge_range('A1:R1', 'monkey性能监控', define_format_H1)
        _write_center(worksheet, "A2", '设备名', self.wd)
        _write_center(worksheet, "B2", 'CPU', self.wd)
        _write_center(worksheet, "C2", '内存', self.wd)
        _write_center(worksheet, "D2", '分辨率', self.wd)
        _write_center(worksheet, "E2", '网络', self.wd)
        _write_center(worksheet, "F2", "耗时", self.wd)
        _write_center(worksheet, "G2", "CPU峰值", self.wd)
        _write_center(worksheet, "H2", "CPU均值", self.wd)
        _write_center(worksheet, "I2", "内存峰值", self.wd)
        _write_center(worksheet, "J2", "内存均值", self.wd)
        _write_center(worksheet, "K2", "fps峰值", self.wd)
        _write_center(worksheet, "L2", "fps均值", self.wd)
        _write_center(worksheet, "M2", "电量测试之前", self.wd)
        _write_center(worksheet, "N2", "电量测试之后", self.wd)
        _write_center(worksheet, "O2", "上行流量峰值", self.wd)
        _write_center(worksheet, "P2", "上行流量均值", self.wd)
        _write_center(worksheet, "Q2", "下行流量峰值", self.wd)
        _write_center(worksheet, "R2", "下行流量均值", self.wd)

        temp = 3
        for t in info:
            for wrap in t:
                for item in t[wrap]:
                    self.getCrashMsg(t[wrap]["header"]["monkey_log"])
                    _write_center(worksheet, "A" + str(temp),
                                  t[wrap]["header"]["phone_name"], self.wd)
                    _write_center(worksheet, "B" + str(temp),
                                  t[wrap]["header"]["kel"], self.wd)
                    _write_center(
                        worksheet, "C" + str(temp),
                        str(math.ceil(t[wrap]["header"]["rom"] / 1024)) + "M",
                        self.wd)
                    _write_center(worksheet, "D" + str(temp),
                                  t[wrap]["header"]["pix"], self.wd)
                    _write_center(worksheet, "E" + str(temp),
                                  t[wrap]["header"]["net"], self.wd)
                    _write_center(worksheet, "F" + str(temp),
                                  t[wrap]["header"]["time"], self.wd)

                    cpu = readInfo(t[wrap]["cpu"])
                    men = readInfo(t[wrap]["men"])
                    fps = readInfo(t[wrap]["fps"])
                    flow = readInfo(t[wrap]["flow"])
                    print("----wrap-----")
                    print(flow)
                    _write_center(worksheet, "G" + str(temp),
                                  BaseAnalysis.maxCpu(cpu), self.wd)
                    _write_center(worksheet, "H" + str(temp),
                                  BaseAnalysis.avgCpu(cpu), self.wd)
                    _write_center(worksheet, "I" + str(temp),
                                  BaseAnalysis.maxMen(men), self.wd)
                    _write_center(
                        worksheet, "J" + str(temp),
                        BaseAnalysis.avgMen(men, t[wrap]["header"]["rom"]),
                        self.wd)
                    _write_center(worksheet, "K" + str(temp),
                                  BaseAnalysis.maxFps(fps), self.wd)
                    _write_center(worksheet, "L" + str(temp),
                                  BaseAnalysis.avgFps(fps), self.wd)
                    _write_center(worksheet, "M" + str(temp),
                                  t[wrap]["header"]["beforeBattery"], self.wd)
                    _write_center(worksheet, "N" + str(temp),
                                  t[wrap]["header"]["afterBattery"], self.wd)

                    _maxFlow = BaseAnalysis.maxFlow(flow)
                    _avgFLow = BaseAnalysis.avgFlow(flow)
                    print("-----_maxFlow----------")
                    print(_maxFlow)
                    _write_center(worksheet, "O" + str(temp), _maxFlow[0],
                                  self.wd)
                    _write_center(worksheet, "Q" + str(temp), _maxFlow[1],
                                  self.wd)
                    _write_center(worksheet, "P" + str(temp), _avgFLow[0],
                                  self.wd)
                    _write_center(worksheet, "R" + str(temp), _avgFLow[1],
                                  self.wd)

                    break
                temp = temp + 1
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/")))  # 删除持久化目录
Exemple #9
0
    def analysis(self, info):
        print "1111"
        for t in info:
            for wrap in t:
                if ":5555" in wrap:
                    name = wrap.replace(":", "_") + "detail"  # sheet名字
                else:
                    name = wrap + "detail"  # sheet名字
                #handle propble:   Exception: Invalid Excel character '[]:*?/\' in sheetname '192.168.179.101:5555detail'
                worksheet = self.wd.add_worksheet(name)  #2017年12月9日14:03:48
                worksheet.set_column("A:A", 10)
                worksheet.set_column("B:B", 10)
                worksheet.set_column("C:C", 10)
                worksheet.set_column("D:D", 10)
                worksheet.set_column("E:E", 10)
                worksheet.set_column("F:F", 10)

                worksheet.set_row(1, 30)
                worksheet.set_row(2, 30)
                worksheet.set_row(3, 30)
                worksheet.set_row(4, 30)
                worksheet.set_row(5, 30)
                worksheet.set_row(6, 30)
                define_format_H1 = get_format(self.wd, {
                    'bold': True,
                    'font_size': 18
                })
                define_format_H2 = get_format(self.wd, {
                    'bold': True,
                    'font_size': 14
                })
                define_format_H1.set_border(1)

                define_format_H2.set_border(1)
                define_format_H1.set_align("center")
                define_format_H2.set_align("center")
                define_format_H2.set_bg_color("blue")
                define_format_H2.set_color("#ffffff")

                _write_center(worksheet, "A1", 'cpu(%)', self.wd)
                _write_center(worksheet, "B1", 'men(M)', self.wd)
                _write_center(worksheet, "C1", 'fps', self.wd)
                _write_center(worksheet, "D1", 'battery(%)', self.wd)
                _write_center(worksheet, "E1", '上行流量(KB)', self.wd)
                _write_center(worksheet, "F1", '下行流量(KB)', self.wd)
                for item in t[wrap]:
                    print("------data-----")
                    temp = 2
                    cpu = readInfo(t[wrap]["cpu"])
                    for item in cpu:
                        _write_center(worksheet, "A" + str(temp),
                                      float("%.1f" % item) * 10, self.wd)
                        temp = temp + 1

                    temp = 2
                    men = readInfo(t[wrap]["men"])
                    for item in men:
                        _write_center(worksheet, "B" + str(temp),
                                      math.ceil(item / 1024), self.wd)
                        temp = temp + 1

                    temp = 2
                    fps = readInfo(t[wrap]["fps"])
                    for item in fps:
                        _write_center(worksheet, "C" + str(temp), item,
                                      self.wd)
                        temp = temp + 1

                    temp = 2
                    battery = readInfo(t[wrap]["battery"])
                    for item in battery:
                        _write_center(worksheet, "D" + str(temp), item,
                                      self.wd)
                        temp = temp + 1

                    temp = 2
                    flow = readInfo(t[wrap]["flow"])
                    for item in flow[0]:
                        if item > 0:
                            _write_center(worksheet, "E" + str(temp),
                                          math.ceil(item / 1024), self.wd)
                        else:
                            _write_center(worksheet, "E" + str(temp), 0,
                                          self.wd)
                        temp = temp + 1

                    temp = 2
                    for item in flow[1]:
                        if item > 0:
                            _write_center(worksheet, "F" + str(temp),
                                          math.ceil(item / 1024), self.wd)
                        else:
                            _write_center(worksheet, "F" + str(temp), 0,
                                          self.wd)
                        temp = temp + 1
                    self.plot(worksheet, "cpu", len(cpu), name)
                    self.plot(worksheet, "men", len(men), name)
                    self.plot(worksheet, "battery", len(battery), name)
                    self.plot(worksheet, "fps", len(fps), name)
                    self.plot(worksheet, "flowUp", len(flow[0]), name)
                    self.plot(worksheet, "flowDown", len(flow[1]), name)
                    break
Exemple #10
0
    def analysis(self, info):
        for t in info:
            for wrap in t:
                name = wrap + "detail" # sheet名字
                worksheet = self.wd.add_worksheet(name)
                worksheet.set_column("A:A", 10)
                worksheet.set_column("B:B", 10)
                worksheet.set_column("C:C", 10)
                worksheet.set_column("D:D", 10)
                worksheet.set_column("E:E", 10)
                worksheet.set_column("F:F", 10)

                worksheet.set_row(1, 30)
                worksheet.set_row(2, 30)
                worksheet.set_row(3, 30)
                worksheet.set_row(4, 30)
                worksheet.set_row(5, 30)
                worksheet.set_row(6, 30)
                define_format_H1 = get_format(self.wd, {'bold': True, 'font_size': 18})
                define_format_H2 = get_format(self.wd, {'bold': True, 'font_size': 14})
                define_format_H1.set_border(1)

                define_format_H2.set_border(1)
                define_format_H1.set_align("center")
                define_format_H2.set_align("center")
                define_format_H2.set_bg_color("blue")
                define_format_H2.set_color("#ffffff")

                _write_center(worksheet, "A1", 'cpu(%)', self.wd)
                _write_center(worksheet, "B1", 'men(M)', self.wd)
                _write_center(worksheet, "C1", 'fps', self.wd)
                _write_center(worksheet, "D1", 'battery(%)', self.wd)
                _write_center(worksheet, "E1", '上行流量(KB)', self.wd)
                _write_center(worksheet, "F1", '下行流量(KB)', self.wd)
                for item in t[wrap]:
                    print("------data-----")
                    temp = 2
                    cpu = readInfo(t[wrap]["cpu"])
                    for item in cpu:
                        _write_center(worksheet, "A" + str(temp), float("%.1f" % item)*10, self.wd)
                        temp = temp + 1

                    temp = 2
                    men = readInfo(t[wrap]["men"])
                    for item in men:
                        _write_center(worksheet, "B" + str(temp), math.ceil(item/1024), self.wd)
                        temp = temp + 1


                    temp = 2
                    fps = readInfo(t[wrap]["fps"])
                    for item in fps:
                        _write_center(worksheet, "C" + str(temp), item, self.wd)
                        temp = temp + 1

                    temp = 2
                    battery = readInfo(t[wrap]["battery"])
                    for item in battery:
                        _write_center(worksheet, "D" + str(temp), item, self.wd)
                        temp = temp + 1

                    temp = 2
                    flow = readInfo(t[wrap]["flow"])
                    for item in flow[0]:
                        if item > 0:
                            _write_center(worksheet, "E" + str(temp), math.ceil(item/1024), self.wd)
                        else:
                            _write_center(worksheet, "E" + str(temp), 0, self.wd)
                        temp = temp + 1

                    temp = 2
                    for item in flow[1]:
                        if item > 0:
                            _write_center(worksheet, "F" + str(temp), math.ceil(item/1024), self.wd)
                        else:
                            _write_center(worksheet, "F" + str(temp), 0, self.wd)
                        temp = temp + 1
                    self.plot(worksheet, "cpu", len(cpu), name)
                    self.plot(worksheet, "men", len(men), name)
                    self.plot(worksheet, "battery", len(battery), name)
                    self.plot(worksheet, "fps", len(fps), name)
                    self.plot(worksheet, "flowUp", len(flow[0]), name)
                    self.plot(worksheet, "flowDown", len(flow[1]), name)
                    break
Exemple #11
0
    def monitor(self, info):
        worksheet = self.wd.add_worksheet("Analysis")
        worksheet.set_column("A:A", 15)
        worksheet.set_column("B:B", 10)
        worksheet.set_column("C:C", 10)
        worksheet.set_column("D:D", 10)
        worksheet.set_column("E:E", 10)
        worksheet.set_column("F:F", 10)
        worksheet.set_column("G:G", 10)
        worksheet.set_column("H:H", 10)
        worksheet.set_column("I:I", 10)
        worksheet.set_column("J:J", 10)
        worksheet.set_column("K:K", 10)
        worksheet.set_column("L:L", 10)
        worksheet.set_column("L:L", 10)
        worksheet.set_column("M:M", 10)
        worksheet.set_column("N:N", 10)
        worksheet.set_column("O:O", 10)
        worksheet.set_column("P:P", 10)
        worksheet.set_column("Q:Q", 10)
        worksheet.set_column("R:R", 10)

        worksheet.set_row(1, 30)
        worksheet.set_row(2, 30)
        worksheet.set_row(3, 30)
        worksheet.set_row(4, 30)
        worksheet.set_row(5, 30)
        worksheet.set_row(6, 30)
        worksheet.set_row(7, 30)
        worksheet.set_row(8, 30)
        worksheet.set_row(9, 30)
        worksheet.set_row(10, 30)
        worksheet.set_row(11, 30)
        worksheet.set_row(12, 30)

        define_format_H1 = get_format(self.wd, {'bold': True, 'font_size': 18})
        define_format_H2 = get_format(self.wd, {'bold': True, 'font_size': 14})
        define_format_H1.set_border(1)

        define_format_H2.set_border(1)
        define_format_H1.set_align("center")
        define_format_H2.set_align("center")
        define_format_H2.set_bg_color("blue")
        define_format_H2.set_color("#ffffff")
        worksheet.merge_range('A1:L1', 'monkey性能监控', define_format_H1)
        _write_center(worksheet, "A2", '设备名', self.wd)
        _write_center(worksheet, "B2", 'CPU', self.wd)
        _write_center(worksheet, "C2", '内存', self.wd)
        _write_center(worksheet, "D2", '分辨率', self.wd)
        _write_center(worksheet, "E2", '网络', self.wd)
        _write_center(worksheet, "F2", "耗时", self.wd)
        _write_center(worksheet, "G2", "CPU峰值", self.wd)
        _write_center(worksheet, "H2", "CPU均值", self.wd)
        _write_center(worksheet, "I2", "内存峰值", self.wd)
        _write_center(worksheet, "J2", "内存均值", self.wd)
        _write_center(worksheet, "K2", "fps峰值", self.wd)
        _write_center(worksheet, "L2", "fps均值", self.wd)
        _write_center(worksheet, "M2", "电量测试之前", self.wd)
        _write_center(worksheet, "N2", "电量测试之后", self.wd)
        _write_center(worksheet, "O2", "上行流量峰值", self.wd)
        _write_center(worksheet, "P2", "上行流量均值", self.wd)
        _write_center(worksheet, "Q2", "下行流量峰值", self.wd)
        _write_center(worksheet, "R2", "下行流量均值", self.wd)


        temp = 3
        for t in info:
            for wrap in t:
                for item in t[wrap]:
                    self.getCrashMsg(t[wrap]["header"]["monkey_log"])
                    _write_center(worksheet, "A" + str(temp), t[wrap]["header"]["phone_name"], self.wd)
                    _write_center(worksheet, "B" + str(temp), t[wrap]["header"]["kel"], self.wd)
                    _write_center(worksheet, "C" + str(temp), str(math.ceil(t[wrap]["header"]["rom"] / 1024)) + "M", self.wd)
                    _write_center(worksheet, "D" + str(temp), t[wrap]["header"]["pix"], self.wd)
                    _write_center(worksheet, "E" + str(temp), t[wrap]["header"]["net"], self.wd)
                    _write_center(worksheet, "F" + str(temp), t[wrap]["header"]["time"], self.wd)

                    cpu = readInfo(t[wrap]["cpu"])
                    men = readInfo(t[wrap]["men"])
                    fps = readInfo(t[wrap]["fps"])
                    flow = readInfo(t[wrap]["flow"])
                    print("----wrap-----")
                    print(flow)
                    _write_center(worksheet, "G" + str(temp), BaseAnalysis.maxCpu(cpu), self.wd)
                    _write_center(worksheet, "H" + str(temp), BaseAnalysis.avgCpu(cpu), self.wd)
                    _write_center(worksheet, "I" + str(temp), BaseAnalysis.maxMen(men), self.wd)
                    _write_center(worksheet, "J" + str(temp), BaseAnalysis.avgMen(men, t[wrap]["header"]["rom"]), self.wd)
                    _write_center(worksheet, "K" + str(temp), BaseAnalysis.maxFps(fps), self.wd)
                    _write_center(worksheet, "L" + str(temp), BaseAnalysis.avgFps(fps), self.wd)
                    _write_center(worksheet, "M" + str(temp), t[wrap]["header"]["beforeBattery"], self.wd)
                    _write_center(worksheet, "N" + str(temp), t[wrap]["header"]["afterBattery"], self.wd)

                    _maxFlow = BaseAnalysis.maxFlow(flow)
                    _avgFLow = BaseAnalysis.avgFlow(flow)
                    print("-----_maxFlow----------")
                    print(_maxFlow)
                    _write_center(worksheet, "O" + str(temp), _maxFlow[0], self.wd)
                    _write_center(worksheet, "Q" + str(temp), _maxFlow[1], self.wd)
                    _write_center(worksheet, "P" + str(temp), _avgFLow[1], self.wd)
                    _write_center(worksheet, "R" + str(temp), _avgFLow[1], self.wd)

                    break
                temp = temp + 1