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*1306St.nateldemoura@f5.com #if (NXT_HAVE_CLONE_NEWUSER) 166*1306St.nateldemoura@f5.com if (nxt_clone_creds_test(thr) != NXT_OK) { 167*1306St.nateldemoura@f5.com return 1; 168*1306St.nateldemoura@f5.com } 169*1306St.nateldemoura@f5.com #endif 170*1306St.nateldemoura@f5.com 171384Szelenkov@nginx.com return 0; 172384Szelenkov@nginx.com } 173