概述
之前的系列文章将 hive 做了一个比较全面的介绍:
这篇文章主要介绍 hive 使用过程中遇到的一些坑。
EnodeURL
hivesim.Client.EnodeURL()
需要 enode.sh
文件以及 curl 工具,如果 simulator 代码中用到了这个功能,需要再 Dockerfile 中添加如下配置:
RUN apk add --update bash curl jq
# Inject the enode id retriever script
RUN mkdir /hive-bin
ADD enode.sh /hive-bin/enode.sh
RUN chmod +x /hive-bin/enode.sh
testnet
hive 本身设计是针对单个 ethereum client 的测试,这种情况下单个 test case 一般只有三个角色以及对应的容器:
- hiveproxy
- ethereum client
- simulator
测试用例主要通过与 ethereum client 进行交互完成测试。
但是有些情况下,我们的测试需要再一个测试网络下面运行,test case 也不是针对单个 client,而是针对整个测试网络的行为,比如 merge 后的 ethereum,如何构建这样的测试网络以及组织测试用例是一个新的问题,实践过程中有两种思路。
clientTestSpec
通过 clientTestSpec 进行 ‘套娃’ 的方式逐层搭建网络,示例 simulators/ethereum/devp2p
TestSpec
自定义并启动 testnet,将其作为测试用例的运行参数 simulators/optimism/l1ops
评论