xref: /unit/src/test/nxt_tests.c (revision 1975:6a47cab8f271)
1384Szelenkov@nginx.com 
2384Szelenkov@nginx.com /*
3384Szelenkov@nginx.com  * Copyright (C) Igor Sysoev
4384Szelenkov@nginx.com  * Copyright (C) NGINX, Inc.
5384Szelenkov@nginx.com  */
6384Szelenkov@nginx.com 
7384Szelenkov@nginx.com #include <nxt_main.h>
8384Szelenkov@nginx.com #include "nxt_tests.h"
9384Szelenkov@nginx.com 
10384Szelenkov@nginx.com 
11384Szelenkov@nginx.com extern char  **environ;
12384Szelenkov@nginx.com 
13384Szelenkov@nginx.com nxt_module_init_t  nxt_init_modules[1];
14384Szelenkov@nginx.com nxt_uint_t         nxt_init_modules_n;
15384Szelenkov@nginx.com 
16384Szelenkov@nginx.com 
17384Szelenkov@nginx.com /* The function is defined here to prevent inline optimizations. */
18384Szelenkov@nginx.com static nxt_bool_t
19384Szelenkov@nginx.com nxt_msec_less(nxt_msec_t first, nxt_msec_t second)
20384Szelenkov@nginx.com {
21384Szelenkov@nginx.com     return (nxt_msec_diff(first, second) < 0);
22384Szelenkov@nginx.com }
23384Szelenkov@nginx.com 
24384Szelenkov@nginx.com 
25384Szelenkov@nginx.com int nxt_cdecl
26384Szelenkov@nginx.com main(int argc, char **argv)
27384Szelenkov@nginx.com {
28384Szelenkov@nginx.com     nxt_task_t    task;
29384Szelenkov@nginx.com     nxt_thread_t  *thr;
30384Szelenkov@nginx.com 
31384Szelenkov@nginx.com     if (nxt_lib_start("tests", argv, &environ) != NXT_OK) {
32384Szelenkov@nginx.com         return 1;
33384Szelenkov@nginx.com     }
34384Szelenkov@nginx.com 
35384Szelenkov@nginx.com     nxt_main_log.level = NXT_LOG_INFO;
36384Szelenkov@nginx.com     task.log  = &nxt_main_log;
37384Szelenkov@nginx.com 
38384Szelenkov@nginx.com     thr = nxt_thread();
39384Szelenkov@nginx.com     thr->task = &task;
40384Szelenkov@nginx.com 
41384Szelenkov@nginx.com #if (NXT_TEST_RTDTSC)
42384Szelenkov@nginx.com 
43384Szelenkov@nginx.com     if (nxt_process_argv[1] != NULL
44384Szelenkov@nginx.com         && nxt_memcmp(nxt_process_argv[1], "rbm", 3) == 0)
45384Szelenkov@nginx.com     {
46384Szelenkov@nginx.com         if (nxt_rbtree1_mb_start(thr) != NXT_OK) {
47384Szelenkov@nginx.com             return 1;
48384Szelenkov@nginx.com         }
49384Szelenkov@nginx.com 
50384Szelenkov@nginx.com         if (nxt_rbtree_mb_start(thr) != NXT_OK) {
51384Szelenkov@nginx.com             return 1;
52384Szelenkov@nginx.com         }
53384Szelenkov@nginx.com 
54384Szelenkov@nginx.com         if (nxt_lvlhsh_test(thr, 500 * 1000, 0) != NXT_OK) {
55384Szelenkov@nginx.com             return 1;
56384Szelenkov@nginx.com         }
57384Szelenkov@nginx.com 
58384Szelenkov@nginx.com         nxt_rbtree1_mb_insert(thr);
59384Szelenkov@nginx.com         nxt_rbtree_mb_insert(thr);
60384Szelenkov@nginx.com 
61384Szelenkov@nginx.com         if (nxt_lvlhsh_test(thr, 500 * 1000, 0) != NXT_OK) {
62384Szelenkov@nginx.com             return 1;
63384Szelenkov@nginx.com         }
64384Szelenkov@nginx.com 
65384Szelenkov@nginx.com         nxt_rbtree1_mb_delete(thr);
66384Szelenkov@nginx.com         nxt_rbtree_mb_delete(thr);
67384Szelenkov@nginx.com 
68384Szelenkov@nginx.com         return 0;
69384Szelenkov@nginx.com     }
70384Szelenkov@nginx.com 
71384Szelenkov@nginx.com #endif
72384Szelenkov@nginx.com 
73384Szelenkov@nginx.com     if (nxt_random_test(thr) != NXT_OK) {
74384Szelenkov@nginx.com         return 1;
75384Szelenkov@nginx.com     }
76384Szelenkov@nginx.com 
77384Szelenkov@nginx.com     if (nxt_term_parse_test(thr) != NXT_OK) {
78384Szelenkov@nginx.com         return 1;
79384Szelenkov@nginx.com     }
80384Szelenkov@nginx.com 
81384Szelenkov@nginx.com     if (nxt_msec_diff_test(thr, nxt_msec_less) != NXT_OK) {
82384Szelenkov@nginx.com         return 1;
83384Szelenkov@nginx.com     }
84384Szelenkov@nginx.com 
85384Szelenkov@nginx.com     if (nxt_rbtree_test(thr, 100 * 1000) != NXT_OK) {
86384Szelenkov@nginx.com         return 1;
87384Szelenkov@nginx.com     }
88384Szelenkov@nginx.com 
89384Szelenkov@nginx.com     if (nxt_rbtree_test(thr, 1000 * 1000) != NXT_OK) {
90384Szelenkov@nginx.com         return 1;
91384Szelenkov@nginx.com     }
92384Szelenkov@nginx.com 
93384Szelenkov@nginx.com     if (nxt_rbtree1_test(thr, 100 * 1000) != NXT_OK) {
94384Szelenkov@nginx.com         return 1;
95384Szelenkov@nginx.com     }
96384Szelenkov@nginx.com 
97384Szelenkov@nginx.com     if (nxt_rbtree1_test(thr, 1000 * 1000) != NXT_OK) {
98384Szelenkov@nginx.com         return 1;
99384Szelenkov@nginx.com     }
100384Szelenkov@nginx.com 
101384Szelenkov@nginx.com     if (nxt_mp_test(thr, 100, 40000, 128 - 1) != NXT_OK) {
102384Szelenkov@nginx.com         return 1;
103384Szelenkov@nginx.com     }
104384Szelenkov@nginx.com 
105384Szelenkov@nginx.com     if (nxt_mp_test(thr, 100, 1000, 4096 - 1) != NXT_OK) {
106384Szelenkov@nginx.com         return 1;
107384Szelenkov@nginx.com     }
108384Szelenkov@nginx.com 
109384Szelenkov@nginx.com     if (nxt_mp_test(thr, 1000, 100, 64 * 1024 - 1) != NXT_OK) {
110384Szelenkov@nginx.com         return 1;
111384Szelenkov@nginx.com     }
112384Szelenkov@nginx.com 
113384Szelenkov@nginx.com     if (nxt_mem_zone_test(thr, 100, 20000, 128 - 1) != NXT_OK) {
114384Szelenkov@nginx.com         return 1;
115384Szelenkov@nginx.com     }
116384Szelenkov@nginx.com 
117384Szelenkov@nginx.com     if (nxt_mem_zone_test(thr, 100, 10000, 4096 - 1) != NXT_OK) {
118384Szelenkov@nginx.com         return 1;
119384Szelenkov@nginx.com     }
120384Szelenkov@nginx.com 
121384Szelenkov@nginx.com     if (nxt_mem_zone_test(thr, 1000, 40, 64 * 1024 - 1) != NXT_OK) {
122384Szelenkov@nginx.com         return 1;
123384Szelenkov@nginx.com     }
124384Szelenkov@nginx.com 
125384Szelenkov@nginx.com     if (nxt_lvlhsh_test(thr, 2, 1) != NXT_OK) {
126384Szelenkov@nginx.com         return 1;
127384Szelenkov@nginx.com     }
128384Szelenkov@nginx.com 
129384Szelenkov@nginx.com     if (nxt_lvlhsh_test(thr, 100 * 1000, 1) != NXT_OK) {
130384Szelenkov@nginx.com         return 1;
131384Szelenkov@nginx.com     }
132384Szelenkov@nginx.com 
133384Szelenkov@nginx.com     if (nxt_lvlhsh_test(thr, 100 * 1000, 0) != NXT_OK) {
134384Szelenkov@nginx.com         return 1;
135384Szelenkov@nginx.com     }
136384Szelenkov@nginx.com 
137384Szelenkov@nginx.com     if (nxt_lvlhsh_test(thr, 1000 * 1000, 1) != NXT_OK) {
138384Szelenkov@nginx.com         return 1;
139384Szelenkov@nginx.com     }
140384Szelenkov@nginx.com 
141384Szelenkov@nginx.com     if (nxt_gmtime_test(thr) != NXT_OK) {
142384Szelenkov@nginx.com         return 1;
143384Szelenkov@nginx.com     }
144384Szelenkov@nginx.com 
145384Szelenkov@nginx.com     if (nxt_sprintf_test(thr) != NXT_OK) {
146384Szelenkov@nginx.com         return 1;
147384Szelenkov@nginx.com     }
148384Szelenkov@nginx.com 
149384Szelenkov@nginx.com     if (nxt_malloc_test(thr) != NXT_OK) {
150384Szelenkov@nginx.com         return 1;
151384Szelenkov@nginx.com     }
152384Szelenkov@nginx.com 
153384Szelenkov@nginx.com     if (nxt_utf8_test(thr) != NXT_OK) {
154384Szelenkov@nginx.com         return 1;
155384Szelenkov@nginx.com     }
156384Szelenkov@nginx.com 
157384Szelenkov@nginx.com     if (nxt_http_parse_test(thr) != NXT_OK) {
158384Szelenkov@nginx.com         return 1;
159384Szelenkov@nginx.com     }
160384Szelenkov@nginx.com 
161384Szelenkov@nginx.com     if (nxt_strverscmp_test(thr) != NXT_OK) {
162384Szelenkov@nginx.com         return 1;
163384Szelenkov@nginx.com     }
164384Szelenkov@nginx.com 
165*1975Svbart@nginx.com     if (nxt_base64_test(thr) != NXT_OK) {
166*1975Svbart@nginx.com         return 1;
167*1975Svbart@nginx.com     }
168*1975Svbart@nginx.com 
1691306St.nateldemoura@f5.com #if (NXT_HAVE_CLONE_NEWUSER)
1701306St.nateldemoura@f5.com     if (nxt_clone_creds_test(thr) != NXT_OK) {
1711306St.nateldemoura@f5.com         return 1;
1721306St.nateldemoura@f5.com     }
1731306St.nateldemoura@f5.com #endif
1741306St.nateldemoura@f5.com 
175384Szelenkov@nginx.com     return 0;
176384Szelenkov@nginx.com }
177