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