From 1ed1f968ae1f86b603a01b6b452aaee0ee8a0882 Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Thu, 20 Dec 2018 12:50:06 -0700 Subject: [PATCH] mock: add MOCK_CLEARED_ASSERT macro This is useful for proving to scan-build that we are not using a mocked function. Sometimes it needs to be called repeatedly every time any mock variables are called. Change-Id: Id0ef196620c2984252f792a7e40162e10b989748 Signed-off-by: Seth Howell Reviewed-on: https://review.gerrithub.io/c/437997 Tested-by: SPDK CI Jenkins Reviewed-by: Darek Stojaczyk Reviewed-by: Shuhei Matsumoto Reviewed-by: yidong0635 --- include/spdk_internal/mock.h | 4 ++++ test/unit/lib/bdev/crypto.c/crypto_ut.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/include/spdk_internal/mock.h b/include/spdk_internal/mock.h index f5a366dda..212cf0c48 100644 --- a/include/spdk_internal/mock.h +++ b/include/spdk_internal/mock.h @@ -62,6 +62,10 @@ ut_ ## fn ## _mocked = false; \ ut_ ## fn = NULL; +/* for proving to *certain* static analysis tools that we didn't reset the mock function. */ +#define MOCK_CLEARED_ASSERT(fn) \ + SPDK_CU_ASSERT_FATAL(ut_ ## fn ## _mocked == false) + /* for declaring function protoypes for wrappers */ #define DECLARE_WRAPPER(fn, ret, args) \ extern bool ut_ ## fn ## _mocked; \ diff --git a/test/unit/lib/bdev/crypto.c/crypto_ut.c b/test/unit/lib/bdev/crypto.c/crypto_ut.c index b3e5df9ba..78982932e 100644 --- a/test/unit/lib/bdev/crypto.c/crypto_ut.c +++ b/test/unit/lib/bdev/crypto.c/crypto_ut.c @@ -742,6 +742,7 @@ test_initdrivers(void) MOCK_SET(rte_crypto_op_pool_create, (struct rte_mempool *)1); /* Check resources are sufficient failure. */ + MOCK_CLEARED_ASSERT(spdk_mempool_create); rc = vbdev_crypto_init_crypto_drivers(); CU_ASSERT(rc == -EINVAL); @@ -749,6 +750,7 @@ test_initdrivers(void) MOCK_SET(rte_cryptodev_device_count_by_driver, 2); MOCK_SET(rte_cryptodev_info_get, 1); MOCK_SET(rte_cryptodev_configure, -1); + MOCK_CLEARED_ASSERT(spdk_mempool_create); rc = vbdev_crypto_init_crypto_drivers(); MOCK_SET(rte_cryptodev_configure, 0); CU_ASSERT(g_mbuf_mp == NULL); @@ -757,6 +759,7 @@ test_initdrivers(void) /* Test failure of qp setup. */ MOCK_SET(rte_cryptodev_queue_pair_setup, -1); + MOCK_CLEARED_ASSERT(spdk_mempool_create); rc = vbdev_crypto_init_crypto_drivers(); CU_ASSERT(rc == -EINVAL); CU_ASSERT(g_mbuf_mp == NULL); @@ -765,6 +768,7 @@ test_initdrivers(void) /* Test failure of dev start. */ MOCK_SET(rte_cryptodev_start, -1); + MOCK_CLEARED_ASSERT(spdk_mempool_create); rc = vbdev_crypto_init_crypto_drivers(); CU_ASSERT(rc == -EINVAL); CU_ASSERT(g_mbuf_mp == NULL); @@ -772,6 +776,7 @@ test_initdrivers(void) MOCK_SET(rte_cryptodev_start, 0); /* Test happy path. */ + MOCK_CLEARED_ASSERT(spdk_mempool_create); rc = vbdev_crypto_init_crypto_drivers(); /* We don't have spdk_mempool_create mocked right now, so make sure to free the mempools. */ CU_ASSERT(g_mbuf_mp != NULL);