From becc22eae8f186d44e217b22fd41199af5e580d0 Mon Sep 17 00:00:00 2001 From: Ke Zhiming Date: Wed, 20 Jan 2021 09:12:06 +0800 Subject: [PATCH 1/2] readme: add EulerRobot architecture Add EulerRobot architecture diagram Signed-off-by: Ke Zhiming --- docs/design/EulerRobot-architecture.png | Bin 0 -> 57471 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/design/EulerRobot-architecture.png diff --git a/docs/design/EulerRobot-architecture.png b/docs/design/EulerRobot-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..ad70673594cfcdda947d76c70a6241915f821fb5 GIT binary patch literal 57471 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�HUu$q2WG#*Xk(RMZ$=Nu4Q6gn1&;H8>E= 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 Date: Wed, 20 Jan 2021 09:13:38 +0800 Subject: [PATCH 2/2] readme: update readme Update readme Signed-off-by: Ke Zhiming --- README.MD | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 README.MD diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..f4ce90e --- /dev/null +++ b/README.MD @@ -0,0 +1,86 @@ +# EulerRobot + +#### 介绍 +A virtualized automated test project, integrated compilation test, UT test, smoke test, Avocado-VT test,etc. + +#### 功能描述 + +- **虚拟化组件开发者服务** + + 支持开发者对虚拟化组件自有分支代码进行编译、地址消毒编译、UT测试(包括qemu-ut、libvirt-ut、kvm-unit-test)、静态检查等验证,目前支持qemu、libvirt,可对接openEuler版本和upstream版本。 + +- **虚拟化组件冒烟测试、集成测试服务** + + 支持对指定版本运行虚拟化冒烟测试、集成测试,同时支持替换运行环境中qemu为openeuler版本自带qemu的地址消毒版本或者upstream qemu的地址消毒版本。 + +- **虚拟化组件性能测试服务** + + 提供虚拟化基线性能测试,包含cpu/mem/io等,并提供openeuler虚拟化特定场景性能测试模型,可快速完成指定版本性能验证。 + +- **其他DFX测试服务** + + 后续提供更多的测试服务,包括FUZZ、语义搜索、可靠性等。 + +#### 软件架构 + +EulerRobot基于虚拟化各类测试套及测试能力,对接compass-ci给用户提供虚拟化平台验证服务。 +![EulerRobot架构](docs/design/EulerRobot-architecture.png) + +相关虚拟化平台测试套仓库地址如下: + +[https://gitee.com/src-openeuler/avocado](https://gitee.com/src-openeuler/avocado) + +[https://gitee.com/openeuler/avocado-vt](https://gitee.com/openeuler/avocado-vt) + +[https://gitee.com/openeuler/tp-libvirt](https://gitee.com/openeuler/tp-libvirt) + +[https://gitee.com/openeuler/tp-qemu](https://gitee.com/openeuler/tp-qemu) + +#### 安装教程 + +1. 用户需要有compass-ci账户,具备通过compass-ci提交任务的能力。具体可参考[https://gitee.com/openeuler/compass-ci.git](https://gitee.com/openeuler/compass-ci.git) +2. 下载EulerRobot仓库,执行script/autopatch.sh将相关文件按lkp-tests的目录结构拷贝到对应路径下 + +#### 使用说明 +具体使用可参见compass-ci指导 [https://gitee.com/wu_fengguang/compass-ci](https://gitee.com/wu_fengguang/compass-ci) + +此处简单介绍下当前提供的主要几个服务化能力 + +1. 开发者服务 + + jobs/openeuler-qemu.yaml,此任务提供qemu版本编译、UT测试、cppcheck静态检查能力,支持配置地址消毒编译,支持指定upstream、openeuler集成的分支等不同分支编译 + + jobs/openeuler-libvirt.yaml,此任务提供libvirt版本编译、UT测试,支持指定upstream、openeuler集成的分支等不同分支编译 +2. 冒烟、集成测试服务 + + jobs/virttest-depends.yaml,此任务需要在virttest_at/virttest_st任务之前执行,构建测试框架及测试用例正常运行所依赖rpm的dep包 + + jobs/virttest-makepkg.yaml,此任务需要在virttest_at/virttest_st任务之前执行,构建测试框架部署、测试用例部署等测试运行前的pkg包,支持qemu地址消毒版本包构建 + + jobs/virttest_at.yaml,此任务运行虚拟化冒烟测试,使用单物理主机测试环境,支持配置运行在openeuler集成qemu的地址消毒版本、upstream qemu的地址消毒版本 + + jobs/virttest_at_2hosts.yaml,此任务运行虚拟化测试,使用双物理主机测试环境,支持配置运行在openeuler集成qemu的地址消毒版本、upstream qemu的地址消毒版本 + + jobs/virttest_st.yaml,此任务运行虚拟化集成测试,使用单物理主机测试环境,支持配置运行在openeuler集成qemu的地址消毒版本、upstream qemu的地址消毒版本 + + jobs/virttest_st_2hosts.yaml,此任务运行虚拟化集成测试,使用双物理机主机测试环境,支持配置运行在openeuler集成qemu的地址消毒版本、upstream qemu的地址消毒版本 +3. 性能测试服务 + + 待补充 + +#### 参与贡献 + +1. Fork 本仓库 +2. 新建 Feat_xxx 分支 +3. 提交代码 +4. 新建 Pull Request + + +#### 码云特技 + +1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md +2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) +3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 +4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 +5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) +6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) -- Gitee