usb接口定义引脚说明_PerfDogService使用说明

令牌申请教程:https://bbs.perfdog.qq.com/article-detail.html?id=55安装包下载:https://perfdog.qq.com/sdk一、 概述
PerfDog性能狗服务组件,用户可基于service组件二次开发自己PerfDog性能工具或自动化服务。本文档主要对PerfDogService提供的接口进行说明,并提供可运行的DEMO供有诉求的同学快速上手。二、 快速指引
1、 本地解压PerfDogService安装包

d51c784b03d687f60c308d58dfc1f349.png


PerfDogService.exe:Service启动文件,一般不用手工启动,自动化脚本会自动启动此程序。
perfdog.proto: grpc接口和protobuf结构体的定义文件
demo/python: python3的demo,依赖库grpcio和protobuf
demo/java: java的demo,依赖库grpc-netty-shaded, grpc-protobuf, grpc-stub
2、 快速运行Demo(以demo/python为例)
1) 安装Python3环境
2) 安装demo依赖库grpcio和protobuf,建议使用pip安装
3) 打开demo/Python目录

9de48f97a98271489975b9a975d9f9cf.png


4) 打开目录中的demo.py文件,修改输入参数

a2333c7c2af36155e6bb0240fb739a99.png


5) 打开命令窗口,运行demo.py文件

58662ab8bec7bf1f5f0cc3adb9a83ddc.png


6) Demo成功运行,查看输出结果

caac04627a21652ed5be3c42c5b5b4c1.png

三、 整体架构
产品组件

6d47a12cc699024a8abb6a244aeef129.png


整体框架

ab756e1a8d5d362c1e48628d80342a13.png

四、 工作流程
PerfDogService支持多台设备同时测试。工作流程如下图所示,具体使用方法可以参考Demo

6e9ca8a2720220ea5788e4d747d97c58.png

五、 方法列表
loginWithToken
用途
用户登录接口
定义rpc loginWithToken (Token) returns (UserInfo) {}
参数
Token: 登录令牌
返回值
UserInfo: 登录用户的帐号信息
备注
如果需要令牌,需要在官网申请令牌
startDeviceMonitor
用途
启动设备监听器,使用此接口可以收到移动设备到PC的连接和断开事件
定义rpc startDeviceMonitor (Empty) returns (stream DeviceEvent) {}
参数
Empty: gprc占位符参数,无实际意义
返回值
stream DeviceEvent: 设备连接、断开事件流,可单独启动线程从返回值获取相应的事件
前置依赖
用户已登录
initDevice
用途
初始化设备
定义rpc initDevice (Device) returns (Empty) {}
参数
Device: 用于标识设备,可以从DeviceEvent中取得。
返回值
Empty: grpc返回值占位符,无实际意义
前置依赖
用户已登录
getDeviceInfo
用途
获取设备信息
定义rpc getDeviceInfo (Device) returns (DeviceInfo) {}
参数
Device: 用于标识设备
返回值
DeviceInfo: 设备基本信息
前置依赖
用户已登录
设备已初始化
getDeviceStatus
用途
获取设备状态
定义rpc getDeviceStatus (Device) returns (DeviceStatus) {}
参数
Device:设备标识结构体
返回值
DeviceStatus: 设备状态信息
前置依赖
用户已登录
getAppList
用途
获取设备APP列表
定义rpc getAppList (Device) returns (AppList) {}
参数
Device:设备标识结构体
返回值
AppList: 设备上安装的APP的列表
前置依赖
用户已登录
设备已初始化
enablePerfDataType
用途
启用测试数据指标
定义rpc enablePerfDataType(EnablePerfDataTypeReq) returns (Empty) {}
参数
EnablePerfDataTypeReq: 需要开启的类型,参见pb定义文件PerfDataTypem枚举类型说明
返回值
Empty: grpc参数占位符,无实际意义
前置依赖
用户已登录
设备已初始化
disablePerfDataType
用途
禁用测试数据指标
定义rpc disablePerfDataType (DisablePerfDataTypeReq) returns (Empty) {}
参数
DisablePerfDataTypeReq: 需要关闭的数据类型
返回值
Empty: grpc参数占位符,无实际意义
前置依赖
用户已登录
设备已初始化
getPerfDataType
用途
获取已开启数据类型的列表
定义 rpc getPerfDataType (Device) returns (PerfDataTypeRet) {}
参数
Device:设备标识结构体
返回值
PerfDataTypeRet: 开启数据类型的列表,参见附件协议文件
前置依赖
用户已登录
设备已初始化
getAvailableDataType
用途
获取设备支持的测试数据指标类型
定义rpc getAvailableDataType (Device) returns (PerfDataTypeRet) {}
参数
Device:设备标识结构体
返回值
PerfDataTypeRet: 可以开启数据类型的列表
前置依赖
用户已登录
设备已初始化
setScreenShotInterval
用途
设置截屏时间间隔
定义 rpc setScreenShotInterval (ScreenShotInterval) returns (Empty) {}
参数
ScreenShotInterval: 设置设备测试过程中截屏时间间隔,单位秒
返回值
Empty: grpc参数占位符
前置依赖
用户已登录
startTestApp
用途
开始App测试
定义rpc startTestApp(StartTestAppReq) returns (StartTestRet) {}
参数
StartTestAppReq: 填写需要配置测试App的相关信息
返回值
StartTestRet: grpc返回值占位符,无实际意义
前置依赖
用户已登录
设备已初始化
备注
Android默认开启的数据类型有FPS、CPU_USAGE、MEMORY、CPU_TEMPERATURE、NETWORK_USAGE、FRAME_TIME和BATTERY(wifi模式);
iOS默认开启的数据类型有FPS、CPU_USAGE、MEMORY、IOS_GPU_USAGE、NETWORK_USAGE、CTX_SWITCH、FRAME_TIME(usb模式)和BATTERY(wifi模式);
如果需要开启或者关闭其他数据类型,请使用enablePerfDataType和disablePerfDataType接口。
startTestSysProcess
用途
开始系统进程测试
定义rpc startTestSysProcess (StartTestSysProcessReq) returns (StartTestRet) {}
参数
StartTestSysProcessReq: 设置开始测试的设备和系统进程
返回值
StartTestRet: grpc返回值占位符,无实际意义
前置依赖
用户已登录
设备已初始化
备注
数据类型方面规则与startTestApp相同
openPerfDataStream
用途
打开实时测试指标流,可以用来获取实时测试指标数据
定义rpc openPerfDataStream (OpenPerfDataStreamReq) returns (stream PerfData) {}
参数
OpenPerfDataStreamReq: 需要指定设备,会获取指定设备测试指标数据流
返回值
stream PerfData: 流式返回性能数据
前置依赖
用户已登录
设备已初始化
设备已开始测试
stopTest
用途
结束测试
定义rpc stopTest (StopTestReq) returns (Empty) {}
参数
StopTestReq: 需要指定停止测试设备,perfdog支持同时测试多台设备
返回值
Empty: grpc返回值占位符,无实际意义
前置依赖
用户已登录
设备已初始化
设备已开始测试
setLabel
用途
测试过程中添加标签,标签起始时间为当前时间,直到有下一个标签,都属于新添加标签说明的范围
定义rpc setLabel (SetLabelReq) returns (Empty) {}
参数
SetLabelReq: 需要填写的包括设备信息和标签名字
返回值
Empty: grpc返回值占位符,无实际意义
前置依赖
用户已登录
设备已初始化
设备已开始测试
updateLabel
用途
修改label的名字
定义rpc updateLabel (UpdateLabelReq) returns (Empty) {}
参数
UpdateLabelReq: 更新标签请求,需要填写设备信息、标签起始时间(代表标签)、新标签信息
返回值
Empty: grpc参数占位符,无实际意义
前置依赖
用户已登录
设备已初始化
设备已开始测试
addNote
用途
添加标注
定义rpc addNote (AddNoteReq) returns (Empty) {}
参数
AddNoteReq: 添加标注请求,需要填写设备信息、标注的时间点和标注内容
返回值
Empty: grpc参数占位符,无实际意义
前置依赖
用户已登录
removeNote
用途
删除批注
定义rpc removeNote (RemoveNoteReq) returns (Empty) {}
参数
RemoveNoteReq: 删除标注请求,需要填写设备信息、标注的时间位置
返回值
Empty: grpc参数占位符
前置依赖
用户已登录
setGlobalDataUploadServer
用途
设置第三方数据上传服务,当保存数据选择上了上传时,如果设置了第三方数据服务,将不会上传到官方的云服务,而是将数据上传此处设置的数据服务。
定义rpc setGlobalDataUploadServer (SetDataUploadServerReq) returns (SetDataUploadServerRsp) {}
参数
SetDataUploadServerReq: 设置第三方数据服务请求,需要设置上传服务url地址,和需要上传的格式,格式支持json和pb
返回值
SetDataUploadServerRsp: grpc返回值占位符,无实际意义
前置依赖
用户已登录
saveData
用途
保存测试数据
定义rpc saveData (SaveDataReq) returns (SaveDataRsp) {}
参数
SaveDataReq: 保存测试数据请求,需要填写的有设备信息、数据开始时间、数据结束时间、是否上传到数据服务(官方云存储或者第三方数据服务)、是否保存到文件,以及选择到文件时保存的路径和格式
返回值
SaveDataRsp: 保存文件结果,包括上传结果和导出到文件结果
前置依赖
用户已登录
getDeviceCacheData
用途
获取设备的缓存数据,数据流式返回
定义rpc getDeviceCacheData (GetDeviceCacheDataReq) returns(stream CachePerfData) {}
参数
GetDeviceCacheDataReq: 拉取数据请求,需要填写设备信息字段
返回值
stream CachePerfData: 流式返回缓存性能数据,参见CachePerfData结构定义
前置依赖
用户已登录
备注
适用于测试过程中设备断开连接的情况,也可用于测试过程中或结束测试后按条拉取数据,缓存的性能数据会在开始新一次测试时清空
getDeviceCacheDataPacked
用途
获取设备的缓存数据, 指标数据会打包返回
定义rpc getDeviceCacheDataPacked (GetDeviceCacheDataPackedReq) returns (stream CachePerfDataPacked) {}
参数
GetDeviceCacheDataPackedReq: 拉取缓存数据请求,需要提供设备信息、以及返回数据格式,返回格式支持json和pb格式
返回值
stream CachePerfDataPacked: 流式返回设备缓存的测试数据,有 2 + n次的返回,第一次返回测试指标数据,第二次返回测试应用图标,后面n次返回测试过程中生成的截图,如果有的话。
前置依赖
用户已登录
备注
适用于测试过程中设备断开连接的情况,也可用于测试过程中或结束测试后拉取打包好的全部数据,缓存的性能数据会在开始新一次测试时清空
getAppRunningProcess
用途
获取设备上app正在运行的进程列表
定义rpc getAppRunningProcess (GetAppRunningProcessReq) returns (GetAppRunningProcessRet) {}
参数
GetAppRunningProcessReq: 拉取进程列表请求,需要填写设备信息和app信息
返回值
GetAppRunningProcessRet: 进程列表
前置依赖
用户已登录
设备已初始化
getAppWindowMap
用途
获取设备上app每个进程对应的Activity和SurfaceView,仅适用于Android设备
定义rpc getAppWindowsMap (GetAppWindowsMapReq) returns (GetAppWindowsMapRet) {}
参数
GetAppWindowMapReq: 获取app进程对应的Activity和SurfaceView请求,需要填写设备信息和app信息
返回值
GetAppRunningProcessRet: 返回的数据可以理解为一个map,key值为pid,value值为此pid所涉及的Activity和SurfaceView列表
前置依赖
用户已登录
设备已初始化
getRunningSysProcess
用途
获取设备系统进程列表
定义 rpc getRunningSysProcess (Device) returns (GetRunningSysProcessRet) {}
参数
Device: 需要获取系统进程列表的设备
返回值
GetRunningSysProcessRet: 进程列表
前置依赖
用户已登录
设备已初始化
updateAppInfo
用途
刷新app的信息
定义rpc updateAppInfo (UpdateAppInfoReq) returns (UpdateAppInfoRet) {}
参数
UpdateAppInfoReq: 更新App请求,需要填写设备信息和app信息
返回值
UpdateAppInfoRet: 返回最新的app信息
前置依赖
用户已登录
设备已初始化
备注
一般用于开始测试前更新app信息,防止开始测试前app被卸载或者升级等意外情况
createTask
用途
创建任务,用于归类上传测试数据。
定义rpc createTask (CreateTaskReq) returns (CreateTaskRsp) {}
参数
CreateTaskReq: 创建Task请求,需要task名称,不能超过50个字符
返回值
CreateTaskRsp: 返回新创建task Id
前置依赖
用户已登录
archiveCaseToTask
用途
将上传官方云存储case归档到task
定义rpc archiveCaseToTask (ArchiveCaseToTaskReq) returns (ArchiveCaseToTaskRsp) {}
参数
ArchiveCaseToTaskReq: 归档请求,需要填写任务Id和Case ID
返回值
ArchiveCaseToTaskRsp: 返回值占位符,无实际意义
前置依赖
用户已登录
shareCase
用途
分享上传到官方云储存case数据
定义rpc shareCase (ShareCaseReq) returns (ShareCaseRsp) {}
参数
ShareCaseReq: 分享的case id和分享有效时间(单位分钟,0代表永不过期)
返回值
ShareCaseRsp: 返回分享后的查看case 链接和查看密码
前置依赖
用户已登录
killServer
用途
停止PerfDogService
定义rpc killServer (Empty) returns (Empty) {}
参数
Empty: gRPC参数占位符,无实际意义
返回值
Empty: gRPC返回值占位符,无实际意义

性能测试技术交流群:720150565

查看PerfDog详情:https://perfdog.qq.com/?ADTAG=media.dev_website

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java实用教程——组件及事件处理——布局管理(五种)

1.流式布局FlowLayout public void pack()调整此窗口的大小,以适合其子组件的首选大小和布局。如果该窗口或其所有者仍不可显示,则两者在计算首选大小之前变得可显示。在计算首选大小之后,将会验证该Window。窗口自动适应大小,使…

个人博客前端模板_腾讯前端开发工程师,教你极速搭建一个个人博客网站

作者: bookerzhao,腾讯 CSIG web前端开发工程师Github 为开源项目提供了用于静态页面展示的 Pages 服务,很多开发者都在上面托管了自己的静态网站和博客,不少开源项目的案例和文档页面也采用了这种方式。不过由于 Pages 的 CDN 节…

云原生时代 给予.NET的机会

.NET诞生于与Java的竞争,微软当年被罚款20亿美元。Java绝不仅仅是一种语言,它是COM的替代者!而COM恰恰是Windows的编程模型。而Java编程很多时候比C编程要容易的多,更致命的是他是跨平台的。微软所推行.NET战略,并且C#…

java实用教程——组件及事件处理——布局的一个小实例

import javax.swing.*; import java.awt.*;public class BasicComponentDemo {Frame frame new Frame("这里测试基本组件");//定义一个按钮Button ok new Button("确认");//定义一个复选框组CheckboxGroup cbg new CheckboxGroup();//定义一个单选框&am…

非极大值抑制_非极大值抑制(non-maximum suppression)

摘自https://blog.csdn.net/qq_38906523/article/details/80195119摘自https://blog.csdn.net/xiexu911/article/details/80609298非极大值抑制NMS在目标检测,定位等领域是一种被广泛使用的方法。对于目标具体位置定位过程,不管是使用sliding Window还是…

TIOBE12月榜单:Java重回第二,Python有望四连冠年度语言

喜欢就关注我们吧!文|白开水TIOBE 公布了 2020 年 12 月的编程语言排行榜。TIOBE 将在下个月公布 2020 年的年度编程语言,一年内排名率增长最高的编程语言将获得这一称号。目前,Python 以 1.90% 数据遥遥领先。其次分别是 C(0.71%…

excel怎么在柱状图上加超链_如何让你的年终总结更符合领导心意,高薪员工必备的excel技能...

临近年底了,好多人都在写年终总结了,惯有的模式就是写一写这一年都做了哪些工作,有什么成绩,未来将如何完善等等......但是如何反应自己一年以来的成绩呢,如果单单是以文字的形式表述怕是不能让领导满意,甚…

java实用教程——组件及事件处理——对话框(dialog)

对话框: import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import java.awt.*; import java.awt.event.*;public class DialogDemo1 {public static void main(String[] args) {Frame frame new Frame("这里测试Dialog");Di…

Vue 凭什么成为 2020 年的一匹黑马

Vue 在前端开发中的火爆程度远超 React 和 Angular ,无论是 BAT 等大厂,还是小型初创公司,Vue 都有着广泛的应用,其相关技术原理也是面试的必考知识点。Vue 的优势太过明显:基于 HTML 的模板语法,响应式的更…

python——学习笔记1

推荐阅读: 爆肝十二万字《python从零到精通教程》 Python菜鸟教程 1.python 的输入输出: 输入:input() 输出:print() 输出不换行:print(x,end"") 数据要和字符串同时输出的时候需要将数据转化为字符串类…

开源C# Winform控件库《SunnyUI》强力推荐

本站(https://dotnet9.com)曾介绍过一款Winform开源控件库《HZHControls》,文章发布后不少朋友热情的咨询相关控件库信息,由此看来Winform在大家心中的地位还是挺高的。今天小编再分享一款新鲜出炉的 Winform 控件库库——SunnyUI,一起跟 Dot…

python——学习笔记2

python的数据结构 字符串: 字符串小写转大写: 字符串大写转小写: 删除空格: 空白是实际文本之前和/或之后的空间,通常您想删除这个空间。 strip()方法从开头或结尾删除任何空格: 替换字符串: replace()方…

庐山真面目之一 微服务的简介和技术栈

一、简介 这些年软件的设计规模越来越庞大,业务需求也越来越复杂,针对系统的性能、高吞吐率、高稳定性、高扩展等特性提出了更高的要求。可以说业务需求是软件架构能力的第一推动力,由于这些因素导致了软件架构思想和相关技术也在发生…

.net 读蓝牙数据_Linux内核曝严重蓝牙漏洞,影响多个版本

谷歌安全研究人员在Linux Kernel中发现了一组蓝牙漏洞(BleedingTooth),该漏洞可能允许攻击者进行零点击攻击,运行任意代码或访问敏感信息。BleedingTooth漏洞分别被命名为CVE-2020-12351,CVE-2020-12352和CVE-2020-24490。其中最严重的漏洞是…

python——学习笔记3

日期: Python 日期和时间 函数: python 传不可变对象实例

算法题目——电梯(HDU-1008)

题目链接&#xff1a;HDU-1008 上楼&#xff1a;输入俩楼层之差 * 6s 停留层的5s 下楼&#xff1a;输入俩楼层之差 * 4s 停留层的5s #include<iostream> #include<vector>using namespace std; int main() {vector<int> vec;//用于存储每次的楼层数 vector…

.NET 云原生架构师训练营(模块二 基础巩固 引入)--学习笔记

2.1 引入http协议web server && web application framework.net 与 .net core asp .net coreweb api 示例CS&#xff1a;客户端-服务器BS&#xff1a;浏览器-服务器2.1.1 http协议请求过程消息结构请求方法状态码header请求过程1.URL解析2.DNS查询3.TCP连接4.处理请求5…

spss因子分析结果解读_因子分析巴特利特球形度检验结果解读

因子分析时&#xff0c;一般根据KMO和巴特利特检验的结果来判断数据是否适合做因子分析。那么巴特利特检验结果如何解读呢&#xff1f;既然是假设检验&#xff0c;必定有原假设和备择假设&#xff0c;只需要搞清楚假设是什么&#xff0c;也就知道应该如何解读了。百度百科上是这…

算法题目——质量(POJ-1862)

题目链接&#xff1a;POJ-1862 再说一遍&#xff1a;STL大法好&#xff0c;贪心算法 优先队列(大根堆) #include<iostream> #include<queue> #include<math.h> using namespace std;int main() {priority_queue<float> pqueue;int n;cin>>n;fl…

理解 redis 中的 集合对象类型

这篇我们来看看Redis五大类型中的第四大类型&#xff1a;集合类型&#xff0c;集合类型还是蛮有意思的&#xff0c;第一个是因为它算是只使用key的Dictionary简易版&#xff0c;这样说来的话&#xff0c;它就比Dictionary节省很多内存消耗&#xff0c;第二个是因为它和C#中的Ha…