测试工具

    本页面给出了 Ozone 自带的测试工具。

    注意:我们还进行了其它测试(比如通过 Spark 或 Hive 进行的 TCP-DS、TCP-H),但因为它们是外部工具,所以没有在此列出。

    和每个 java 项目一样,我们的每个项目都包含传统的单元测试。

    集成测试(JUnit)

    传统的单元测试只能测试一个单元,但我们也有更高层次的单元测试。它们使用 辅助方法在单元测试中启动守护进程(SCM、OM、数据节点)。

    从 maven 或 java 的角度来看,集成测试也只是普通的单元测试而已(使用了 JUnit 库),但为了解决一些依赖问题,我们将它们单独放在了 hadoop-ozone/integration-test 目录下。

    我们使用基于 docker-compose 的伪集群来运行不同配置的 Ozone,为了确保这些配置可用,我们在 的帮助下实现了 验收 测试。

    冒烟测试包含在发行包中(),但 robot 文件只定义了运行命令行然后检查输出的测试。

    这部分的测试包含在 compose 目录中(查看 或者 ./compose/test-all.sh)。

    例如,一种测试分发包的简单方法是:

    Blockade

    是一个测试网络故障和分片的工具(灵感来自于大名鼎鼎的Jepsen 测试)。

    Blockade 测试在其它测试的基础上实现,可以在分发包中的 目录下进行测试。

    更多细节查看 blockade 目录下的 README。

    这是一种在你的机器上获得的方法。它可以直接从源码启动一个 MiniOzoneCluster (会启动真实的守护进程),并随机杀死它。

    Freon

    Freon 是 Ozone 发行包中包含的命令行应用,它是一个负载生成器,用于压力测试。

    在randomkeys模式下,写入Ozone的数据是随机生成的。每个键的大小为10 KB。

    volume/bucket/key的数量是可以配置的。副本type和factor(例如: 3个节点使用ratis控制副本)也可以配置。

    更多信息,可使用如下命令查看:

    bin/ozone freon –help

    例如:

    Genesis 是一个微型的基准测试工具,它也包含在发行包中(ozone genesis),但是它不需要一个真实的集群,而是采用一种隔离的方法测试不同部分的代码(比如,将数据存储到本地基于 RocksDB 的键值存储中)。

    运行示例: