Files
nginx-unit/src/test/nxt_tests.c
Alejandro Colomar 1b05161107 Removed the unsafe nxt_memcmp() wrapper for memcmp(3).
The casts are unnecessary, since memcmp(3)'s arguments are 'void *'.
It might have been necessary in the times of K&R, where 'void *' didn't
exist.  Nowadays, it's unnecessary, and _very_ unsafe, since casts can
hide all classes of bugs by silencing most compiler warnings.

The changes from nxt_memcmp() to memcmp(3) were scripted:

$ find src/ -type f \
  | grep '\.[ch]$' \
  | xargs sed -i 's/nxt_memcmp/memcmp/'

Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
2022-11-04 00:30:27 +01:00

177 lines
3.3 KiB
C

/*
* Copyright (C) Igor Sysoev
* Copyright (C) NGINX, Inc.
*/
#include <nxt_main.h>
#include "nxt_tests.h"
extern char **environ;
nxt_module_init_t nxt_init_modules[1];
nxt_uint_t nxt_init_modules_n;
/* The function is defined here to prevent inline optimizations. */
static nxt_bool_t
nxt_msec_less(nxt_msec_t first, nxt_msec_t second)
{
return (nxt_msec_diff(first, second) < 0);
}
int nxt_cdecl
main(int argc, char **argv)
{
nxt_task_t task;
nxt_thread_t *thr;
if (nxt_lib_start("tests", argv, &environ) != NXT_OK) {
return 1;
}
nxt_main_log.level = NXT_LOG_INFO;
task.log = &nxt_main_log;
thr = nxt_thread();
thr->task = &task;
#if (NXT_TEST_RTDTSC)
if (nxt_process_argv[1] != NULL
&& memcmp(nxt_process_argv[1], "rbm", 3) == 0)
{
if (nxt_rbtree1_mb_start(thr) != NXT_OK) {
return 1;
}
if (nxt_rbtree_mb_start(thr) != NXT_OK) {
return 1;
}
if (nxt_lvlhsh_test(thr, 500 * 1000, 0) != NXT_OK) {
return 1;
}
nxt_rbtree1_mb_insert(thr);
nxt_rbtree_mb_insert(thr);
if (nxt_lvlhsh_test(thr, 500 * 1000, 0) != NXT_OK) {
return 1;
}
nxt_rbtree1_mb_delete(thr);
nxt_rbtree_mb_delete(thr);
return 0;
}
#endif
if (nxt_random_test(thr) != NXT_OK) {
return 1;
}
if (nxt_term_parse_test(thr) != NXT_OK) {
return 1;
}
if (nxt_msec_diff_test(thr, nxt_msec_less) != NXT_OK) {
return 1;
}
if (nxt_rbtree_test(thr, 100 * 1000) != NXT_OK) {
return 1;
}
if (nxt_rbtree_test(thr, 1000 * 1000) != NXT_OK) {
return 1;
}
if (nxt_rbtree1_test(thr, 100 * 1000) != NXT_OK) {
return 1;
}
if (nxt_rbtree1_test(thr, 1000 * 1000) != NXT_OK) {
return 1;
}
if (nxt_mp_test(thr, 100, 40000, 128 - 1) != NXT_OK) {
return 1;
}
if (nxt_mp_test(thr, 100, 1000, 4096 - 1) != NXT_OK) {
return 1;
}
if (nxt_mp_test(thr, 1000, 100, 64 * 1024 - 1) != NXT_OK) {
return 1;
}
if (nxt_mem_zone_test(thr, 100, 20000, 128 - 1) != NXT_OK) {
return 1;
}
if (nxt_mem_zone_test(thr, 100, 10000, 4096 - 1) != NXT_OK) {
return 1;
}
if (nxt_mem_zone_test(thr, 1000, 40, 64 * 1024 - 1) != NXT_OK) {
return 1;
}
if (nxt_lvlhsh_test(thr, 2, 1) != NXT_OK) {
return 1;
}
if (nxt_lvlhsh_test(thr, 100 * 1000, 1) != NXT_OK) {
return 1;
}
if (nxt_lvlhsh_test(thr, 100 * 1000, 0) != NXT_OK) {
return 1;
}
if (nxt_lvlhsh_test(thr, 1000 * 1000, 1) != NXT_OK) {
return 1;
}
if (nxt_gmtime_test(thr) != NXT_OK) {
return 1;
}
if (nxt_sprintf_test(thr) != NXT_OK) {
return 1;
}
if (nxt_malloc_test(thr) != NXT_OK) {
return 1;
}
if (nxt_utf8_test(thr) != NXT_OK) {
return 1;
}
if (nxt_http_parse_test(thr) != NXT_OK) {
return 1;
}
if (nxt_strverscmp_test(thr) != NXT_OK) {
return 1;
}
if (nxt_base64_test(thr) != NXT_OK) {
return 1;
}
#if (NXT_HAVE_CLONE_NEWUSER)
if (nxt_clone_creds_test(thr) != NXT_OK) {
return 1;
}
#endif
return 0;
}