[sheepdog] [PATCH 0/3] Introducing unittest framework to sheepdog
Kai Zhang
kyle at zelin.io
Mon Jun 3 13:32:26 CEST 2013
As we all known, unittest is quite important to any project which is aimed to be used in production environment.
This series of patches is to introduce 'check', a popular unittest framework for C language.
These patches are quite initial implemented.
But it still shows the abilities of:
- adding more unittests easily
- runing unittests selectively
- showing code coverage after running unittest
- generating html report by lcov and genhtml
- integrating with other CI (continuous integration) systems like Jenkins
In addition, we can also benifit from unittest in the following ways:
- help us write more testable code
- improve the robustness of sheepdog
- new contributors can be quickly involved by writing unittest code
Usage:
- $make check # run all unittests
- $make check CK_RUN_SUITE=xxx_suite CK_RUN_CASE=xxx_case # run selective unittest
- $make coverage # generate coverage report in html to directory 'coverage'
There are also many things that we can improve:
- more tests of cause
- more functional mock programs (inspired by gmock)
Another thing that I wanna share with you is that, current unittests in implemented under 'check', a C unittest framework.
There is another test framework, google testing framework (including gtest and gmock), which is more popular and powerful.
However, they are written in C++.
I have tried to use gtest and gmock to write unittests in C++, but failed to compile with our code.
We need to refine our code to be compatible with C++ compiler if we wanna adopt gtest and gmock.
Kai Zhang (3):
build: add 'make coverage' target
unittest: add unittest for collie/common.c
unittest: add unittest for sheep/vdi.c
.gitignore | 6 +++++
Makefile.am | 19 +++++++++++++++++-
collie/Makefile.am | 3 ++
configure.ac | 6 ++++-
sheep/Makefile.am | 3 ++
unittest/Makefile.am | 3 ++
unittest/collie/Makefile.am | 21 ++++++++++++++++++++
unittest/collie/mock_collie.c | 17 ++++++++++++++++
unittest/collie/test_common.c | 43 +++++++++++++++++++++++++++++++++++++++++
unittest/sheep/Makefile.am | 20 +++++++++++++++++++
unittest/sheep/mock_request.c | 11 ++++++++++
unittest/sheep/mock_sheep.c | 3 ++
unittest/sheep/mock_store.c | 24 ++++++++++++++++++++++
unittest/sheep/test_vdi.c | 38 ++++++++++++++++++++++++++++++++++++
14 files changed, 215 insertions(+), 2 deletions(-)
create mode 100644 unittest/Makefile.am
create mode 100644 unittest/collie/Makefile.am
create mode 100644 unittest/collie/mock_collie.c
create mode 100644 unittest/collie/test_common.c
create mode 100644 unittest/sheep/Makefile.am
create mode 100644 unittest/sheep/mock_request.c
create mode 100644 unittest/sheep/mock_sheep.c
create mode 100644 unittest/sheep/mock_store.c
create mode 100644 unittest/sheep/test_vdi.c
More information about the sheepdog
mailing list