xref: /unit/src/test/nxt_tests.c (revision 384)
1*384Szelenkov@nginx.com 
2*384Szelenkov@nginx.com /*
3*384Szelenkov@nginx.com  * Copyright (C) Igor Sysoev
4*384Szelenkov@nginx.com  * Copyright (C) NGINX, Inc.
5*384Szelenkov@nginx.com  */
6*384Szelenkov@nginx.com 
7*384Szelenkov@nginx.com #include <nxt_main.h>
8*384Szelenkov@nginx.com #include "nxt_tests.h"
9*384Szelenkov@nginx.com 
10*384Szelenkov@nginx.com 
11*384Szelenkov@nginx.com extern char  **environ;
12*384Szelenkov@nginx.com 
13*384Szelenkov@nginx.com nxt_module_init_t  nxt_init_modules[1];
14*384Szelenkov@nginx.com nxt_uint_t         nxt_init_modules_n;
15*384Szelenkov@nginx.com 
16*384Szelenkov@nginx.com 
17*384Szelenkov@nginx.com /* The function is defined here to prevent inline optimizations. */
18*384Szelenkov@nginx.com static nxt_bool_t
19*384Szelenkov@nginx.com nxt_msec_less(nxt_msec_t first, nxt_msec_t second)
20*384Szelenkov@nginx.com {
21*384Szelenkov@nginx.com     return (nxt_msec_diff(first, second) < 0);
22*384Szelenkov@nginx.com }
23*384Szelenkov@nginx.com 
24*384Szelenkov@nginx.com 
25*384Szelenkov@nginx.com int nxt_cdecl
26*384Szelenkov@nginx.com main(int argc, char **argv)
27*384Szelenkov@nginx.com {
28*384Szelenkov@nginx.com     nxt_task_t    task;
29*384Szelenkov@nginx.com     nxt_thread_t  *thr;
30*384Szelenkov@nginx.com 
31*384Szelenkov@nginx.com     if (nxt_lib_start("tests", argv, &environ) != NXT_OK) {
32*384Szelenkov@nginx.com         return 1;
33*384Szelenkov@nginx.com     }
34*384Szelenkov@nginx.com 
35*384Szelenkov@nginx.com     nxt_main_log.level = NXT_LOG_INFO;
36*384Szelenkov@nginx.com     task.log  = &nxt_main_log;
37*384Szelenkov@nginx.com 
38*384Szelenkov@nginx.com     thr = nxt_thread();
39*384Szelenkov@nginx.com     thr->task = &task;
40*384Szelenkov@nginx.com 
41*384Szelenkov@nginx.com #if (NXT_TEST_RTDTSC)
42*384Szelenkov@nginx.com 
43*384Szelenkov@nginx.com     if (nxt_process_argv[1] != NULL
44*384Szelenkov@nginx.com         && nxt_memcmp(nxt_process_argv[1], "rbm", 3) == 0)
45*384Szelenkov@nginx.com     {
46*384Szelenkov@nginx.com         if (nxt_rbtree1_mb_start(thr) != NXT_OK) {
47*384Szelenkov@nginx.com             return 1;
48*384Szelenkov@nginx.com         }
49*384Szelenkov@nginx.com 
50*384Szelenkov@nginx.com         if (nxt_rbtree_mb_start(thr) != NXT_OK) {
51*384Szelenkov@nginx.com             return 1;
52*384Szelenkov@nginx.com         }
53*384Szelenkov@nginx.com 
54*384Szelenkov@nginx.com         if (nxt_lvlhsh_test(thr, 500 * 1000, 0) != NXT_OK) {
55*384Szelenkov@nginx.com             return 1;
56*384Szelenkov@nginx.com         }
57*384Szelenkov@nginx.com 
58*384Szelenkov@nginx.com         nxt_rbtree1_mb_insert(thr);
59*384Szelenkov@nginx.com         nxt_rbtree_mb_insert(thr);
60*384Szelenkov@nginx.com 
61*384Szelenkov@nginx.com         if (nxt_lvlhsh_test(thr, 500 * 1000, 0) != NXT_OK) {
62*384Szelenkov@nginx.com             return 1;
63*384Szelenkov@nginx.com         }
64*384Szelenkov@nginx.com 
65*384Szelenkov@nginx.com         nxt_rbtree1_mb_delete(thr);
66*384Szelenkov@nginx.com         nxt_rbtree_mb_delete(thr);
67*384Szelenkov@nginx.com 
68*384Szelenkov@nginx.com         return 0;
69*384Szelenkov@nginx.com     }
70*384Szelenkov@nginx.com 
71*384Szelenkov@nginx.com #endif
72*384Szelenkov@nginx.com 
73*384Szelenkov@nginx.com     if (nxt_random_test(thr) != NXT_OK) {
74*384Szelenkov@nginx.com         return 1;
75*384Szelenkov@nginx.com     }
76*384Szelenkov@nginx.com 
77*384Szelenkov@nginx.com     if (nxt_term_parse_test(thr) != NXT_OK) {
78*384Szelenkov@nginx.com         return 1;
79*384Szelenkov@nginx.com     }
80*384Szelenkov@nginx.com 
81*384Szelenkov@nginx.com     if (nxt_msec_diff_test(thr, nxt_msec_less) != NXT_OK) {
82*384Szelenkov@nginx.com         return 1;
83*384Szelenkov@nginx.com     }
84*384Szelenkov@nginx.com 
85*384Szelenkov@nginx.com     if (nxt_rbtree_test(thr, 100 * 1000) != NXT_OK) {
86*384Szelenkov@nginx.com         return 1;
87*384Szelenkov@nginx.com     }
88*384Szelenkov@nginx.com 
89*384Szelenkov@nginx.com     if (nxt_rbtree_test(thr, 1000 * 1000) != NXT_OK) {
90*384Szelenkov@nginx.com         return 1;
91*384Szelenkov@nginx.com     }
92*384Szelenkov@nginx.com 
93*384Szelenkov@nginx.com     if (nxt_rbtree1_test(thr, 100 * 1000) != NXT_OK) {
94*384Szelenkov@nginx.com         return 1;
95*384Szelenkov@nginx.com     }
96*384Szelenkov@nginx.com 
97*384Szelenkov@nginx.com     if (nxt_rbtree1_test(thr, 1000 * 1000) != NXT_OK) {
98*384Szelenkov@nginx.com         return 1;
99*384Szelenkov@nginx.com     }
100*384Szelenkov@nginx.com 
101*384Szelenkov@nginx.com     if (nxt_mp_test(thr, 100, 40000, 128 - 1) != NXT_OK) {
102*384Szelenkov@nginx.com         return 1;
103*384Szelenkov@nginx.com     }
104*384Szelenkov@nginx.com 
105*384Szelenkov@nginx.com     if (nxt_mp_test(thr, 100, 1000, 4096 - 1) != NXT_OK) {
106*384Szelenkov@nginx.com         return 1;
107*384Szelenkov@nginx.com     }
108*384Szelenkov@nginx.com 
109*384Szelenkov@nginx.com     if (nxt_mp_test(thr, 1000, 100, 64 * 1024 - 1) != NXT_OK) {
110*384Szelenkov@nginx.com         return 1;
111*384Szelenkov@nginx.com     }
112*384Szelenkov@nginx.com 
113*384Szelenkov@nginx.com     if (nxt_mem_zone_test(thr, 100, 20000, 128 - 1) != NXT_OK) {
114*384Szelenkov@nginx.com         return 1;
115*384Szelenkov@nginx.com     }
116*384Szelenkov@nginx.com 
117*384Szelenkov@nginx.com     if (nxt_mem_zone_test(thr, 100, 10000, 4096 - 1) != NXT_OK) {
118*384Szelenkov@nginx.com         return 1;
119*384Szelenkov@nginx.com     }
120*384Szelenkov@nginx.com 
121*384Szelenkov@nginx.com     if (nxt_mem_zone_test(thr, 1000, 40, 64 * 1024 - 1) != NXT_OK) {
122*384Szelenkov@nginx.com         return 1;
123*384Szelenkov@nginx.com     }
124*384Szelenkov@nginx.com 
125*384Szelenkov@nginx.com     if (nxt_lvlhsh_test(thr, 2, 1) != NXT_OK) {
126*384Szelenkov@nginx.com         return 1;
127*384Szelenkov@nginx.com     }
128*384Szelenkov@nginx.com 
129*384Szelenkov@nginx.com     if (nxt_lvlhsh_test(thr, 100 * 1000, 1) != NXT_OK) {
130*384Szelenkov@nginx.com         return 1;
131*384Szelenkov@nginx.com     }
132*384Szelenkov@nginx.com 
133*384Szelenkov@nginx.com     if (nxt_lvlhsh_test(thr, 100 * 1000, 0) != NXT_OK) {
134*384Szelenkov@nginx.com         return 1;
135*384Szelenkov@nginx.com     }
136*384Szelenkov@nginx.com 
137*384Szelenkov@nginx.com     if (nxt_lvlhsh_test(thr, 1000 * 1000, 1) != NXT_OK) {
138*384Szelenkov@nginx.com         return 1;
139*384Szelenkov@nginx.com     }
140*384Szelenkov@nginx.com 
141*384Szelenkov@nginx.com     if (nxt_gmtime_test(thr) != NXT_OK) {
142*384Szelenkov@nginx.com         return 1;
143*384Szelenkov@nginx.com     }
144*384Szelenkov@nginx.com 
145*384Szelenkov@nginx.com     if (nxt_sprintf_test(thr) != NXT_OK) {
146*384Szelenkov@nginx.com         return 1;
147*384Szelenkov@nginx.com     }
148*384Szelenkov@nginx.com 
149*384Szelenkov@nginx.com     if (nxt_malloc_test(thr) != NXT_OK) {
150*384Szelenkov@nginx.com         return 1;
151*384Szelenkov@nginx.com     }
152*384Szelenkov@nginx.com 
153*384Szelenkov@nginx.com     if (nxt_utf8_test(thr) != NXT_OK) {
154*384Szelenkov@nginx.com         return 1;
155*384Szelenkov@nginx.com     }
156*384Szelenkov@nginx.com 
157*384Szelenkov@nginx.com     if (nxt_http_parse_test(thr) != NXT_OK) {
158*384Szelenkov@nginx.com         return 1;
159*384Szelenkov@nginx.com     }
160*384Szelenkov@nginx.com 
161*384Szelenkov@nginx.com     if (nxt_strverscmp_test(thr) != NXT_OK) {
162*384Szelenkov@nginx.com         return 1;
163*384Szelenkov@nginx.com     }
164*384Szelenkov@nginx.com 
165*384Szelenkov@nginx.com     return 0;
166*384Szelenkov@nginx.com }
167