[Queue] set magic in handle
authorJaeyun Jung <jy1210.jung@samsung.com>
Mon, 26 Aug 2024 01:20:39 +0000 (10:20 +0900)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Mon, 26 Aug 2024 09:38:21 +0000 (18:38 +0900)
Set magic when creating/destroying the queue handle.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
src/libnnstreamer-edge/nnstreamer-edge-queue.c
tests/unittest_nnstreamer-edge.cc

index 08bcc5685e82dd86c2a6be96aae4da59f61c4d5a..f9b2774e750d3f5db723b943a36f6d92f02de45e 100644 (file)
@@ -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;
   }
 
index 7ce0e6ed4c91b499bcb2b9ffc8d04756015e7968..0fb53983a226dcda576e4f857dd7dce7b0ba4326 100644 (file)
@@ -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.
  */