support if: else: endif: conditional tests
[nobug.git] / tests / test_nobug_resources_basic.c
blob2c9fd051c30232a23d411c610027f8a8649a071f
1 #include "test.h"
2 #include "nobug.h"
4 RESOURCE_HANDLE(t);
5 enum nobug_resource_state threadenter;
8 void* threadfn(void* nop)
10 RESOURCE_HANDLE(e);
11 RESOURCE_HANDLE_INIT(e);
12 ECHO ("thread startup");
14 if (threadenter != NOBUG_RESOURCE_WAITING)
16 ECHO ("enter via wait");
17 #if 0
18 RESOURCE_ENTER(NOBUG_ON, t, "thread", NOBUG_RESOURCE_WAITING, e);
19 NOBUG_RESOURCE_STATE(NOBUG_ON, threadenter, e);
20 RESOURCE_LEAVE(NOBUG_ON, e);
21 #endif
24 ECHO ("enter direct");
25 // RESOURCE_ENTER(NOBUG_ON, t, "thread", threadenter, e);
26 // RESOURCE_LEAVE(NOBUG_ON, e);
28 ECHO ("thread finished");
29 return nop;
33 TESTS_BEGIN
34 ECHO ("testing");
36 TEST(resourcerecord_basic)
38 nobug_resource_init ();
39 struct nobug_resource_record* rec =
40 nobug_resource_announce ("test", "test", 0, "boring");
42 nobug_resource_list (&(struct nobug_resource_dump_context)
43 {&nobug_flag_NOBUG_ON,
44 NOBUG_RESOURCE_LOG_LEVEL,
45 NOBUG_LOCATION_ARGS});
47 nobug_resource_dump_all (&(struct nobug_resource_dump_context)
48 {&nobug_flag_NOBUG_ON,
49 LOG_EMERG,
50 NOBUG_LOCATION_ARGS});
52 ret = nobug_resource_forget (rec);
56 TEST(resource_memory_trace)
58 nobug_resource_init ();
60 ECHO ("initial free resource records %u", nobug_resource_record_available ());
61 ECHO ("initial free resource users %u", nobug_resource_user_available ());
62 ECHO ("initial free resource nodes %u", nobug_resource_node_available ());
64 struct nobug_resource_record* rec =
65 nobug_resource_announce ("test", "test", 0, "boring");
67 ECHO ("after announce free resource records %u", nobug_resource_record_available ());
68 ECHO ("after announce free resource users %u", nobug_resource_user_available ());
69 ECHO ("after announce free resource nodes %u", nobug_resource_node_available ());
71 struct nobug_resource_user* user =
72 nobug_resource_enter (rec,
73 "user",
74 NOBUG_RESOURCE_EXCLUSIVE,
75 "foobar");
77 ECHO ("after enter free resource records %u", nobug_resource_record_available ());
78 ECHO ("after enter free resource users %u", nobug_resource_user_available ());
79 ECHO ("after enter free resource nodes %u", nobug_resource_node_available ());
81 if (nobug_resource_leave (user) == 1)
83 ECHO ("after leave free resource records %u", nobug_resource_record_available ());
84 ECHO ("after leave free resource users %u", nobug_resource_user_available ());
85 ECHO ("after leave free resource nodes %u", nobug_resource_node_available ());
87 ret = nobug_resource_forget (rec);
89 ECHO ("after forget free resource records %u", nobug_resource_record_available ());
90 ECHO ("after forget free resource users %u", nobug_resource_user_available ());
91 ECHO ("after forget free resource nodes %u", nobug_resource_node_available ());
96 TEST(resource_enterleave)
98 nobug_resource_init ();
100 struct nobug_resource_record* rec =
101 nobug_resource_announce ("test", "test", 0, "boring");
103 struct nobug_resource_user* user =
104 nobug_resource_enter (rec,
105 "user",
106 NOBUG_RESOURCE_EXCLUSIVE,
107 "foobar");
109 nobug_resource_list (&(struct nobug_resource_dump_context)
110 {&nobug_flag_NOBUG_ON,
111 NOBUG_RESOURCE_LOG_LEVEL,
112 NOBUG_LOCATION_ARGS});
114 nobug_resource_dump_all (&(struct nobug_resource_dump_context)
115 {&nobug_flag_NOBUG_ON,
116 LOG_EMERG,
117 NOBUG_LOCATION_ARGS});
119 if (nobug_resource_leave (user) == 1)
120 ret = nobug_resource_forget (rec);
125 TEST(resource_statechange)
127 nobug_resource_init ();
128 struct nobug_resource_record* rec =
129 nobug_resource_announce ("test", "test", 0, "boring");
131 nobug_resource_list (&(struct nobug_resource_dump_context)
132 {&nobug_flag_NOBUG_ON,
133 NOBUG_RESOURCE_LOG_LEVEL,
134 NOBUG_LOCATION_ARGS});
136 struct nobug_resource_user* user =
137 nobug_resource_enter (rec,
138 "user",
139 NOBUG_RESOURCE_WAITING,
140 "foobar");
142 nobug_resource_dump_all (&(struct nobug_resource_dump_context)
143 {&nobug_flag_NOBUG_ON,
144 LOG_EMERG,
145 NOBUG_LOCATION_ARGS});
147 if (nobug_resource_state (user, NOBUG_RESOURCE_EXCLUSIVE))
149 nobug_resource_dump_all (&(struct nobug_resource_dump_context)
150 {&nobug_flag_NOBUG_ON,
151 LOG_EMERG,
152 NOBUG_LOCATION_ARGS});
154 if (nobug_resource_leave (user) == 1)
155 ret = nobug_resource_forget (rec);
159 nobug_destroy();
161 TESTS_END