1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright (C) 2016 Intel Corporation. 3 * All rights reserved. 4 * Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 5 */ 6 7 #include "spdk/stdinc.h" 8 9 #include "spdk_internal/cunit.h" 10 11 #include "reduce/queue_internal.h" 12 13 static void 14 test_queue_create(void) 15 { 16 struct reduce_queue queue; 17 18 queue_init(&queue); 19 CU_ASSERT(queue_empty(&queue) == true); 20 CU_ASSERT(queue_full(&queue) == false); 21 CU_ASSERT(queue_size(&queue) == 0); 22 } 23 24 static void 25 test_queue_enqueue_dequeue(void) 26 { 27 int64_t value; 28 struct reduce_queue queue; 29 30 queue_init(&queue); 31 32 CU_ASSERT(queue_enqueue(&queue, 10) == true); 33 CU_ASSERT(queue_enqueue(&queue, 20) == true); 34 CU_ASSERT(queue_enqueue(&queue, 30) == true); 35 CU_ASSERT(queue_size(&queue) == 3); 36 37 CU_ASSERT(queue_dequeue(&queue, &value) == true); 38 CU_ASSERT(value == 10); 39 CU_ASSERT(queue_size(&queue) == 2); 40 41 CU_ASSERT(queue_dequeue(&queue, &value) == true); 42 CU_ASSERT(value == 20); 43 CU_ASSERT(queue_size(&queue) == 1); 44 } 45 46 static void 47 test_queue_full(void) 48 { 49 int i; 50 struct reduce_queue queue; 51 52 queue_init(&queue); 53 54 for (i = 1; i < REDUCE_QUEUE_CAPACITY_SIZE; i++) { 55 CU_ASSERT(queue_enqueue(&queue, i) == true); 56 } 57 CU_ASSERT(queue_full(&queue) == true); 58 59 CU_ASSERT(queue_enqueue(&queue, 40) == false); /* Queue is full */ 60 } 61 62 static void 63 test_queue_empty(void) 64 { 65 int64_t value; 66 67 struct reduce_queue queue; 68 69 queue_init(&queue); 70 71 CU_ASSERT(queue_empty(&queue) == true); 72 CU_ASSERT(queue_enqueue(&queue, 10) == true); 73 CU_ASSERT(queue_empty(&queue) == false); 74 75 CU_ASSERT(queue_dequeue(&queue, &value) == true); 76 CU_ASSERT(queue_empty(&queue) == true); 77 } 78 79 int 80 main(int argc, char **argv) 81 { 82 CU_pSuite suite = NULL; 83 unsigned int num_failures; 84 85 CU_initialize_registry(); 86 87 suite = CU_add_suite("reduce_queue", NULL, NULL); 88 89 CU_ADD_TEST(suite, test_queue_create); 90 CU_ADD_TEST(suite, test_queue_enqueue_dequeue); 91 CU_ADD_TEST(suite, test_queue_empty); 92 CU_ADD_TEST(suite, test_queue_create); 93 CU_ADD_TEST(suite, test_queue_full); 94 95 num_failures = spdk_ut_run_tests(argc, argv, NULL); 96 CU_cleanup_registry(); 97 98 return num_failures; 99 } 100