# OH_Telemetry **Repository Path**: tianlongdev/oh_-telemetry ## Basic Information - **Project Name**: OH_Telemetry - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-04-08 - **Last Updated**: 2024-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Web_Telemetry_Benchmark #### 介绍 `Web Telemetry` 是 `Google` 相关的一系列 `Benchmark` 测试框架,主要是基于Web浏览器上运行相关性能测试页面获取Web性能指标并记录,本需求重点分析`Telemetry`的详细规格,完成`Telemetry`开源部分`OpenHarmony`自动化测试及报表生成,并将其适配和迁移至`OpenHarmony`项目上。为后续查看浏览器性能提供便利。 #### 准备设备 1. `windows` 电脑一台(推荐`win10`系统), 通过 `Mocrosoft store` 安装 `ubuntu` 系统, 简称 `wsl` 2. 有一台已经有 `root` 权限的`Android`手机, 并且手机上下载 `Chrome` 浏览器: 测试 `Android 系统` (`Android`仅支持与`Linux` 联调) 3. `rk` 板, 系统 `OpanHarmony 5.0` 及以上: 测试 `rk` 板 4. `phone` 设备, 系统 `OpanHarmony 5.0` 及以上: 测试 `phone` 设备 5. 无线网卡, 需要插在电脑上创建热点, 测试 `rk` 和 `phone` 设备需要使用到 #### 环境搭建 1. `Deveco studio` 安装(**用来编辑和便捷安装hap包, 可忽略**), 下载地址为 [Dev Studio](https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v4.0-release.md#https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2F9a%2Fv3%2FHBD3TfhiT_GFqeX44Qcwtg%2Fdevecostudio-windows-4.0.0.600.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20231027T004333Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D279824A013505EFC063997614DC1B6AB1C3A2EE5AC48CEF15DDB3E1F79DA435A), 版本为`Deveco studio 4.0.0.600`或者最新版本(如图) ![ecfa8ccfc2bf4b8393e3e250ca1d1136](OH/doc/asserts/Dev.png) 2. 安装或者配置 `hdc` 1. **推荐** 如果已经安装 `Deveco studio`, 可以通过下面步骤找到 1. 通过 Deveco studio 打开任意项目, 点击 Settings -> SDK -> 右侧选择OpenHarmony, 2. 复制 Location: 对应的地址, 在文件资源管理器中打开该路径, 3. 并找到该路径下的 \10\toolchains 的文件夹 4. 将 toolchains 文件夹的绝对地址添加到系统的环境变量中 可参考下图: ![](OH/doc/asserts/deveco_sdk_path.png) 2. 如果是下载好的安装 `hdc` 用的 `toolchains` 文件夹, 放置在你想保存的位置, 复制该路径添加到系统的环境变量中 3. 验证是否已经成功安装 `hdc` # 验证是否已经安装 hdc, 正常能输出 hdc 对应的版本则是安装成功 hdc --version 2. 安装完成 `wsl`之后打开,在 `wsl` 中安装 `adb`,有则忽略。 # 安装 adb sudo apt update sudo apt install adb # 验证 adb adb --version # 列出可以允许测试的安卓设备 adb devices 注意: 这一步即使连接上 `Android` 设备, 也可能无法识别出来设备, 可参考 **问题及解决方案** 3. 确保电脑和测试设备通过数据线进行连接(如果是 `rk` 或者 `phone` 还需要, 确保无线网卡插在电脑上, 并且开启热点功能, 让测试设备连接热点) 4. 查看本机(`windows`)的`ip`地址,可以通过`cmd` 或者`PowserShell` 输入命令 `ipconfig` 进行查看(`cmd`或`PowserShell`打开方式可以为键盘上的 `win + R`, 输入对应的名字即可 ), 结果如下图: ![a3c416970ec44b5bb61666d59ab78651](OH/doc/asserts/ip.png) 5. 配置本机和设备端的 `hosts`, 本机 `host`的`path`为:`C:\Windows\System32\drivers\etc\hosts`, 在本机 `hosts` 文件中添加上一步获取到的 `ip` 映射为 `telemetry`, # 为上面步骤获取到的 ip telemetry # 示例如下 10.100.10.123 telemetry 6. 在 `RK` 板 或者`phone`设备进行测试, 需要将 `windows` 电脑上的 `hosts` 文件导入设备的 `/etc/hosts` 路径下, 在 `windows` 上操作如下(可是使用 `cmd` 或者 `PowerShell` ): # 给设备添加读写权限 hdc shell mount -rw -o remount / # 将修改过的 host 文件 push 到设备 hdc file send C:\Windows\System32\drivers\etc\hosts /etc/ 7. 设置设备常亮 hdc shell power-shell setmode 602 ### 使用教程 1. 进入 `wsl`, 然后下载代码(可以直接下载在`wsl`中的 `home//` 路径下), 从 `git` 仓库拉取代码 # 1. 安装 git ( 已经安装请忽略 ) sudo apt install git # 验证 git git --version # 需要注意的是:首次使用需要配置 name, Email git config --global user.name '你的用户名' git config --global user.email '你的邮箱' # 2. 下载代码 git clone <仓库地址> 2. 安装 `hdc`(有则忽略),可以使用准备好的压缩包, 路径如下: /OH/doc/toolchains-linux-x64-5.0.0.18-Canary2.zip 解压之后的文件夹名字为 `toolchains`, 进入文件夹, # 进入文件夹 cd toolchains 通过`ll` 命令查看是否有权限,没有的话添加权限。 sudo chmod +x hdc 添加全局变量 # sudo ln -s <需要添加地址> sudo ln -s /home///OH/doc/toolchains/hdc /usr/local/bin/hdc 验证是否连接成功,有值说明连接成功 hdc list targets 上一步操作中可能会有报错情况, 如下图: ![a3c416970ec44b5bb61666d59ab78651](OH/doc/asserts/wsl_hdc_error.png) 具体修改命令行如下: sudo apt install libatomic1 修改之后再次尝试 `hdc list targets` 如果有结果, 则证明安装成功 3. 安装依赖包 # 1. 安装 pip (如果已经安装, 请忽略) sudo apt updata sudo apt install python3-pip # 验证pip 是否安装成功 pip --version # 2. 安装项目需要的依赖包 pip install -r requirements.txt 如果出现 `time out` 类型的错误, 可以指定国内的镜像源进行安装, 比如清华源, 示例如下: pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple 如果某个依赖安装失败, 可以参考下面命令进行安装 sudo apt install python3-xxx 4. 端口映射 # 在 windows 上的命令行工具进行端口映射 netsh interface portproxy add v4tov4 listenport=8003 listenaddress=0.0.0.0 connectport=8003 connectaddress=<本机地址> # 查看是否映射成功 netsh interface portproxy show v4tov4 # 删除不需要的映射 netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=8003 # 注意事项: # 若端口修改的话,如下地方也需要修改: # 1. hap包 # 2. android/third_party/blink/perf_tests/resources/runner.js文件, # 3. config.ini文件 5. 在需要测试的设备上安装 hap包 1. 通过 `Deveco studio`直接安装 - (推荐) 2. 通过命令安装已有hap包 - **很可能因为签名问题导致安装失败** # hap 包路径 /hap/entry-default-signed.hap # 安装命令 hdc app install /hap/entry-default-signed.hap 6. 在普通用户下,需要给文件添加权限来创建目录(root用户有权限的话不需要操作) sudo chmod 777 -R 7. 执行程序 参考下面 **定时任务-> 参数说明**, 修改对应的参数 然后执行需要测试的用例: # 进入代码根目录 cd # 开始执行测试 python3 scheduled_task.py # 或者让测试用例后台运行 nohup python scheduled_task.py >/dev/null 2>&1 & # 执行日志 在当前目录, 文件名 python_scheduling.log # 停止定时调度任务,使用下列命令,查看 pid 号,使用 kill -9 ps aux | grep scheduled_task # 如果相单独测试某个用例, 可以在修改完 `config.ini` 文件之后, 在项目根目录执行下面命令完成测试 python3 OH/main.py 安卓的执行可以参考:[run_benchmarks_locally.md](https://chromium.googlesource.com/catapult/+/HEAD/telemetry/docs/run_benchmarks_locally.md) 8. 合并html文件 在 `wsl` 环境下 cd 示例: cd web_-telemetry_-benchmark/ python3 ./compare_report/merge.py manual_merge 示例: python3 ./compare_report/merge.py manual_merge ./android/report/results_html/android.html ./OH/rk.html type_one="android" type_two="rk" 在 `pycharm` 中 修改compare_report/merge.py中main方法下的manual_merge函数中的参数(路径为绝对路径),点击右键,运行即可。 9. 每个用例消耗时间,csv文件的生成 `Android` 执行完会生成,路径:`android/report/case_run_time/日期.csv` `OH` 执行完后生成,路径:`OH/report/case_run_time/日期.csv` 10. 导出劣化指标 在`pycharm`中 将`export_face.py`中修改`html`文件路径(绝对路径),`chromedeiver`路径,点击右键,点击运行即可。 ##### **定时任务** 路径:/scheduled_task.py 1. 参数说明 `device`: 测试设备,如 `rk`,`phone`,`android`。示例:`device = 'rk'` `run_times`: 运行次数。示例:`run_times = 5` `rk_noh_cmd`: rk/phone上的执行命令。示例:`rk_noh_cmd = f'python main.py {device}'` `android_cmd`: android上的执行命令。示例:`android_cmd = f'python run_benchmark blink_perf --browser=android-system-chrome'` `hour`: 开始小时数,24小时制。示例:`hour = '22'` `minute`: 开始分钟数。示例:`minute = '45'` 2. 在根目录下运行定时任务,运行时需要将`OH/config.ini`中的`scheduled_task`改为`True`。 nohup python scheduled_task.py >/dev/null 2>&1 & #### config 字段解释 1. `host`:主机地址 。示例:`host = “0.0.0.0”` 2. `port`:端口号,服务端的端口。示例:`port = 8003` 3. `debug`:debug模式。示例:`debug = False` 4. `case_type`:测试类型,分为三种,分别是ALL 全部, `PART`,测试套,`SINGLE` 单个 `case`。示例:`case_type = "PART"` 5. `case_dir`:配置单个测试套。示例:`case_dir = “css”` 6. `case`: 配置单个测试用例。示例:`case = r"android\third_party\blink\\perf_tests\css\ChangeStyleChildElementSelectors.html"` 7. `start_case`:中断后可以从该用例开始执行。示例:`start_case = "android\third_party/blink/perf_tests/css/ChangeStyleChildElementSelectors.html"` 8. `pack_name`:hap包名 9. `start_app`:hdc命令启动hap应用。示例:`START_APP = "hdc shell aa start -a EntryAbility -b com.example.myapplication"` 10. `stop_app`:`hdc` 命令强制停止 `hap` 应用。示例:`STOP_APP = "hdc shell aa force-stop com.example.myapplication"` 11. `clean_data_rk` :`hdc` 命令清除RK板的缓存数据。示例:`clean_data_rk = 'hdc shell bm clean -n com.example.myapplication -c'` 12. `architectures`:`hdc` 命令查询系统内核。示例:`architectures = hdc shell uname -a` 13. `system_version`:`hdc` 命令查询系统版本。示例:`system_version = hdc shell param get const.product.software.version` 14. `device_name`:设备名称,有 `rk`,`phone`。示例:`device_name = rk` 15. `cache_data_clean_flag`:清除 `RK` 板的缓存数据标识,默认不清除,`False` 代表清楚。示例:`cache_data_clean_flag = True` 16. `save_logger_file_count`:默认保存的日志数目。示例:`save_logger_file_count = 10` 17. `current_test_case_time`:当前测试用例默认执行最长时间。示例:`current_test_case_time = 60` 18. `reset_results`:是否丢弃上次结果,True代表是,False代表否。示例:`reset_results = True` 19. `fail_run_times`:用例失败后再次运行的次数,示例:`fail_run_times = 1` 20. `scheduled_task`: 是否开启定时任务。示例:`scheduled_task = False` #### 问题及解决方案: ##### 1. `WSL` 安装碰到的问题 安装WSL的时候下载比较慢, 请耐心等待, 安装完成之后直接打开, 可能会报错, 如下图: ![WSL 安装过程中碰到的问题](OH/doc/asserts/wsl_error.png) 这个是因为系统未安装Windows子系统支持, 解决方法, [参考文档](https://blog.csdn.net/A_With_better/article/details/123850530): 办法一 1. 键盘行按键win+x,选择Windows PowerShell(管理员)输入: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 2. 回车输入Y并重启电脑。 重启打开Ubuntu的命令窗口,等几分钟,输入账户和密码即可。 方法二 (**推荐**), 控制面板打开也行, 如下图, 配置之后需要重新启动电脑 ![为安装wsl, 电脑修改配置如下](OH/doc/asserts/wsl_edit.png) ##### 2. 连接android手机,`wsl`输入`adb devices`未找到设备 办法一 : `wsl`中输入 `adb devides` 可能有些时候会出现设备号为空的情况, 可以安装下面步骤尝试, 参考方案, [wsl中adb devices找不到设备解决方案](https://blog.csdn.net/yjunyu/article/details/130379401): 1. 在终端中执行 which adb.exe,找到adb.exe对应的路径 2. ln -sf adb.exe对应的路径 /usr/bin/adb 办法二: 在 `windows` 下下载 `adb` 工具( [adb 下载地址](https://dl.google.com/android/repository/platform-tools-latest-windows.zip)), 下载解压之后, 通过 `cmd` 在该文件夹路径下, 执行 `adb devices`, 如果有结果, 说明已经安装成功, 接着在 `wsl` 中重新尝试 `adb devices` ##### 3. 待定