[sheepdog] [PATCH v3 0/4] Introduce mock
MORITA Kazutaka
morita.kazutaka at gmail.com
Fri Jul 12 22:03:21 CEST 2013
At Thu, 11 Jul 2013 23:41:34 -0700,
Kai Zhang wrote:
>
> v3:
> - fixed compile error when configured without --enable-zookeeper
> - added "local" testcase to test_cluster_driver.c
> - added method_reset_all() to mock.h
> - removed dependency of logger.h from mock.c
>
> v2:
> - added cover-letter
> - fixed code style problem
> - update commit log to show simple example of mock
>
> Mock is useful when we do unit test.
>
> This patch introduce some useful macro to simply testing.
>
> The two most useful macro are MOCK_METHOD and MOCK_VOID_METHOD.
>
> MOCK_VOID_METHOD is used to mock method how has no return value.
> For example:
> void foo(int a, long b)
> {
> return;
> }
>
> We define the mock method as:
> MOCK_VOID_METHOD(foo, int a, long b)
>
> MOCK_METHOD is used to mock method how has return value.
> User have to specified the return value's type and the default return value.
> For example:
> bool foo(int a, long b)
> {
> return true;
> }
>
> We define the mock method as:
> MOCK_METHCO(foo, bool, true, int a, long b)
>
> Use macro to define mock method has many benifits:
> - we can record each call of the method and its arguments
> - we can control the return value, based on input arguments
>
> However, current implementation is quite initial.
> We just record how many times the method is called.
>
> Another useful macro is method_nr_call(method) which returns how many times the
> method is called.
>
> Kai Zhang (4):
> tests/unit: add missing copyright and license
> tests/unit: introduce mock
> tests/unit: use MOCK_METHOD when define mock method
> tests/unit: add test_cluster_driver
>
> .gitignore | 1 +
> configure.ac | 1 +
> tests/unit/Makefile.am | 2 +-
> tests/unit/collie/Makefile.am | 3 +-
> tests/unit/collie/mock_collie.c | 25 +++---
> tests/unit/collie/test_common.c | 13 ++++
> tests/unit/mock/Makefile.am | 7 ++
> tests/unit/mock/mock.c | 51 +++++++++++++
> tests/unit/mock/mock.h | 60 +++++++++++++++
> tests/unit/sheep/Makefile.am | 18 ++++-
> tests/unit/sheep/mock_group.c | 32 ++++++++
> tests/unit/sheep/mock_request.c | 29 ++++---
> tests/unit/sheep/mock_sheep.c | 14 ++++
> tests/unit/sheep/mock_store.c | 49 ++++++------
> tests/unit/sheep/test_cluster_driver.c | 130 ++++++++++++++++++++++++++++++++
> tests/unit/sheep/test_vdi.c | 13 ++++
> 16 files changed, 400 insertions(+), 48 deletions(-)
> create mode 100644 tests/unit/mock/Makefile.am
> create mode 100644 tests/unit/mock/mock.c
> create mode 100644 tests/unit/mock/mock.h
> create mode 100644 tests/unit/sheep/mock_group.c
> rewrite tests/unit/sheep/mock_request.c (81%)
> rewrite tests/unit/sheep/mock_store.c (93%)
> create mode 100644 tests/unit/sheep/test_cluster_driver.c
Applid, thanks!
Kazutaka
More information about the sheepdog
mailing list