From 1dbacf59f75902e40f95cdb6bc7f16657311f7b9 Mon Sep 17 00:00:00 2001 From: chenyunhui Date: Wed, 11 Oct 2023 15:56:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../03-test/ci\344\273\213\347\273\215.md" | 188 ++++++++++++++ ...13\350\257\225\345\267\245\345\205\267.md" | 0 ...15\347\275\256\344\277\241\346\201\257.md" | 79 ++++++ ...25\345\205\203\346\265\213\350\257\225.md" | 234 ++++++++++++++++++ .../03-test/ci\344\273\213\347\273\215.md" | 188 ++++++++++++++ ...3\350\257\225\346\212\245\345\221\212.pdf" | Bin 0 -> 155131 bytes ...50\345\214\226\346\226\271\346\263\225.md" | 26 ++ ...13\350\257\225\345\267\245\345\205\267.md" | 0 ...25\345\205\203\346\265\213\350\257\225.md" | 234 ++++++++++++++++++ 9 files changed, 949 insertions(+) create mode 100644 "docs/02-CurveBS/03-test/ci\344\273\213\347\273\215.md" rename "docs/02-CurveBS/03-test/\346\200\247\350\203\275\346\265\213\350\257\225.md" => "docs/02-CurveBS/03-test/\346\265\213\350\257\225\345\267\245\345\205\267.md" (100%) create mode 100644 "docs/02-CurveBS/03-test/\346\265\213\350\257\225\347\216\257\345\242\203\351\205\215\347\275\256\344\277\241\346\201\257.md" create mode 100644 "docs/02-CurveBS/03-test/\347\274\226\350\257\221\345\222\214\345\215\225\345\205\203\346\265\213\350\257\225.md" create mode 100644 "docs/03-CurveFS/03-test/ci\344\273\213\347\273\215.md" create mode 100644 "docs/03-CurveFS/03-test/curvefs2.4\347\211\210\346\234\254\346\265\213\350\257\225\346\212\245\345\221\212.pdf" create mode 100644 "docs/03-CurveFS/03-test/\345\274\202\345\270\270\350\207\252\345\212\250\345\214\226\346\226\271\346\263\225.md" rename "docs/03-CurveFS/03-test/\346\200\247\350\203\275\346\265\213\350\257\225.md" => "docs/03-CurveFS/03-test/\346\200\247\350\203\275\346\265\213\350\257\225\345\267\245\345\205\267.md" (100%) create mode 100644 "docs/03-CurveFS/03-test/\347\274\226\350\257\221\345\222\214\345\215\225\345\205\203\346\265\213\350\257\225.md" diff --git "a/docs/02-CurveBS/03-test/ci\344\273\213\347\273\215.md" "b/docs/02-CurveBS/03-test/ci\344\273\213\347\273\215.md" new file mode 100644 index 0000000..9215353 --- /dev/null +++ "b/docs/02-CurveBS/03-test/ci\344\273\213\347\273\215.md" @@ -0,0 +1,188 @@ +# 概述 + +本文将主要介绍社区人员在参与curve项目开发过程中如何快速提交PR并进行CI测试,以及快速定位CI失败原因。 + +## 如何提交PR + +在完成代码编写后,就可以提交 PR。当然如果开发尚未完成,在某些情况下也可以先提交 PR,比如希望先让社区看一下大致的解决方案,可以在完成代码框架后提价 PR。 + +[Curve 编译环境快速构建](https://github.com/opencurve/curve/blob/master/docs/cn/build_and_run.md) + +[Curve 测试用例编译及执行](https://github.com/opencurve/curve/blob/master/docs/cn/build_and_run.md#测试用例编译及执行) + +对于 PR 我们有如下要求: + +- CURVE编码规范严格按照[Google C++开源项目编码指南](https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/)来进行代码编写,请您也遵循这一指南来提交您的代码。 +- 代码必须有测试,文档除外,单元测试(增量行覆盖80%以上,增量分支覆盖70%以上);集成测试(与单元测试合并统计,满足单元测试覆盖率要求即可) +- 请尽可能详细的填写 PR 的描述,关联相关问题的 issuse,PR commit message 能清晰看出解决的问题。 +- CI 通过之后可开始进行 review,每个 PR 在合并之前都需要至少得到两个 Committer/Maintainer 的 LGTM。 +- PR 代码需要一定量的注释来使代码容易理解,且所有注释和 review 意见和回复均要求使用英语。 + +对于 commit message: + +一条好的 commit message 需要包含以下要素: + +1. What is your change?(必须) +2. Why this change was made?(必须) +3. What effect does the commit have? (可选) + +说明提交的 PR 做了那些修改:性能优化?修复bug?增加功能?以及这么做的原因。最后描述以下这样修改带来的影响,包括性能等等。当然对一些简单的修改,修改的原因和影响可以忽略。在 message中尽量遵循以下原则: + +- 总结说明 PR 的功能和作用 +- 使用短句和简单的动词 +- 避免长的复合词和缩写 + +在提交时请尽可能的遵循以下格式: + +``` +[type]: + +[body] + +[footer] +``` + +type 可以是以下类型之一: + +- build: 影响系统构建以及外部依赖 +- ci: 影响持续继承相关的功能 +- docs: 文档相关的修改 +- feat: 增加新的特性 +- fix: bug 修复 +- perf: 性能提升 +- refactor: 重构相关的代码,不增加功能也不修复错误 +- style: 不影响代码的的含义的修改,仅仅是修改代码风格 +- test: 单元测试相关的修改 + +第一行表示标题应尽可能保持 70 个字符以内,阐述修改的模块以及内容,多模块可以使用 `*` 来表示,并在正文阶段说明修改的模块。 + +footer 是可选的,用来记录对应因为这些更改而可以关闭的 issue,如 `Close #12345` + +## CI 测试过程 + +PR提交到 Curve master 分支后需要在comment中输入cicheck触发Curve CI,需保证 CI 通过,CI 的 Jenkins 用户名密码为 netease/netease,如遇到 CI 运行失败可以登录 Jenkins 平台查看失败原因。测试内容包括: + +1) cpplint静态检查 + +主要进行测试内容为: + +cpplint --linelength=80 --counting=detailed --output=junit --filter=-build/c++11 --quiet $( find . -name *.h -or -name *.cc -or -name *.cpp ) 2>&1 | tee cpplint-style.xml + +2) 单元测试 + +单元测试主要执行的就是仓库中:https://github.com/opencurve/curve/blob/master/ut.sh + +为提升测试效率,所有单元测试用例为并行执行,需要注意增加的单元测试里起的服务不能和其他用例里起的服务使用同一端口,否则会因为端口占用失败 + +测试结束后进行覆盖率的卡点校验,当前覆盖率配置为: + +``` +if [ $1 == "curvebs" ];then + +check_repo_branch_coverage 59 +check_repo_line_coverage 76 + +## two arguments are module and expected branch coverage ratio +check_module_branch_coverage "src/mds" 70 +check_module_branch_coverage "src/client" 78 +check_module_branch_coverage "src/chunkserver" 65 +check_module_branch_coverage "src/snapshotcloneserver" 65 +check_module_branch_coverage "src/tools" 65 +check_module_branch_coverage "src/common" 65 +check_module_branch_coverage "src/fs" 65 +check_module_branch_coverage "src/idgenerator" 79 +check_module_branch_coverage "src/kvstorageclient" 70 +check_module_branch_coverage "src/leader_election" 100 +check_module_branch_coverage "nebd" 75 + +elif [ $1 == "curvefs" ];then + +check_module_branch_coverage "mds" 59 +check_module_branch_coverage "client" 59 +check_module_branch_coverage "metaserver" 65 +check_module_branch_coverage "common" 16 +check_module_branch_coverage "tools" 0 +fi +``` + +测试结束后会输出覆盖率报告,例如: http://59.111.91.248:8080/job/curve_untest_job/6149/HTML_20Report/ + +如果测试失败,可以打开对应的curve_untest_job的控制台输出日志,直接页面拉到最后会打印出错误的原因,覆盖率不足会打印在最后,如果是单元测试用例失败,可以从下往上翻页,找到失败的地方,比如: + + + +``` +[ FAILED ] 1 test, listed below: +[ FAILED ] EtcdClientTest.GetEtcdClusterStatus + + 1 FAILED TEST +test bazel-bin/test/mds/server/mds-test.log log is --------------------------------------------->>>>>>>> +Running main() from gmock_main.cc +[==========] Running 1 test from 1 test case. +[----------] Global test environment set-up. +[----------] 1 test from MDSTest +[ RUN ] MDSTest.common +2022-12-07 18:02:48.753204 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +2022-12-07 18:02:49.753500 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +2022-12-07 18:02:50.753831 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +2022-12-07 18:02:51.754211 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +2022-12-07 18:02:52.755814 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +2022-12-07 18:02:53.756543 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +test/mds/server/mds_test.cpp:76: Failure +Value of: initSuccess + Actual: false +Expected: true +``` + +3) pjdfstest测试 + +pjdfstest 主要是用来测试curvefs POSIX上的兼容性,会部署单机版的curvefs环境,然后进行pjdtest的执行,用的工具在 https://github.com/pjd/pjdfstest 。可以使用如下脚本进行自行测试: + +``` +#!/usr/bin/env bash + +set -e + +git clone https://github.com/pjd/pjdfstest.git +cd pjdfstest +autoreconf -ifs +./configure +make pjdfstest +cd .. +mkdir tmp +cd tmp +# must be root! +sudo prove -r -v --exec 'bash -x' ../pjd*/tests +cd .. +rm -rf tmp pjd* +``` + +如果测试失败,也需要进入控制台输出,拉到最后查看具体失败的原因 + +3) failover异常自动化 + +异常自动化会进行整体真实环境部署和io注入、故障测试,主要流程: + +主要流程: + + 初始化集群 → 用户io注入 (数据面) → 并发调用管理接口(管控面) → 触发异常 → sleep a time → 异常恢复(恢复校验) → 数据校验(ioerror、读写一致性、三副本一致性、抖动) → 管理接口校验 &资源回收等校验 + +测试完成后会输出整体的测试报告,具体测试过程和测试结果可以点击对应提交的curve_failover_job 下的log.html , 可以看到比较完整的测试流程、步骤、操作和结果输出,比如 [log.html](http://59.111.91.248:8080/job/curve_failover_job/2579/robot/report/log.html) + +## 常见问题 + +如何登录jenkins? + +由于内部的一些权限要求,需要用用户名密码登录jenkins ,开源社区的可以使用netease/netease 的账号/密码进行登录 + +如果再次触发失败pr的CI 构建? + +可以打开pr ,在最底部comment ''recheck" 字段,进行再次触发构建 + +如何过滤CI? + +对于一些文档修改或其他不影响代码流程的内容,我们可以不进行CI构建,可以在创建PR的时候在标题增加[skipci] 字段 + +触发构建后立刻返回了失败? + +查看一下失败的job内容,多数是因为测试任务在进行排队等待。如果job是waiting_in_line ,就是在排队 diff --git "a/docs/02-CurveBS/03-test/\346\200\247\350\203\275\346\265\213\350\257\225.md" "b/docs/02-CurveBS/03-test/\346\265\213\350\257\225\345\267\245\345\205\267.md" similarity index 100% rename from "docs/02-CurveBS/03-test/\346\200\247\350\203\275\346\265\213\350\257\225.md" rename to "docs/02-CurveBS/03-test/\346\265\213\350\257\225\345\267\245\345\205\267.md" diff --git "a/docs/02-CurveBS/03-test/\346\265\213\350\257\225\347\216\257\345\242\203\351\205\215\347\275\256\344\277\241\346\201\257.md" "b/docs/02-CurveBS/03-test/\346\265\213\350\257\225\347\216\257\345\242\203\351\205\215\347\275\256\344\277\241\346\201\257.md" new file mode 100644 index 0000000..ad16336 --- /dev/null +++ "b/docs/02-CurveBS/03-test/\346\265\213\350\257\225\347\216\257\345\242\203\351\205\215\347\275\256\344\277\241\346\201\257.md" @@ -0,0 +1,79 @@ +# Curve 测试环境配置信息 + +Curve 当前测试的性能,如果没有特别说明,都是在基于以下配置的机器上测试的。该配置仅仅表示curve当前性能数据的测试环境,由于部分硬件版本比较旧,该环境的硬件不作为推荐硬件型号,但是对硬件的配置部分可做参考。 + +## 集群topo + +### curvebs 块存储测试集群规模 + +mds和chunkserver服务混合部署。 + +mds : 3台机器 + +chunkserver : 9台机器 * 20块盘/每台机器 + +## 机器选型 + +| 计算/存储节点机型 | +| --- | +| Dell Inc. PowerEdge R730xd | +| Inspur NF5280M4 | + +## mds 节点 + +| 模块 | 版本 | 配置 | +| --- | --- | --- | +| 机型 | Dell PowerEdge R730xd | +| os | debain9 | +| 内核 | 4.9.65| +| cpu||设置performance,开启cpu性能最大化| +| 网卡| Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200 |万M网卡双网口组bond| +|系统盘||1.2T*2 SAS (RAID1模式)
初始化之后进行拷盘测试,提前发现并剔除坏盘、慢盘等异常| +|数据盘||1.8T*2 SSD (不需要RAID)
初始化之后进行拷盘测试,提前发现并剔除坏盘、慢盘等异常| + + +## chunkserver 节点 + +|模块|版本|配置| +|---|---|---| +|机型|inspur NF5280M4| | +|os|debian9| | +|内核|4.9.65| | +|cpu| |设置performance,开启cpu性能最大化| +|megaraid_sas| 06.811.02.00-rc4| | +|数据盘raid卡配置|1.RAID FW 版本:24.21.0-0061
2.RAID卡驱动版本:06.811.02.00-rc4|1. 配置为JBOD模式
2. RAID 卡关闭 consistent check
3.RAID卡缓存策略:WriteThrough| +|数据盘磁盘|数据盘类型:1.8TB * 20 Intel S4500
| 1.数据盘关闭磁盘缓存
2.磁盘调度策略,SSD盘noop,HDD盘deadline
// 初始化之后进行拷盘测试,提前发现并剔除坏盘、慢盘等异常
3、 sudo tune2fs -m 0 /dev/sda8
释放文件系统预留的5%空间
4、如果至少两个raid卡,每个raid卡上数据盘尽量均衡 | +| 网卡|bond配置(
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2+3 (2)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200 )|万M网卡双网口组bond| +系统盘|1.2T*2 SAS | RAID1模式| +|fd数量||1.系统允许的最大fd数量至少为10000000
2.单个进程允许的最大fd数量不低于250000| +|mmap地址数量||每一个bthread都需要使用mmap分配stack,mmap数量操作系统是有限制的,建议修改/proc/sys/vm/max_map_count 至少为5642720。| + +## 一些相关的命令 + +### raid卡查询命令 + +1. RAID FW 版本 查询命令:`sudo /usr/sbin/megacli -AdpAllInfo -aALL | grep "FW Package Build"` +2. RAID 卡关闭 consistent check 查询命令:`sudo /usr/sbin/megacli -AdpCcSched -info -a0` +3. RAID卡缓存策略查询命令:`sudo megacli -LDGetProp -Cache -LALL -a0` +4. RAID卡驱动版本查询命令:`sudo modinfo megaraid_sas` + +### 磁盘相关命令 + +1. 关闭磁盘缓存命令:`sudo /sbin/hdparm -W 0 /dev/sdh` +2. 磁盘缓存是否关闭,查询命令:`sudo /sbin/hdparm -W /dev/sdh` +3. 磁盘调度策略,查询命令:`cat /sys/block/sdxxx/queue/schedule` +4. 释放文件系统预留空空间命令:`sudo tune2fs -m 0 /dev/sda8` + +### 修改单个进程的允许的最大fs数量 + +1. 查询系统允许的最大fd数量:`cat /proc/sys/fs/file-max` +2. 查询单个进程允许的最大fd数量:`ulimit -n` +3. 修改单个进程允许的最大fd数量: + +``` +修改/etc/sysctl.conf配置,然后执行sysctl -p 生效。 +echo "fs.nr_open = 2500000" >> /etc/sysctl.conf +echo "fs.file-max = 40000000" >> /etc/sysctl.conf +``` + + diff --git "a/docs/02-CurveBS/03-test/\347\274\226\350\257\221\345\222\214\345\215\225\345\205\203\346\265\213\350\257\225.md" "b/docs/02-CurveBS/03-test/\347\274\226\350\257\221\345\222\214\345\215\225\345\205\203\346\265\213\350\257\225.md" new file mode 100644 index 0000000..d9db498 --- /dev/null +++ "b/docs/02-CurveBS/03-test/\347\274\226\350\257\221\345\222\214\345\215\225\345\205\203\346\265\213\350\257\225.md" @@ -0,0 +1,234 @@ +# 编译环境搭建 + +**请注意:** + +1. 如您只是想体验Curve的部署流程和基本功能,**则不需要编译Curve**,请参考 [部署](https://github.com/opencurve/curveadm/wiki) +2. 本文档仅用来帮助你搭建Curve代码编译环境,便于您参与Curve的开发调试 +3. 以下镜像和编译过程目前仅支持 x86 系统 +4. 如要编译[arm分支](https://github.com/opencurve/curve/pull/2408),请根据 [Dockerfile](https://github.com/opencurve/curve/blob/master/docker/debian9/compile/Dockerfile)打包编译镜像 +5. 目前master分支不支持在arm系统上编译运行 +6. 推荐 debian 10及以上版本的操作系统,其他操作系统未经过全面测试 + +## 使用Docker进行编译(推荐方式) + +### 获取或者构建docker镜像 + +方法一:从docker hub镜像库中拉取docker镜像(推荐方式) + +```bash +docker pull opencurvedocker/curve-base:build-debian9 +``` + +方法二:手动构建docker镜像 + +使用工程目录下的 docker/debian9/compile/Dockerfile 进行构建,命令如下: + +```bash +docker build -t opencurvedocker/curve-base:build-debian9 +``` + +**注意:** 上述操作不建议在Curve工程目录执行,否则构建镜像时会把当前目录的文件都复制到docker镜像中,建议把Dockerfile拷贝到新建的干净目录下进行docker镜像的构建。 + +### 在docker镜像中编译 + +```bash +git clone https://github.com/opencurve/curve.git 或者 git clone https://gitee.com/mirrors/curve.git +cd curve +# 如果你想在容器内完成编译+制作+上传镜像的操作,可以添加以下参数 +# -v /var/run/docker.sock:/var/run/docker.sock -v /root/.docker:/root/.docker +# --rm 会在容器退出后自动删除容器,如果你想保留容器,可以去掉该参数 +docker run --rm -v $(pwd):/curve -w /curve -v ${HOME}/.cache:${HOME}/.cache -v ${HOME}/go:${HOME}/go --user $(id -u ${USER}):$(id -g ${USER}) -v /etc/passwd:/etc/passwd:ro -v /etc/group:/etc/group:ro --privileged -it opencurvedocker/curve-base:build-debian9 bash +# (中国大陆可选)将外部依赖替换为国内下载点或镜像仓库,可以加快编译速度: bash replace-curve-repo.sh + +# curve v2.0 之前 +bash mk-tar.sh (编译 curvebs 并打tar包) +bash mk-deb.sh (编译 curvebs 并打debian包) + +# (当前)curve v2.0 及之后 +# 编译 curvebs: +make build stor=bs dep=1 +# or +make dep stor=bs && make build stor=bs +# 编译 curvefs: +make build stor=fs dep=1 +# or +make dep stor=fs && make build stor=fs +``` + +**注意:** `mk-tar.sh` 和 `mk-deb.sh` 用于 curve v2.0 之前版本的编译打包,v2.0 版本之后不再维护。 + +## 在物理机上编译 + +Curve编译依赖的包括: + +| 依赖 | 版本 | +|:-- |:-- | +| bazel | 4.2.2 | +| gcc | 支持c++11的兼容版本 | + +Curve的其他依赖项,均由bazel去管理,不可单独安装。 + +**注意:** 4.* 版本的 bazel 均可以成功编译 Curve 项目,其他版本不兼容。 +4.2.2 为推荐版本。 + +### 安装依赖 + +编译相关的软件依赖可以参考 [dockerfile](../../docker/debian9/compile/Dockerfile) 中的安装步骤。 + +### 一键编译 + +```bash +git clone https://github.com/opencurve/curve.git 或者 git clone https://gitee.com/mirrors/curve.git +# (中国大陆可选)将外部依赖替换为国内下载点或镜像仓库,可以加快下载速度: bash replace-curve-repo.sh +# curve v2.0 之前 +bash mk-tar.sh (编译 curvebs 并打tar包) +bash mk-deb.sh (编译 curvebs 并打debian包) + +# (当前)curve v2.0 及之后 +# 编译 curvebs: +make build stor=bs dep=1 +# or +make dep stor=bs && make build stor=bs +# 编译 curvefs: +make build stor=fs dep=1 +# or +make dep stor=fs && make build stor=fs +``` +### 制作镜像 + +该步骤可以在容器内执行也可以在物理机上执行。 +注意若是在容器内执行,需要在执行 `docker run` 命令时添加 `-v /var/run/docker.sock:/var/run/docker.sock -v /root/.docker:/root/.docker` 参数。 + +```bash +# 编译 curvebs: +# 后面的tag参数可以自定义,用于上传到镜像仓库 +make image stor=bs tag=test +# 编译 curvefs: +make image stor=fs tag=test +``` + +### 上传镜像 + +```bash +# test 为上一步中的tag参数 +docker push test +``` + +## 测试用例编译及执行 + +### 编译全部模块 + +仅编译全部模块,不进行打包 +```bash +bash ./build.sh +``` + +### 列出所有测试模块 + +```bash +# curvebs +bazel query '//test/...' +# curvefs +bazel query '//curvefs/test/...' +``` + +### 编译对应模块的代码 + +编译对应模块,例如test/common目录下的common-test测试: + +```bash +bazel build test/common:common-test --copt -DHAVE_ZLIB=1 --define=with_glog=true --compilation_mode=dbg --define=libunwind=true +``` + +### 执行测试 + +执行测试前需要先准备好测试用例运行所需的依赖: + +运行单元测试: +- 构建对应的模块测试: + ```bash + $ bazel build xxx/...//:xxx_test + ``` +- 运行对应的模块测试: + ```bash + $ bazel run xxx/...//:xxx_test + # 或者 + $ ./bazel-bin/xxx/.../xxx_test + ``` +- 编译全部测试及文件 + ```bash + $ bazel build "..." + ``` +- bazel 默认自带缓存编译, 但有时可能会失效. + + 清除项目构建缓存: + ```bash + $ bazel clean + ``` + + 清除项目依赖缓存(bazel 会将WORKSPACE 文件中的指定依赖项自行编译, 这部分同样也会缓存): + ```bash + $ bazel clean --expunge + ``` +- debug 模式编译(-c 指定向bazel 传递参数), 该模式会在默认构建文件中加入调试符号, 及减少优化等级. + ```bash + $ bazel build xxx//:xxx_test -c dbg + ``` +- 优化模式编译 + ```bash + $ bazel build xxx//:xxx_test -c opt + # 优化模式下加入调试符号 + $ bazel build xxx//:xxx_test -c opt --copt -g + ``` +- 更多文档, 详见 [bazel docs](https://bazel.build/docs). + +#### 动态库 + +```bash +export LD_LIBRARY_PATH=/thirdparties/etcdclient:/thirdparties/aws-sdk/usr/lib:/usr/local/lib:${LD_LIBRARY_PATH} +``` + +#### fake-s3 + +快照克隆集成测试中,使用了开源的[fake-s3](https://github.com/jubos/fake-s3)模拟真实的s3服务。 + +```bash +$ apt install ruby -y OR yum install ruby -y +$ gem install fakes3 +$ fakes3 -r /S3_DATA_DIR -p 9999 --license YOUR_LICENSE_KEY +``` + +备注: + +- `-r S3_DATA_DIR`:存放数据的目录 +- `--license YOUR_LICENSE_KEY`:fakes3需要key才能运行,申请地址见[fake-s3](https://github.com/jubos/fake-s3) +- `-p 9999`:fake-s3服务启动的端口,**不用更改** + +#### etcd + +```bash +wget -ct0 https://github.com/etcd-io/etcd/releases/download/v3.4.10/etcd-v3.4.10-linux-amd64.tar.gz +tar zxvf etcd-v3.4.10-linux-amd64.tar.gz +cd etcd-v3.4.10-linux-amd64 && cp etcd etcdctl /usr/bin +``` + +#### 执行单个测试模块 + +```bash +./bazel-bin/test/common/common-test +``` + +#### 运行单元/集成测试 + +bazel 编译后的可执行程序都在 `./bazel-bin` 目录下,例如 test/common 目录下的测试代码对应的测试程序为 `./bazel-bin/test/common/common-test`,可以直接运行程序进行测试。 +- CurveBS相关单元测试程序目录在 ./bazel-bin/test 目录下 +- CurveFS相关单元测试程序目录在 ./bazel-bin/curvefs/test 目录下 +- 集成测试在 ./bazel-bin/test/integration 目录下 +- NEBD相关单元测试程序在 ./bazel-bin/nebd/test 目录下 +- NBD相关单元测试程序在 ./bazel-bin/nbd/test 目录下 + +如果想运行所有的单元测试和集成测试,可以执行工程目录下的ut.sh脚本: + +```bash +bash ut.sh +``` diff --git "a/docs/03-CurveFS/03-test/ci\344\273\213\347\273\215.md" "b/docs/03-CurveFS/03-test/ci\344\273\213\347\273\215.md" new file mode 100644 index 0000000..9215353 --- /dev/null +++ "b/docs/03-CurveFS/03-test/ci\344\273\213\347\273\215.md" @@ -0,0 +1,188 @@ +# 概述 + +本文将主要介绍社区人员在参与curve项目开发过程中如何快速提交PR并进行CI测试,以及快速定位CI失败原因。 + +## 如何提交PR + +在完成代码编写后,就可以提交 PR。当然如果开发尚未完成,在某些情况下也可以先提交 PR,比如希望先让社区看一下大致的解决方案,可以在完成代码框架后提价 PR。 + +[Curve 编译环境快速构建](https://github.com/opencurve/curve/blob/master/docs/cn/build_and_run.md) + +[Curve 测试用例编译及执行](https://github.com/opencurve/curve/blob/master/docs/cn/build_and_run.md#测试用例编译及执行) + +对于 PR 我们有如下要求: + +- CURVE编码规范严格按照[Google C++开源项目编码指南](https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/)来进行代码编写,请您也遵循这一指南来提交您的代码。 +- 代码必须有测试,文档除外,单元测试(增量行覆盖80%以上,增量分支覆盖70%以上);集成测试(与单元测试合并统计,满足单元测试覆盖率要求即可) +- 请尽可能详细的填写 PR 的描述,关联相关问题的 issuse,PR commit message 能清晰看出解决的问题。 +- CI 通过之后可开始进行 review,每个 PR 在合并之前都需要至少得到两个 Committer/Maintainer 的 LGTM。 +- PR 代码需要一定量的注释来使代码容易理解,且所有注释和 review 意见和回复均要求使用英语。 + +对于 commit message: + +一条好的 commit message 需要包含以下要素: + +1. What is your change?(必须) +2. Why this change was made?(必须) +3. What effect does the commit have? (可选) + +说明提交的 PR 做了那些修改:性能优化?修复bug?增加功能?以及这么做的原因。最后描述以下这样修改带来的影响,包括性能等等。当然对一些简单的修改,修改的原因和影响可以忽略。在 message中尽量遵循以下原则: + +- 总结说明 PR 的功能和作用 +- 使用短句和简单的动词 +- 避免长的复合词和缩写 + +在提交时请尽可能的遵循以下格式: + +``` +[type]: + +[body] + +[footer] +``` + +type 可以是以下类型之一: + +- build: 影响系统构建以及外部依赖 +- ci: 影响持续继承相关的功能 +- docs: 文档相关的修改 +- feat: 增加新的特性 +- fix: bug 修复 +- perf: 性能提升 +- refactor: 重构相关的代码,不增加功能也不修复错误 +- style: 不影响代码的的含义的修改,仅仅是修改代码风格 +- test: 单元测试相关的修改 + +第一行表示标题应尽可能保持 70 个字符以内,阐述修改的模块以及内容,多模块可以使用 `*` 来表示,并在正文阶段说明修改的模块。 + +footer 是可选的,用来记录对应因为这些更改而可以关闭的 issue,如 `Close #12345` + +## CI 测试过程 + +PR提交到 Curve master 分支后需要在comment中输入cicheck触发Curve CI,需保证 CI 通过,CI 的 Jenkins 用户名密码为 netease/netease,如遇到 CI 运行失败可以登录 Jenkins 平台查看失败原因。测试内容包括: + +1) cpplint静态检查 + +主要进行测试内容为: + +cpplint --linelength=80 --counting=detailed --output=junit --filter=-build/c++11 --quiet $( find . -name *.h -or -name *.cc -or -name *.cpp ) 2>&1 | tee cpplint-style.xml + +2) 单元测试 + +单元测试主要执行的就是仓库中:https://github.com/opencurve/curve/blob/master/ut.sh + +为提升测试效率,所有单元测试用例为并行执行,需要注意增加的单元测试里起的服务不能和其他用例里起的服务使用同一端口,否则会因为端口占用失败 + +测试结束后进行覆盖率的卡点校验,当前覆盖率配置为: + +``` +if [ $1 == "curvebs" ];then + +check_repo_branch_coverage 59 +check_repo_line_coverage 76 + +## two arguments are module and expected branch coverage ratio +check_module_branch_coverage "src/mds" 70 +check_module_branch_coverage "src/client" 78 +check_module_branch_coverage "src/chunkserver" 65 +check_module_branch_coverage "src/snapshotcloneserver" 65 +check_module_branch_coverage "src/tools" 65 +check_module_branch_coverage "src/common" 65 +check_module_branch_coverage "src/fs" 65 +check_module_branch_coverage "src/idgenerator" 79 +check_module_branch_coverage "src/kvstorageclient" 70 +check_module_branch_coverage "src/leader_election" 100 +check_module_branch_coverage "nebd" 75 + +elif [ $1 == "curvefs" ];then + +check_module_branch_coverage "mds" 59 +check_module_branch_coverage "client" 59 +check_module_branch_coverage "metaserver" 65 +check_module_branch_coverage "common" 16 +check_module_branch_coverage "tools" 0 +fi +``` + +测试结束后会输出覆盖率报告,例如: http://59.111.91.248:8080/job/curve_untest_job/6149/HTML_20Report/ + +如果测试失败,可以打开对应的curve_untest_job的控制台输出日志,直接页面拉到最后会打印出错误的原因,覆盖率不足会打印在最后,如果是单元测试用例失败,可以从下往上翻页,找到失败的地方,比如: + + + +``` +[ FAILED ] 1 test, listed below: +[ FAILED ] EtcdClientTest.GetEtcdClusterStatus + + 1 FAILED TEST +test bazel-bin/test/mds/server/mds-test.log log is --------------------------------------------->>>>>>>> +Running main() from gmock_main.cc +[==========] Running 1 test from 1 test case. +[----------] Global test environment set-up. +[----------] 1 test from MDSTest +[ RUN ] MDSTest.common +2022-12-07 18:02:48.753204 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +2022-12-07 18:02:49.753500 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +2022-12-07 18:02:50.753831 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +2022-12-07 18:02:51.754211 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +2022-12-07 18:02:52.755814 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +2022-12-07 18:02:53.756543 I | etcd do NewCient get err:context deadline exceeded, errCode:DeadlineExceeded +test/mds/server/mds_test.cpp:76: Failure +Value of: initSuccess + Actual: false +Expected: true +``` + +3) pjdfstest测试 + +pjdfstest 主要是用来测试curvefs POSIX上的兼容性,会部署单机版的curvefs环境,然后进行pjdtest的执行,用的工具在 https://github.com/pjd/pjdfstest 。可以使用如下脚本进行自行测试: + +``` +#!/usr/bin/env bash + +set -e + +git clone https://github.com/pjd/pjdfstest.git +cd pjdfstest +autoreconf -ifs +./configure +make pjdfstest +cd .. +mkdir tmp +cd tmp +# must be root! +sudo prove -r -v --exec 'bash -x' ../pjd*/tests +cd .. +rm -rf tmp pjd* +``` + +如果测试失败,也需要进入控制台输出,拉到最后查看具体失败的原因 + +3) failover异常自动化 + +异常自动化会进行整体真实环境部署和io注入、故障测试,主要流程: + +主要流程: + + 初始化集群 → 用户io注入 (数据面) → 并发调用管理接口(管控面) → 触发异常 → sleep a time → 异常恢复(恢复校验) → 数据校验(ioerror、读写一致性、三副本一致性、抖动) → 管理接口校验 &资源回收等校验 + +测试完成后会输出整体的测试报告,具体测试过程和测试结果可以点击对应提交的curve_failover_job 下的log.html , 可以看到比较完整的测试流程、步骤、操作和结果输出,比如 [log.html](http://59.111.91.248:8080/job/curve_failover_job/2579/robot/report/log.html) + +## 常见问题 + +如何登录jenkins? + +由于内部的一些权限要求,需要用用户名密码登录jenkins ,开源社区的可以使用netease/netease 的账号/密码进行登录 + +如果再次触发失败pr的CI 构建? + +可以打开pr ,在最底部comment ''recheck" 字段,进行再次触发构建 + +如何过滤CI? + +对于一些文档修改或其他不影响代码流程的内容,我们可以不进行CI构建,可以在创建PR的时候在标题增加[skipci] 字段 + +触发构建后立刻返回了失败? + +查看一下失败的job内容,多数是因为测试任务在进行排队等待。如果job是waiting_in_line ,就是在排队 diff --git "a/docs/03-CurveFS/03-test/curvefs2.4\347\211\210\346\234\254\346\265\213\350\257\225\346\212\245\345\221\212.pdf" "b/docs/03-CurveFS/03-test/curvefs2.4\347\211\210\346\234\254\346\265\213\350\257\225\346\212\245\345\221\212.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..f2d58000df8aa4438cfd638a9efd0c67c58ed514 GIT binary patch literal 155131 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ⅇ|uxKQ*4i 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�bXy$0Q&->yG}q)1O0 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 hy0#viz8nQ~X-*UiN6LCf1H^/thirdparties/etcdclient:/thirdparties/aws-sdk/usr/lib:/usr/local/lib:${LD_LIBRARY_PATH} +``` + +#### fake-s3 + +快照克隆集成测试中,使用了开源的[fake-s3](https://github.com/jubos/fake-s3)模拟真实的s3服务。 + +```bash +$ apt install ruby -y OR yum install ruby -y +$ gem install fakes3 +$ fakes3 -r /S3_DATA_DIR -p 9999 --license YOUR_LICENSE_KEY +``` + +备注: + +- `-r S3_DATA_DIR`:存放数据的目录 +- `--license YOUR_LICENSE_KEY`:fakes3需要key才能运行,申请地址见[fake-s3](https://github.com/jubos/fake-s3) +- `-p 9999`:fake-s3服务启动的端口,**不用更改** + +#### etcd + +```bash +wget -ct0 https://github.com/etcd-io/etcd/releases/download/v3.4.10/etcd-v3.4.10-linux-amd64.tar.gz +tar zxvf etcd-v3.4.10-linux-amd64.tar.gz +cd etcd-v3.4.10-linux-amd64 && cp etcd etcdctl /usr/bin +``` + +#### 执行单个测试模块 + +```bash +./bazel-bin/test/common/common-test +``` + +#### 运行单元/集成测试 + +bazel 编译后的可执行程序都在 `./bazel-bin` 目录下,例如 test/common 目录下的测试代码对应的测试程序为 `./bazel-bin/test/common/common-test`,可以直接运行程序进行测试。 +- CurveBS相关单元测试程序目录在 ./bazel-bin/test 目录下 +- CurveFS相关单元测试程序目录在 ./bazel-bin/curvefs/test 目录下 +- 集成测试在 ./bazel-bin/test/integration 目录下 +- NEBD相关单元测试程序在 ./bazel-bin/nebd/test 目录下 +- NBD相关单元测试程序在 ./bazel-bin/nbd/test 目录下 + +如果想运行所有的单元测试和集成测试,可以执行工程目录下的ut.sh脚本: + +```bash +bash ut.sh +```