runsisi's

technical notes

本地运行 rbd 测试用例

2019-02-18 runsisi#ceph#rbd

假设 ceph 代码 cmake && make 构建之后的路径如下:

~$ pwd
/home/runsisi/src/ceph/build

先 export 环境变量如下(如果固化在 bashrc 等配置文件的话,一定要注意在不同的本地 ceph 源代码工程之间切换时记得修改 CEPH_ROOT 并重新登录终端生效,否则虽然构建的是当前的 ceph 工程,但是运行的却是老的 CEPH_ROOT 中指定路径下的 ceph 程序):

export CEPH_ROOT=/home/runsisi/src/ceph
export PYTHONPATH=$CEPH_ROOT/src/pybind:$CEPH_ROOT/build/lib/cython_modules/lib.2
export LD_LIBRARY_PATH=$CEPH_ROOT/build/lib
export PATH=$CEPH_ROOT/build/bin:$PATH
export CEPH_CONF=$CEPH_ROOT/build/ceph.conf
export CEPH_DEV=0

单元测试由于是打桩测试,调用的 librados 层的接口是桩,所以不需要新建 ceph 集群, 构建之后可以直接使用 ctest 进行测试:

~$ ctest -N | grep rbd
~$ ctest -VV -R run-rbd-unit-tests.sh

集成测试由于是真实的 librados 调用,所以需要使用 vstart 搭建一个正常运行的 ceph 环境:

~$ ../src/vstart.sh -n -i 10.123.123.123

然后运行集成测试用例中定义的命令(相应的命令行可以通过查看 qa/workunits/ 下的用例得到,也可以通过分析已有的 teuthology 日志得到)即可:

~$ export RBD_FEATURES=125
~$ export VALGRIND='--tool=memcheck --leak-check=full'
~$ valgrind ${VALGRIND} --suppressions=../src/valgrind.supp --error-exitcode=1 ceph_test_librbd