]> git.proxmox.com Git - ceph.git/blame - ceph/src/spdk/ocf/tests/unit/tests/utils/utils_refcnt.c/utils_refcnt_unfreeze.c
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / ocf / tests / unit / tests / utils / utils_refcnt.c / utils_refcnt_unfreeze.c
CommitLineData
f67539c2
TL
1/*
2 * <tested_file_path>src/utils/utils_refcnt.c</tested_file_path>
3 * <tested_function>ocf_refcnt_unfreeze</tested_function>
4 * <functions_to_leave>
5 * ocf_refcnt_init
6 * ocf_refcnt_inc
7 * ocf_refcnt_dec
8 * ocf_refcnt_freeze
9 * </functions_to_leave>
10 */
11
12#undef static
13
14#undef inline
15
16
17#include <stdarg.h>
18#include <stddef.h>
19#include <setjmp.h>
20#include <cmocka.h>
21#include "print_desc.h"
22
23#include "../utils/utils_refcnt.h"
24
25#include "utils/utils_refcnt.c/utils_refcnt_unfreeze_generated_wraps.c"
26
27static void ocf_refcnt_unfreeze_test01(void **state)
28{
29 struct ocf_refcnt rc;
30 int val, val2;
31
32 print_test_description("Unfreeze decrements freeze counter");
33
34 ocf_refcnt_init(&rc);
35
36 ocf_refcnt_freeze(&rc);
37 ocf_refcnt_freeze(&rc);
38 val = env_atomic_read(&rc.freeze);
39
40 ocf_refcnt_unfreeze(&rc);
41 val2 = env_atomic_read(&rc.freeze);
42 assert_int_equal(val2, val - 1);
43
44 ocf_refcnt_unfreeze(&rc);
45 val2 = env_atomic_read(&rc.freeze);
46 assert_int_equal(val2, val - 2);
47
48}
49
50static void ocf_refcnt_unfreeze_test02(void **state)
51{
52 struct ocf_refcnt rc;
53 int val, val2;
54
55 print_test_description("Unfreezed counter can be incremented");
56
57 ocf_refcnt_init(&rc);
58
59 val = ocf_refcnt_inc(&rc);
60 ocf_refcnt_freeze(&rc);
61 ocf_refcnt_unfreeze(&rc);
62 val2 = ocf_refcnt_inc(&rc);
63
64 assert_int_equal(val2, val + 1);
65}
66
67static void ocf_refcnt_unfreeze_test03(void **state)
68{
69 struct ocf_refcnt rc;
70 int val, val2;
71
72 print_test_description("Two freezes require two unfreezes");
73
74 ocf_refcnt_init(&rc);
75
76 val = ocf_refcnt_inc(&rc);
77 ocf_refcnt_freeze(&rc);
78 ocf_refcnt_freeze(&rc);
79 ocf_refcnt_unfreeze(&rc);
80 val2 = ocf_refcnt_inc(&rc);
81
82 assert_int_equal(0, val2);
83
84 ocf_refcnt_unfreeze(&rc);
85 val2 = ocf_refcnt_inc(&rc);
86
87 assert_int_equal(val2, val + 1);
88}
89
90int main(void)
91{
92 const struct CMUnitTest tests[] = {
93 cmocka_unit_test(ocf_refcnt_unfreeze_test01),
94 cmocka_unit_test(ocf_refcnt_unfreeze_test02),
95 cmocka_unit_test(ocf_refcnt_unfreeze_test03),
96 };
97
98 print_message("Unit test of src/utils/utils_refcnt.c");
99
100 return cmocka_run_group_tests(tests, NULL, NULL);
101}