diff --git a/component/LkpTests/build_lkp_tests_all.sh b/component/LkpTests/build_lkp_tests_all.sh index dcae1fc6c85dba012f191b716e966c8f6d204156..4756c68ca315f2e95bce2940156e7e93fbc8e140 100644 --- a/component/LkpTests/build_lkp_tests_all.sh +++ b/component/LkpTests/build_lkp_tests_all.sh @@ -13,7 +13,7 @@ function main() { fi cd ${current_dir}/compatibility_help/ - wget -c https://mirrors.huaweicloud.com/kunpeng/archive/compatibility_testing/compatibility_testing.tar.gz + wget -c https://gitee.com/jerry-553/lkp_test_devkitpipeline/releases/download/lkp-all-resource/compatibility_testing.tar.gz if [[ "$?" -ne "0" ]]; then exit 1 fi diff --git a/component/LkpTests/compatibility_help/compatibility_help.sh b/component/LkpTests/compatibility_help/compatibility_help.sh index f43798482b6333b7879cc763ba20c88338fad237..6c8dfdcde1652ad4951cb8cc3a221b9e771f543e 100644 --- a/component/LkpTests/compatibility_help/compatibility_help.sh +++ b/component/LkpTests/compatibility_help/compatibility_help.sh @@ -8,20 +8,6 @@ function main() { upload_path=$2 cd ${save_path} - tar -zxf ${save_path}/compatibility_testing.tar.gz - rm -rf ${save_path}/compatibility_testing/Chinese/compatibility_testing.sh - /bin/cp -rf ${save_path}/compatibility_testing.sh ${save_path}/compatibility_testing/Chinese/compatibility_testing.sh - echo "download cloudTest" - wget -c https://gitee.com/jerry-553/lkp_test_devkitpipeline/releases/download/cloud-test/cloudTest.jar - /bin/cp -rf cloudTest.jar ${save_path}/compatibility_testing/ - /bin/cp -rf ${save_path}/json2html.py ${save_path}/compatibility_testing/ - /bin/cp -rf ${save_path}/template.html.bak ${save_path}/compatibility_testing/ - /bin/cp -rf ${save_path}/report_result.sh ${save_path}/compatibility_testing/ - /bin/cp -rf ${save_path}/check_report_result.py ${save_path}/compatibility_testing/ - /bin/cp -rf ${save_path}/compatibility_testing/template.html.bak ${save_path}/compatibility_testing/template.html - echo "tar -zcf compatibility_testing.tar.gz ./compatibility_testing" - tar -zcf compatibility_testing.tar.gz ./compatibility_testing - echo "/bin/cp -rf compatibility_testing.tar.gz ${upload_path}" /bin/cp -rf compatibility_testing.tar.gz ${upload_path} } diff --git a/component/LkpTests/lkp_help/lkp_help.sh b/component/LkpTests/lkp_help/lkp_help.sh index 0de5e8f2df104c6b6a93b933a1528717101a91c4..3d650bdfd489acfe4141339e2262db0ec0f3064e 100644 --- a/component/LkpTests/lkp_help/lkp_help.sh +++ b/component/LkpTests/lkp_help/lkp_help.sh @@ -11,22 +11,7 @@ function main() { rm -rf ${current_dir}/lkp-tests fi - git clone https://gitee.com/wu_fengguang/lkp-tests.git - if [[ "$?" -ne "0" ]]; then - exit 1 - fi - - cd lkp-tests - git apply ${current_dir}/devkit-pipeline.patch - /bin/cp -rf ${current_dir}/compatibility-test ${current_dir}/lkp-tests/programs/compatibility-test - dos2unix ${current_dir}/lkp-tests/programs/compatibility-test/run - if [[ "$?" -ne "0" ]]; then - exit 1 - fi - - cd ${current_dir} - echo "tar -zcf lkp-tests.tar.gz ./lkp-tests" - tar -zcf lkp-tests.tar.gz ./lkp-tests + wget -c https://gitee.com/jerry-553/lkp_test_devkitpipeline/releases/download/lkp-all-resource/lkp-tests.tar.gz if [[ "$?" -ne "0" ]]; then exit 1 fi diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/Gitlab\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256\350\277\201\347\247\273\343\200\201\344\272\262\345\222\214\351\227\250\347\246\201.md" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/Gitlab\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256\350\277\201\347\247\273\343\200\201\344\272\262\345\222\214\351\227\250\347\246\201.md" index 967715d344bd65e92762c351c3bdcc50aa6e114e..fe222ad8a7c82a73c04155525970e97abe6ffd16 100644 --- "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/Gitlab\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256\350\277\201\347\247\273\343\200\201\344\272\262\345\222\214\351\227\250\347\246\201.md" +++ "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/Gitlab\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256\350\277\201\347\247\273\343\200\201\344\272\262\345\222\214\351\227\250\347\246\201.md" @@ -80,43 +80,6 @@ source-code-migration: | -l/--log-level | 0,1,2,3 | 可选参数。设置日志级别。0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | | -r/--report-type | all,json,html,csv | 可选参数。 扫描报告的格式。默认为all,选择all的时候json、csv和html报告都会生成。 | | --ignore | /opt/ignore.json | 可选参数。屏蔽扫描规则信息。 | - - -##### 系统迁移: -``` -stages: - - build - - migrating-applications - -system-migration: - stage: migrating-applications - tags: - - kunpeng_builder # 对应gitlab-runner注册时的标签,可选择多个 - script: - - echo '====== 系统迁移 ======' - - devkit porting sys-mig -o ./ || [ $? -eq 1 ] && echo 'Warning:扫描报告包含建议项' - - # 示例 devkit porting sys-mig -c stmt -cf porting/resources/sysmig default.conf -o ./ || [ $? -eq 1 ] && echo 'Warning:扫描报告包含建议项' - artifacts: - paths: - - s*.* - - -``` -具体参数如下(均为可选参数) -| 参数 | 参数选项 | 说明 | -| ------------ | ------------ | ------------ | -| -c/--command | stmt/sbom | 收集信息的模式。stmt:收集台账信息。sbom:收集sbom信息。 | -| -cf/--config | configure_file_path | 输入参数配置文件路径。 | -| -d/--directory | scan_path | 输入扫描文件目录,支持输入多个目录,多个目录间以空格分隔。 | -| -t/--template | stmt_template_path | stmt模式参数,输入台账扫描结果模板路径,默认按照程序内置模板生成扫描结果。 | -| -o/--output | report_dir | 报告输出目录,默认为二进制所在report目录。 | -| -f/--format | html/json | sbom模式参数,输入生成报告格式,支持选择html、json格式,可以选择多个报告格式,默认为HTML格式,多个报告格式以空格间隔。 | -| -e/--exclude-fields | version/checkOutPath | sbom模式参数,表示需要隐藏的参数信息,可选参数范围:version和checkOutPath,支持同时选择。version表示成分版本号checkOutPath表示成分检出路径,多个参数信息以空格间隔。 | -| -v/--version | - | 展示程序版本信息,无输入参数。 | -| -h/--help | - | 帮助查询,无输入参数。 | -| -l/--log-level | 0,1,2,3 | 日志等级,可选参数:0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | - ##### 64位运行模式检查: ``` stages: @@ -134,7 +97,7 @@ stages: # 示例 devkit advisor mode-check -i /opt/DevKit/testcase/affinity/precheck/test005 -r html artifacts: paths: - - mode-check*.html # 文件后缀.html根据-r参数配置,也可配置为 mode-check*.* + - mode_check*.html # 文件后缀.html根据-r参数配置,也可配置为 mode_check*.* ``` diff --git "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" new file mode 100644 index 0000000000000000000000000000000000000000..c5c8999d5eda9c46c36244336e7f92ef88b81a1f --- /dev/null +++ "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" @@ -0,0 +1,484 @@ +
《devkit 测试平台安装使用以及与gitlab集成部署指导手册》
+ + + + + +[TOC] + +------ +测试平台使用的是lkp test 工具,以下均已lkp test描述测试平台 +## 一、lkp test 添加测试用例介绍 +### 样例 +如下目录中的文件,完整的添加了一个典型的测试用例memtier: + +``` +programs/memtier/jobs/memtier-dcpmm.yaml # 在job YAML里指定想跑的programs/params +programs/memtier/jobs/memtier.yaml # 可以预定义很多的jobs +programs/memtier/meta.yaml # memtier描述文件 +programs/memtier/PKGBUILD # memtier下载编译 +programs/memtier/run # memtier运行脚本 +programs/memtier/parse # memtier结果解析 +``` +如果加的program type属于monitor/setup脚本,则需要放到对应的monitors/, setup/目录下,而非programs/目录。 集中存放monitor/setup脚本,有利于他人查找和复用。 + +其中jobs/下的YAML文件,定义了memtier的各种常见运行参数、及与其它脚本的组合。 用户要跑其中的一个测试组合,典型步骤如下 + + +``` +# 把job YAML从矩阵描述形式分解为一系列原子任务 +$ lkp split memtier-dcpmm.yaml +jobs/memtier-dcpmm.yaml => ./memtier-dcpmm-1-cs-localhost-0-8-1-1-65535-never-never.yaml +jobs/memtier-dcpmm.yaml => ./memtier-dcpmm-1-cs-localhost-0-24-1-1-65535-never-never.yaml + +# 安装依赖,包括安装meta.yaml里depends字段描述的软件包,以及调用PKGBUILD +$ lkp install ./memtier-dcpmm-1-cs-localhost-0-8-1-1-65535-never-never.yaml + +# 运行任务,会调用其中指定的各run脚本,结果保存到/lkp/result/下一个新建的目录里 +# 结束后自动运行各parse脚本,提取各结果指标并汇集到stats.json +$ lkp run ./memtier-dcpmm-1-cs-localhost-0-8-1-1-65535-never-never.yaml +``` +### 概述 +一个测试用例一般涉及如下部分 + +``` +1) 基本信息说明 # meta.yaml metadata部分 +2) 安装哪些依赖 # meta.yaml depends字段 +3) 下载编译一些程序 # PKGBUILD脚本 +4) 对所在环境做哪些设置 # run脚本 (type=setup) +5) 监控系统的一些状态 # run脚本 (type=monitor) +6) 运行哪些程序,以什么参数运行 # run脚本 (type=workload) +7) 怎么解析结果,抽取度量指标 # parse脚本 +``` +为了实现最大的灵活性、可复用性,我们以job-program-param三层模型来组织测试用例。 一个job YAML的典型内容为 + +``` +monitor_program1: +monitor_program2: +... +setup_program1: + param1: + param2: +setup_program2: + param1: +... +workload_program1: + param1: +workload_program2: + param1: + param2: +``` +其中每个脚本只做一件事,这样组合起来会很灵活和强大。monitor/setup programs的可复用性就很好。 + +用户跑一个用例的入口是job,可以自己书写job,也可以使用jobs/目录下预定义的job。 当运行一个job时,lkp会找到job中指定的各类programs,以指定的params key/val为环境变量,执行各program。 确切的规则如下 + +``` + +# job YAML 内容 + + $program: + param1: val1 + param2: val2 + +# lkp install job 执行的伪代码 + + find programs/$program/meta.yaml or + programs/**/meta-$program.yaml + + for each package in meta YAML's depends field: + check install package RPM/DEB + if OS has no such package: + find programs/$package/PKGBUILD or + programs/**/PKGBUILD-$package + makepkg for the first found one + +# lkp run job 执行的 shell 伪代码 + + # run + export param1=val1 + export param2=val2 + find programs/$program/run or + programs/**/run-$program + run the first found one, redirecting stdout/stderr to $RESULT_ROOT/$program + # parse + run its parse script < $RESULT_ROOT/$program | dump-stat to $RESULT_ROOT/$program.json + unite all $RESULT_ROOT/$program.json to $RESULT_ROOT/stats.json +``` +### 添加meta.yaml描述文件 +一个meta.yaml文件描述一个program,其结构如下 + +``` +metadata: + name: # 程序名 + summary: # 单行描述 + description: # 多行/多段详细描述 + homepage: # 脚本所调用程序的上游项目的主页URL +type: # monitor|setup|daemon|workload +monitorType: # one-shot|no-stdout|plain +depends: + gem: # ruby gem 依赖 + pip: # python pip 依赖 + ubuntu@22.04: # ubuntu 22.04的DEB包依赖 + openeuler@22.03: # openeuler 22.03的RPM包依赖 +pkgmap: # 各OS之间的包名映射,这样我们可以在depends里指定一个OS的完整依赖列表,通过少量包名映射来支持其它OS + archlinux..debian@10: + debian@10..openeuler@22.03: # 以下为两个样例 + dnsutils: bind-utils + cron: cronie +params: # run脚本可以接受的环境变量参数,以下为样例 + runtime: + type: timedelta + doc: length of time, with optional human readable time unit suffix + example: 1d/1h/10m/600s + ioengine: + type: str + values: sync libaio posixaio mmap rdma +results: # parse脚本可以从结果中提取的metrics,以下为样例 + write_bw_MBps: + doc: average write bandwidth + kpi: 1 # weight for computing performance index; negative means the larger the worse +``` +### 添加job YAML +一般我们需要主要跑一个type=workload的program,同时再跑一些type=monitor/setup/daemon的programs,加上它们的参数,构成一个完整的测试用例。 我们用一个个的job YAML来描述这些测试用例。 + +所以预定义job YAML大体上可以按workload来组织,放在路径下 + +``` +programs/$workload/jobs/xxx.yaml +``` +当然也可以按更大粒度来组织,比如场景、测试类型等分类,此时可以放在路径下 + + +``` +jobs/$test_scene/xxx.yaml +jobs/$test_class/xxx.yaml +``` +以上预定义jobs的搜索路径,lkp框架代码都支持。具体path glob pattern是 + + +``` +programs/*/jobs/*.yaml +jobs/**/*.yaml +``` +### 添加程序 +Job YAML中引用的programs,需要您预先写好,lkp会在如下路径搜索其文信息/脚本: + + +``` +1st search path 2nd search path +programs/$program/meta.yaml programs/**/meta-$program.yaml +programs/$program/{run,parse} programs/**/{run,parse}-$program +programs/$package/PKGBUILD programs/**/PKGBUILD-$package +``` +程序一般添加到 programs/$program/ 目录下,具体添加以下几个脚本 + + +``` + +programs/$program/meta.yaml # 描述文件 +programs/$program/run # 接收/转换环境变量传过来的参数,运行目标程序 +programs/$program/parse # 解析结果(一般是run的stdout),输出metrics (YAML key/val) +programs/$program/PKGBUILD # 下载编译安装run调用的目标程序 +tests/$program => ../programs/$program/run # 创建符号链接 保持兼容 +``` +其中PKGBUILD仅必要时添加。parse一般在program type=monitor/workload时才需要。 + +一般一个program一个目录。但有时候client/server类型的测试,把workload+daemon programs放在一起比较方便。 此时可以参照sockperf,把sockperf-server daemon以如下方式添加到sockperf workload目录下: + +``` + +programs/sockperf/meta-sockperf-server.yaml +programs/sockperf/run-sockperf-server +``` +### 添加依赖 + +一个program的依赖表述为 + +``` + + programs/$program/meta.yaml + depends: + debian@10: + - $package1 + - $package2 + pkgmap: + debian@10..centos@8: # centos 8不自带$package2,映射为空 + $package2: + + programs/$program/PKGBUILD-$package1 + programs/$program/PKGBUILD-$package2 +``` +这里定义了两类依赖 1) OS自带的包 2) 需要从源码下载编译的包 当OS包含package1/package2时,lkp框架可自动安装对应的rpm/deb; 如果没有,再使用PKGBUILD-xxx构建出包。 + +例如,在debian 10中,lkp install会执行 + + +``` +apt-get install $package1 $package2 +``` +在在centos 8中,lkp install会执行 + +``` + +yum install $package1 +makepkg PKGBUILD-$package2 # 从源码下载编译 +``` +如您希望强制从源码编译下载,无论所在OS是否包含RPM/DEB包,那么可以通过指定PKGBUILD依赖 + +``` + +depends: + PKGBUILD: + - $package1 +``` +那么lkp install会无条件编译$package1 + +注意,PKGBUILD语义上对应一个package,而不是对应 +program。 这两者语义上不同,虽然很多时候两者内容是一样的。当内容一样时,比如 + +``` + +programs/$program/PKGBUILD-$package + +``` +也可以写为简化形式 + + +``` +programs/$program/PKGBUILD # when $package=$program + +``` +注意,PKGBUILD文件名及其内部depends/makedepends字段里的$package使用的是archlinux包名。 所以其它OS缺失此包,或者有此包,但是名字不一样的话,需要配置对应的pkgmap包名映射,或者加上OS后缀,比如 + + +``` +makedepends_debian_11=(lam4-dev libopenmpi-dev libmpich-dev pvm-dev) +``` + +### 示例-云测工具(compatibility-test) +1. 在programs 文件夹下创建compatibility-test文件夹,里面至少要包含以下几个文件,其余文件可以根据需求自行决定是否添加 +programs/compatibility-test/jobs/compatibility-test.yaml # 预定义compatibility-test的job,需要与文件夹名字一致 +programs/compatibility-test/meta.yaml # compatibility-test描述文件 +programs/compatibility-test/run # compatibility-test运行脚本 + +2. 文件内容详情 +programs/compatibility-test/jobs/compatibility-test.yaml: + +``` +suite: compatibility-test # 项目介绍 +category: functional # 项目类型(functional是只跑run脚本不会同时拉monitor监控应用,如果想同时使用monitor请写benchmark) + +file_path: /home/lj/test/compatibility_testing/Chinese # run 脚本的输入参数,如果有多个请写在下面compatibility-test:后 +compatibility-test: # run 脚本的输入参数, +# 如果同一参数有多个不同值需要运行,可以按照以下方式参考 +xxx: + parameter1: + - value1 + - value2 + + parameter2: + - value1 + - value2 +``` + +programs/compatibility-test/meta.yaml: +``` +metadata: + name: compatibility-test # 名字 + summary: A program can run some basic tests # 这个项目的总结 + description: run compatinility test and generate the report # 这个项目的介绍 + homepage: https://gitee.com/openeuler/devkit-pipeline # 项目的网址 +type: workload # 项目类型 +depens: # 项目依赖 +params: # 需要的参数 +results: # 需要对结果进行处理 +``` +programs/compatibility-test/run: +``` +# 这个文件是shell脚本,当使用lkp test命令去运行指定yaml的时候会把yaml的参数传入到run 文件中,请根据各自项目自行写此文件 +#!/bin/bash + +set -e +ct_sh_path=${HOME}/.local/compatibility_testing/Chinese/compatibility_testing.sh +cloud_jar=${HOME}/.local/compatibility_testing/cloudTest.jar + +cd ${HOME}/.local/compatibility_testing/Chinese/ +#sh $ct_sh_path + +#java -jar $cloud_jar & +#sleep 15 +#jar_pid=$! +#curl --location --request GET 'http://127.0.0.1:10037/api/v1/report?savePath=/'${HOME}'/.local/compatibility_testing/Chinese/log.json&file=/'${HOME}'/.local/compatibility_testing/Chinese/log.tar.gz' +#kill -9 $jar_pid +cp -rf ${HOME}/.local/compatibility_testing/template.html.bak /${HOME}/.local/compatibility_testing/template.html +cd ${HOME}/.local/compatibility_testing/ +python3 ${HOME}/.local/compatibility_testing/json2html.py + +``` +3. 必要步骤 +在完成此文件夹的创建后,依然还需要两步操作去让lkp命令找到指定的运行文件 + +``` +# 第一步 运行lkp slpit 命令去分隔jobs里面写的yaml文件,他会根据run文件以来的每个参数不同的输入值分成多个可执行的yaml文件, +例如 +lkp split programs/compatibility-test/jobs/compatibility-test.yaml +# 云测工具会得到输出 programs/compatibility-test/jobs/compatibility-test.yaml => ./compatibility-test-defaults.yaml,当我们每次更新jobs下面的yaml文件的输入参数后都需要重新运行 lkp split命令 +# 当我们lkp run的时候就要运行这个分隔后的yaml文件(在云测工具就是compatibility-test-defaults.yaml) +# 第二步 需要增加一个软连接 + +ln -s xxx/lkp-tests/programs/compatibility-test/run xxx/lkp-tests/tests/compatibility-test +``` +## 二、gitlab Pipeline 中集成lkp test (以云测工具(compatibility-test)为示例) +### 1. 流水线代码示例 +``` +stages: # List of stages for jobs, and their order of execution + - build + - test + - deploy + + +build-job: # This job runs in the build stage, which runs first. + stage: build + script: + - CURDIR=$(pwd) + - echo $CURDIR + - cp -rf /root/.local/compatibility_testing/template.html.bak /root/.local/compatibility_testing/template.html + - sudo /root/.local/lkp-tests/bin/lkp run /root/.local/lkp-tests/programs/compatibility-test/compatibility-test-defaults.yaml + - cp -rf /root/.local/compatibility_testing/compatibility_report.html $CURDIR/compatibility_report.html + - sudo sh /root/.local/compatibility_testing/Chinese/test_result.sh + - echo "请去 '${CURDIR}'/compatibility_report.html 查看报告 " + artifacts: + paths: + - compatibility_report.html # 文件后缀.html根据-r参数配置,也可配置为 src-mig*.* + tags: + - dlj # 对应gitlab-runner注册时的标签,可选择多个 +``` + +### 2. 创建流水线 +![创建Pipeline任务01](./images/gitlab创建项目.png)![创建Pipeline任务02](./images/gitlab创建项目2.png) +![创建Pipeline任务03](./images/gitlab创建项目3.png)![创建Pipeline任务04](./images/gitlab创建项目4.png) +![创建Pipeline任务05](./images/gitlab创建项目5.png) + + +## 三、FAQ + +### lkp install 遇到的问题 + +1. 报错,系统不支持 + ![](./images/10.PNG) + [解决方式]: + 环境变量中增加 LKP_SRC,路径和$LKP_PATH 一样 + export PATH=$PATH:/home/lj/lkp-tests/sbin:/home/lj/lkp-tests/bin:/home/lj/lkp-tests/sbin:/home/lj/lkp-tests/bin + export LKP_PATH=/home/lj/lkp-tests + export LKP_SRC=/home/lj/lkp-tests + +## 2. lkp test 任务创建指导 + +### 1. 文件介绍 + +[doc/add-testcase.zh.md · Fengguang/lkp-tests - Gitee.com](https://gitee.com/wu_fengguang/lkp-tests/blob/master/doc/add-testcase.zh.md) + +### 2. 必须的文件 + +run (可执行脚本) + +meta.yaml (介绍项目的详细信息) + +jobs 文件夹以及文件夹内需要包含一个与program同名的yaml文件 + + + +```shell +lkp split xxx.yaml # 这个yaml是jobs文件夹里的,在哪里执行这个命令,分割出来的任务就会在哪 +lkp run xxxx.yaml # 这个yaml是上一步分割完后生成的yaml +``` + +## 3. 离线安装指导 + + + +### 1.yum源配置 + +请配置everything的yum源 +[https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/ISO/aarch64/](https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/ISO/aarch64/) + +### 2.gem 配置 + +去[https://gems.ruby-china.com/](https://gems.ruby-china.com/) 下载以下gem依赖 +bundeler 2.2.33, diff-lcs 1.5.0, minitest 5.15.0 concurrent-ruby 1.1.10, docile 1.4.0, rchardet 1.8.0, +gnuplot 2.6.2, parallel 1.22.1, public_suffix 4.0.7, regexp_parser 2.6.0, rexml 3.2.5, ast 2.4.2, +rainbow 3.1.1, rspec-support 3.12.0, ruby-progressbar 1.11.0, unicode-display_width 2.3.0, +git 1.7.0, simplecov_json_formatter 0.1.4, simplecov-html 0.12.3, rspec-core 3.12.0, rspec-expectations 3.12.0, +rspec-mocks 3.12.0, i18n 1.12.0, builder 3.2.4, sync 0.5.0, tzinfo 2.0.5, rspec 3.12.0, ci_reporter 2.0.0, +ci_reporter_rspec 1.0.0, parser 3.1.2.1, tins 1.31.1, term-ansicolor 1.7.1, rubocop 1.12.1, simplecov 0.21.2, +simplecov-rcov 0.3.1 +将以上依赖放到 /usr/share/gems/gems +并执行gem install --local 安装以上依赖 + +### 3.环境变量 配置 + +export PATH=$PATH:lkptest路径/lkp-tests/sbin:lkptest路径/lkp-tests/bin:lkptest路径/lkp-tests/sbin:lkptest路径/lkp-tests/bin +export LKP_PATH=lkptest路径/lkp-tests +export LKP_SRC=lkptest路径/lkp-tests + +### 4.测试是否安装成功 + +```shell +lkp help +lkp install + +``` + +## 四、 云测工具 + +要运行云测平台需要配置参数,在安装目录${HOME}/.local/compatibility_testing/Chinese/compatibility_testing.conf + +```abap +################################################################################## +#功能描述: 提供给用户进行兼容性测试、性能测试的指标日志采集工具 +#版本信息: 华为技术有限公司,版权所有(C) 2020-2022 +#修改记录: 2022-08-17 修改 +#使用方法:自动化采集开始前,请用户先配置compatibility_testing.conf, +# 填写待测试应用名称application_names, +# 待测试应用启动命令start_app_commands, +# 待测试应用停止命令stop_app_commands +# 被测应用软件的压力测试工具启动命令start_performance_scripts, +# 确认填写后 +# CentOS/中标麒麟/SUSE/openEuler:使用root用户执行,sh compatibility_testing.sh。 +# Ubuntu/银河麒麟/UOS:使用root用户执行,bash compatibility_testing.sh。 +# 多节点集群部署,在每台节点服务器上配置对自身节点和其他所有节点的SSH免密登录。并在控制节点(主节点)执行脚本。 +################################################################################### + +# 待测试应用软件进程名称,多个应用名称以逗号隔开。 +# 可通过ps或者docker top 命令CMD所在列查找后台进程名称, Kubernetes集群环境下填写Pod名称。 +application_names= test1 #请填写应用启动后的进程名 +# 待测试应用软件启动命令,多个应用的启动命令以逗号隔开。 +start_app_commands= nohup python3 /xxx/test1.py & # 如果是多行命令请写到脚本里,由脚本拉起,如果命令不是后台运行,请添加nohup参数变成后台运行 +# 待测试应用软件停止命令,多个应用的停止命令以逗号隔开。 +stop_app_commands= # 应用软件停止命令 +# 被测应用软件的压力测试工具启动命令。 +start_performance_scripts= nohup python3 /home/lj/test2.py & +# Kubernetes集群填写"Y"。其他环境可置空。 +kubernetes_env= + +# 以下为多节点集群部署填写,单机(单节点)部署不需要填写。 +# 集群环境的IP地址列表,多个IP地址以逗号隔开,列表不应包括当前脚本所在服务器IP地址,请勿增加。 +cluster_ip_lists= + +# 以下为Validated认证测试填写,Compatible认证测试不需要填写。 +# CVE漏洞扫描目录,多个目录以逗号隔开,Validated认证测试有自己的CVE漏洞检查工具不需要填写。 +# 集群环境下, 非当前脚本所在服务器的目录填写为"IP:目录", 如192.168.2.2:/root/tomcat +cve_scan_path= +# clamav防病毒扫描目录,多个目录以逗号隔开,Validated认证测试有自己的商用杀毒软件不需要填写。 +# 集群环境下, 非当前脚本所在服务器的目录填写为"IP:目录", 如192.168.2.2:/root/tomcat +clamav_scan_path= + +# 以下为HPC应用方案认证填写,HPC应用测试填写"Y",其他应用认证测试可置空。 +hpc_certificate= + +# 以下为C/C++编译的应用填写,请填写待测试应用二进制文件的绝对路径。 +binary_file= + +``` + + diff --git "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..6f742dc036f9d7eabb725929f86046d2c47cbcea Binary files /dev/null and "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" differ diff --git "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\273\245\345\217\212\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\273\245\345\217\212\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" index 075462a937d8cc1259727c651cbe4e14a47ccab5..7b9cc967c08e7a72dac7c48e9a272d084d15fedd 100644 --- "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\273\245\345\217\212\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" +++ "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\273\245\345\217\212\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" @@ -385,77 +385,6 @@ stage('lkp test') { ---- ## 二、FAQ -## 1. 联网安装指导 - -### 权限 - -lkp test 运行需要root用户运行,所以在自动化的过程中有一个切root的操作 - -### 安装教程 - -[https://docs.openeuler.org/zh/docs/22.09/docs/certification/%E6%B5%8B%E8%AF%95%E6%A0%87%E5%87%86%E5%92%8C%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7.html](https://docs.openeuler.org/zh/docs/22.09/docs/certification/%E6%B5%8B%E8%AF%95%E6%A0%87%E5%87%86%E5%92%8C%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7.html) - -### 证书问题 - -![](./images/1.png) -[解决方式]:[https://developer.baidu.com/article/details/2821747](https://developer.baidu.com/article/details/2821747) - -[配套镜像源]: (http://mirrors.aliyun.com/rubygems/) - -### make install 遇到的问题 - -1. 未从更新后的镜像源拉取资源 - ![](./images/2.png) - [解决方式]: - -![](./images/3.png) -将 lib/install.sh里第8行替换为可用的镜像源,以及可以屏蔽掉10-12行中不可用的镜像源 - -2. 卡死报错 - ![](./images/4.png) - -![](./images/5.png) - -[解决方式]: -安装bundler -首先运行 - -```shell -cat Gemfile.lock | grep -A 1 "BUNDLED WITH" -``` - -![](./images/6.png) -安装相同版本 - -```shell -gem install bundler -v 2.2.33 -``` - -3. 为更新gem缓存导致更新的镜像源未生效 - ![](./images/7.png) - [解决方式]: - -```shell -# 运行命令,删除无效镜像源 -gem source -# 在更新镜像源后需要更新gem缓存,让更新的镜像源生效 -gem source -u -``` - -4. bundle镜像源配置问题 - ![](./images/8.png) - [解决方式]: - -```shell -# 替换bundle镜像源 -bundle config mirror.https://rubygems.org https://mirrors.aliyun.com/rubygems -``` - -5. 安装超时报错 - ![](./images/9.png) - [解决方式]: - -安装时间过长,连接冲断,重新运行make install即可解决 ### lkp install 遇到的问题 @@ -522,3 +451,56 @@ export LKP_SRC=lkptest路径/lkp-tests lkp help lkp install ``` +## 四、 云测工具 + +要运行云测平台需要配置参数,在安装目录${HOME}/.local/compatibility_testing/Chinese/compatibility_testing.conf + +```abap +################################################################################## +#功能描述: 提供给用户进行兼容性测试、性能测试的指标日志采集工具 +#版本信息: 华为技术有限公司,版权所有(C) 2020-2022 +#修改记录: 2022-08-17 修改 +#使用方法:自动化采集开始前,请用户先配置compatibility_testing.conf, +# 填写待测试应用名称application_names, +# 待测试应用启动命令start_app_commands, +# 待测试应用停止命令stop_app_commands +# 被测应用软件的压力测试工具启动命令start_performance_scripts, +# 确认填写后 +# CentOS/中标麒麟/SUSE/openEuler:使用root用户执行,sh compatibility_testing.sh。 +# Ubuntu/银河麒麟/UOS:使用root用户执行,bash compatibility_testing.sh。 +# 多节点集群部署,在每台节点服务器上配置对自身节点和其他所有节点的SSH免密登录。并在控制节点(主节点)执行脚本。 +################################################################################### + +# 待测试应用软件进程名称,多个应用名称以逗号隔开。 +# 可通过ps或者docker top 命令CMD所在列查找后台进程名称, Kubernetes集群环境下填写Pod名称。 +application_names= test1 #请填写应用启动后的进程名 +# 待测试应用软件启动命令,多个应用的启动命令以逗号隔开。 +start_app_commands= nohup python3 /xxx/test1.py & # 如果是多行命令请写到脚本里,由脚本拉起,如果命令不是后台运行,请添加nohup参数变成后台运行 +# 待测试应用软件停止命令,多个应用的停止命令以逗号隔开。 +stop_app_commands= # 应用软件停止命令 +# 被测应用软件的压力测试工具启动命令。 +start_performance_scripts= nohup python3 /home/lj/test2.py & +# Kubernetes集群填写"Y"。其他环境可置空。 +kubernetes_env= + +# 以下为多节点集群部署填写,单机(单节点)部署不需要填写。 +# 集群环境的IP地址列表,多个IP地址以逗号隔开,列表不应包括当前脚本所在服务器IP地址,请勿增加。 +cluster_ip_lists= + +# 以下为Validated认证测试填写,Compatible认证测试不需要填写。 +# CVE漏洞扫描目录,多个目录以逗号隔开,Validated认证测试有自己的CVE漏洞检查工具不需要填写。 +# 集群环境下, 非当前脚本所在服务器的目录填写为"IP:目录", 如192.168.2.2:/root/tomcat +cve_scan_path= +# clamav防病毒扫描目录,多个目录以逗号隔开,Validated认证测试有自己的商用杀毒软件不需要填写。 +# 集群环境下, 非当前脚本所在服务器的目录填写为"IP:目录", 如192.168.2.2:/root/tomcat +clamav_scan_path= + +# 以下为HPC应用方案认证填写,HPC应用测试填写"Y",其他应用认证测试可置空。 +hpc_certificate= + +# 以下为C/C++编译的应用填写,请填写待测试应用二进制文件的绝对路径。 +binary_file= + +``` + + diff --git "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\273\245\345\217\212\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\273\245\345\217\212\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" index 02fc3958a77df333974bbb54f92002b45172447a..d23601389ff64cc68ccc12994df4c410ec6fba24 100644 Binary files "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\273\245\345\217\212\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" and "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\273\245\345\217\212\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" differ diff --git "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\256.png" "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\256.png" new file mode 100644 index 0000000000000000000000000000000000000000..615b146abe2dcc85d872d9314fbff84074b866e0 Binary files /dev/null and "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\256.png" differ diff --git "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2562.png" "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2562.png" new file mode 100644 index 0000000000000000000000000000000000000000..96a2cb8d5d83ae93b8c1ff3cff01f5bf7291d08f Binary files /dev/null and "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2562.png" differ diff --git "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2563.png" "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2563.png" new file mode 100644 index 0000000000000000000000000000000000000000..47ad73400149fdfc2334f9eab9d46198a5136ce8 Binary files /dev/null and "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2563.png" differ diff --git "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2564.png" "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2564.png" new file mode 100644 index 0000000000000000000000000000000000000000..9f6f67001db7faeb51f93abd7d4ffcc77188ef17 Binary files /dev/null and "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2564.png" differ diff --git "a/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2565.png" "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2565.png" new file mode 100644 index 0000000000000000000000000000000000000000..6fc5ac3e780ffb249a8fc1aae1a4b315674a25ba Binary files /dev/null and "b/document/lkp-test\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2565.png" differ diff --git a/tools/download_dependency/lkp_help/lkp_test_download.sh b/tools/download_dependency/lkp_help/lkp_test_download.sh index cacf7f48258c733e1a42c91c498e70d8dfe73c68..dd0b99e1bd1084a37c2d7f0d2dc4f27e531118b1 100644 --- a/tools/download_dependency/lkp_help/lkp_test_download.sh +++ b/tools/download_dependency/lkp_help/lkp_test_download.sh @@ -6,12 +6,7 @@ current_dir=$(cd $(dirname $0); pwd) function main() { upload_path=$1 cd ${current_dir} - git clone https://gitee.com/wu_fengguang/lkp-tests.git - cd lkp-tests - git apply ${current_dir}/devkit-pipeline.patch - /bin/cp -rf ${current_dir}/compatibility-test ${current_dir}/lkp-tests/programs/compatibility-test - cd ${current_dir}/ - tar -zcvf lkp-tests.tar.gz ./lkp-tests + wget -c https://gitee.com/jerry-553/lkp_test_devkitpipeline/releases/download/lkp-all-resource/lkp-tests.tar.gz /bin/cp -rf lkp-tests.tar.gz ${upload_path} }