Nugine 的个人博客关于

在 openEuler 上运行 E2E 测试

创建云服务器

在华为云购买一台云服务器用来做临时测试。

规格选鲲鹏通用计算增强型,2核4G。(担心内存只给1G的话有可能跑不动编译器)

操作系统选 "openEuler 20.03 64bit with ARM"。

计费模式选按需计费,带宽选按流量计费。

设置 Rust 编译器

打开 https://rustup.rs/,复制命令,粘贴运行。

选择默认工具链 (aarch64-unknown-linux-gnu),等待安装完成。

设置镜像源

这里选择上海交通大学镜像源 (SJTUG) https://mirrors.sjtug.sjtu.edu.cn/

搜索 rust,点开帮助,复制粘贴配置。

搜索 crates,点开帮助,复制粘贴配置。

编译代码

没用交叉编译,怕踩坑,这里选择源码编译。

确认到环境中默认装了 git,然后把代码从 GitHub 上克隆下来。

git clone https://github.com/Nugine/s3-server.git

运行 cargo fetch,下载依赖。

运行 cargo build --example s3

很不幸,编译报错了。

  Could not find directory of OpenSSL installation, and this `-sys` crate cannot
  proceed without this knowledge. If OpenSSL is installed and this crate had
  trouble finding it,  you can set the `OPENSSL_DIR` environment variable for the
  compilation process.

openSSL 没装,运行 dnf install openssl-devel 以安装。

继续 cargo build --example s3,编译成功。编译单元量为 251。(这真的是巧合)

一次完整的 debug 模式编译需要 2 分 35 秒,release 模式需要 8 分 6 秒。

安装 docker

运行 dnf install docker,一切正常。

构建测试镜像

使用 minio 的 mint 作为端到端测试。

git clone https://github.com/minio/minio.git -b master --depth=1

根据 CI 脚本删除一部分测试组。

修改 Dockerfile.mint,换源。

RUN  sed -i s@/ports.ubuntu.com/@/mirrors.ustc.edu.cn/@g /etc/apt/sources.list && apt-get clean

解决其他被墙的问题。

(1000 years later)

改好之后构建镜像。

docker build -t minio/mint . -f Dockerfile.mint

(2000 years later)

构建完成。

运行测试

启动 S3 服务。

mkdir /tmp/data
./scripts/s3-auth.sh /tmp/data

启动 mint 测试。

./scripts/mint.sh

debug 测试结果

Running with
SERVER_ENDPOINT:      localhost:8014
ACCESS_KEY:           AKIAIOSFODNN7EXAMPLE
SECRET_KEY:           ***REDACTED***
ENABLE_HTTPS:         0
SERVER_REGION:        us-east-1
MINT_DATA_DIR:        /mint/data
MINT_MODE:            core
ENABLE_VIRTUAL_STYLE: 0

To get logs, run 'docker cp 2483b738580b:/mint/log /tmp/mint-logs'

(1/2) Running mc tests ... done in 5 minutes and 33 seconds
(2/2) Running s3cmd tests ... done in 4 minutes and 12 seconds

All tests ran successfully

release 测试结果 (比 debug 快 20 ~ 25 倍)

Running with
SERVER_ENDPOINT:      localhost:8014
ACCESS_KEY:           AKIAIOSFODNN7EXAMPLE
SECRET_KEY:           ***REDACTED***
ENABLE_HTTPS:         0
SERVER_REGION:        us-east-1
MINT_DATA_DIR:        /mint/data
MINT_MODE:            core
ENABLE_VIRTUAL_STYLE: 0

To get logs, run 'docker cp 6b1e781741bb:/mint/log /tmp/mint-logs'

(1/2) Running mc tests ... done in 13 seconds
(2/2) Running s3cmd tests ... done in 12 seconds

All tests ran successfully

发布于 2020-09-29地址: GitHub, 知乎