From 5ba308f317225482cf95b83ecd338f807e812db3 Mon Sep 17 00:00:00 2001 From: Jaeyun Jung Date: Mon, 26 Aug 2024 10:20:39 +0900 Subject: [PATCH] [Queue] set magic in handle Set magic when creating/destroying the queue handle. Signed-off-by: Jaeyun Jung --- .../nnstreamer-edge-queue.c | 31 ++++---- tests/unittest_nnstreamer-edge.cc | 77 +++++++++++++++++++ 2 files changed, 94 insertions(+), 14 deletions(-) diff --git a/src/libnnstreamer-edge/nnstreamer-edge-queue.c b/src/libnnstreamer-edge/nnstreamer-edge-queue.c index 08bcc56..f9b2774 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-queue.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-queue.c @@ -33,6 +33,7 @@ struct _nns_edge_queue_data_s */ typedef struct { + uint32_t magic; pthread_mutex_t lock; pthread_cond_t cond; @@ -97,6 +98,7 @@ nns_edge_queue_create (nns_edge_queue_h * handle) nns_edge_lock_init (q); nns_edge_cond_init (q); + nns_edge_handle_set_magic (q, NNS_EDGE_MAGIC); q->leaky = NNS_EDGE_QUEUE_LEAK_NEW; *handle = q; @@ -111,14 +113,15 @@ nns_edge_queue_destroy (nns_edge_queue_h handle) { nns_edge_queue_s *q = (nns_edge_queue_s *) handle; - if (!q) { - nns_edge_loge ("[Queue] Invalid param, queue is null."); + if (!nns_edge_handle_is_valid (q)) { + nns_edge_loge ("[Queue] Invalid param, queue is invalid."); return NNS_EDGE_ERROR_INVALID_PARAMETER; } /* Stop waiting and clear all data. */ nns_edge_queue_clear (handle); + nns_edge_handle_set_magic (q, NNS_EDGE_MAGIC_DEAD); nns_edge_cond_destroy (q); nns_edge_lock_destroy (q); SAFE_FREE (q); @@ -134,8 +137,8 @@ nns_edge_queue_get_length (nns_edge_queue_h handle, unsigned int *length) { nns_edge_queue_s *q = (nns_edge_queue_s *) handle; - if (!q) { - nns_edge_loge ("[Queue] Invalid param, queue is null."); + if (!nns_edge_handle_is_valid (q)) { + nns_edge_loge ("[Queue] Invalid param, queue is invalid."); return NNS_EDGE_ERROR_INVALID_PARAMETER; } @@ -160,8 +163,8 @@ nns_edge_queue_set_limit (nns_edge_queue_h handle, unsigned int limit, { nns_edge_queue_s *q = (nns_edge_queue_s *) handle; - if (!q) { - nns_edge_loge ("[Queue] Invalid param, queue is null."); + if (!nns_edge_handle_is_valid (q)) { + nns_edge_loge ("[Queue] Invalid param, queue is invalid."); return NNS_EDGE_ERROR_INVALID_PARAMETER; } @@ -184,8 +187,8 @@ nns_edge_queue_push (nns_edge_queue_h handle, void *data, nns_size_t size, nns_edge_queue_s *q = (nns_edge_queue_s *) handle; nns_edge_queue_data_s *qdata; - if (!q) { - nns_edge_loge ("[Queue] Invalid param, queue is null."); + if (!nns_edge_handle_is_valid (q)) { + nns_edge_loge ("[Queue] Invalid param, queue is invalid."); return NNS_EDGE_ERROR_INVALID_PARAMETER; } @@ -246,8 +249,8 @@ nns_edge_queue_pop (nns_edge_queue_h handle, void **data, nns_size_t * size) bool popped = false; nns_edge_queue_s *q = (nns_edge_queue_s *) handle; - if (!q) { - nns_edge_loge ("[Queue] Invalid param, queue is null."); + if (!nns_edge_handle_is_valid (q)) { + nns_edge_loge ("[Queue] Invalid param, queue is invalid."); return NNS_EDGE_ERROR_INVALID_PARAMETER; } @@ -282,8 +285,8 @@ nns_edge_queue_wait_pop (nns_edge_queue_h handle, unsigned int timeout, nns_edge_queue_s *q = (nns_edge_queue_s *) handle; bool popped = false; - if (!q) { - nns_edge_loge ("[Queue] Invalid param, queue is null."); + if (!nns_edge_handle_is_valid (q)) { + nns_edge_loge ("[Queue] Invalid param, queue is invalid."); return NNS_EDGE_ERROR_INVALID_PARAMETER; } @@ -320,8 +323,8 @@ nns_edge_queue_clear (nns_edge_queue_h handle) { nns_edge_queue_s *q = (nns_edge_queue_s *) handle; - if (!q) { - nns_edge_loge ("[Queue] Invalid param, queue is null."); + if (!nns_edge_handle_is_valid (q)) { + nns_edge_loge ("[Queue] Invalid param, queue is invalid."); return NNS_EDGE_ERROR_INVALID_PARAMETER; } diff --git a/tests/unittest_nnstreamer-edge.cc b/tests/unittest_nnstreamer-edge.cc index 7ce0e6e..0fb5398 100644 --- a/tests/unittest_nnstreamer-edge.cc +++ b/tests/unittest_nnstreamer-edge.cc @@ -3553,6 +3553,16 @@ TEST_F(edgeQueue, destroyInvalidParam01_n) EXPECT_EQ (nns_edge_queue_destroy (NULL), NNS_EDGE_ERROR_INVALID_PARAMETER); } +/** + * @brief Destroy queue - invalid param. + */ +TEST_F(edgeQueue, destroyInvalidParam02_n) +{ + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC_DEAD); + EXPECT_EQ (nns_edge_queue_destroy (queue_h), NNS_EDGE_ERROR_INVALID_PARAMETER); + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC); +} + /** * @brief Get length of queue - invalid param. */ @@ -3571,6 +3581,18 @@ TEST_F(edgeQueue, getLengthInvalidParam02_n) EXPECT_EQ (nns_edge_queue_get_length (queue_h, NULL), NNS_EDGE_ERROR_INVALID_PARAMETER); } +/** + * @brief Get length of queue - invalid param. + */ +TEST_F(edgeQueue, getLengthInvalidParam03_n) +{ + unsigned int len = 0U; + + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC_DEAD); + EXPECT_EQ (nns_edge_queue_get_length (queue_h, &len), NNS_EDGE_ERROR_INVALID_PARAMETER); + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC); +} + /** * @brief Set limit of queue. */ @@ -3678,6 +3700,16 @@ TEST_F(edgeQueue, setLimitInvalidParam01_n) EXPECT_EQ (nns_edge_queue_set_limit (NULL, 5U, NNS_EDGE_QUEUE_LEAK_NEW), NNS_EDGE_ERROR_INVALID_PARAMETER); } +/** + * @brief Set limit of queue - invalid param. + */ +TEST_F(edgeQueue, setLimitInvalidParam02_n) +{ + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC_DEAD); + EXPECT_EQ (nns_edge_queue_set_limit (queue_h, 5U, NNS_EDGE_QUEUE_LEAK_NEW), NNS_EDGE_ERROR_INVALID_PARAMETER); + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC); +} + /** * @brief Push data into queue - invalid param. */ @@ -3721,6 +3753,25 @@ TEST_F(edgeQueue, pushInvalidParam03_n) SAFE_FREE (data); } +/** + * @brief Push data into queue - invalid param. + */ +TEST_F(edgeQueue, pushInvalidParam04_n) +{ + void *data; + nns_size_t dsize; + + dsize = 5 * sizeof (unsigned int); + data = malloc (dsize); + ASSERT_TRUE (data != NULL); + + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC_DEAD); + EXPECT_EQ (nns_edge_queue_push (queue_h, data, dsize, NULL), NNS_EDGE_ERROR_INVALID_PARAMETER); + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC); + + SAFE_FREE (data); +} + /** * @brief Pop data from queue - invalid param. */ @@ -3752,6 +3803,19 @@ TEST_F(edgeQueue, popInvalidParam03_n) EXPECT_EQ (nns_edge_queue_pop (queue_h, &data, NULL), NNS_EDGE_ERROR_INVALID_PARAMETER); } +/** + * @brief Pop data from queue - invalid param. + */ +TEST_F(edgeQueue, popInvalidParam04_n) +{ + void *data; + nns_size_t size; + + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC_DEAD); + EXPECT_EQ (nns_edge_queue_pop (queue_h, &data, &size), NNS_EDGE_ERROR_INVALID_PARAMETER); + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC); +} + /** * @brief Wait and pop data from queue, timed out. */ @@ -3794,6 +3858,19 @@ TEST_F(edgeQueue, waitPopInvalidParam03_n) EXPECT_EQ (nns_edge_queue_wait_pop (queue_h, 10U, &data, NULL), NNS_EDGE_ERROR_INVALID_PARAMETER); } +/** + * @brief Wait and pop data from queue - invalid param. + */ +TEST_F(edgeQueue, waitPopInvalidParam04_n) +{ + void *data; + nns_size_t size; + + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC_DEAD); + EXPECT_EQ (nns_edge_queue_wait_pop (queue_h, 10U, &data, &size), NNS_EDGE_ERROR_INVALID_PARAMETER); + nns_edge_handle_set_magic (queue_h, NNS_EDGE_MAGIC); +} + /** * @brief Util to get the version. */ -- 2.34.1