【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】4.3.0
【问题描述】如何SQL语句执行触发的代码覆盖率
我们在做事务隔离级别的正确性实现验证工具,测试工具生成了许多 SQL 查询与事务的测试用例,现在想要进一步测试触发的代码覆盖率以验证这些测试用例的可靠性与全面性,请问有没有方法或文档能介绍下 Oceanbase 怎么查看执行的代码覆盖率呢?
编译和部署:
bash build.sh coverage --init --make
./tools/deploy/obd.sh prepare -p /tmp/obtest
./tools/deploy/obd.sh deploy -c ./tools/deploy/single.yaml
部署成功后,比如想简单测试一个事务触发的代码覆盖率,怎么获取呢:
MySQL [test]> begin;
Query OK, 0 rows affected (0.00 sec)
MySQL [test]> select * from t1 for update;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.04 sec)
MySQL [test]> commit;
Query OK, 0 rows affected (0.00 sec)
MySQL [test]> Bye
接下来,想通过gcov命令获取代码覆盖率,比如 src/storage/tx 文件夹下所有代码的覆盖度,
进入 ./build_coverage/src/storage/CMakeFiles/ob_storage.dir/Unity/unity_ob_storage_tx,
发现都是:
>> ls
0_cxx.cxx 0_cxx.cxx.gcno 0_cxx.cxx.o.d 1_cxx.cxx.gcda 1_cxx.cxx.o 2_cxx.cxx 2_cxx.cxx.gcno 2_cxx.cxx.o.d
0_cxx.cxx.gcda 0_cxx.cxx.o 1_cxx.cxx 1_cxx.cxx.gcno 1_cxx.cxx.o.d 2_cxx.cxx.gcda 2_cxx.cxx.o
想请问下如何获得 src/storage/tx 所有代码的覆盖度呢?