mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 22:58:50 +01:00
Merge branch 'maint-0.3.5' into maint-0.4.3
This commit is contained in:
commit
b5a88e8d47
11 changed files with 90 additions and 3 deletions
4
changes/parallel_unit_test
Normal file
4
changes/parallel_unit_test
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
o Minor features (tests):
|
||||||
|
- Our "make check" target now runs the unit tests in 8 parallel chunks.
|
||||||
|
Doing this speeds up hardened CI builds by more than a factor of two.
|
||||||
|
Closes ticket 40098.
|
|
@ -25,7 +25,16 @@ TESTSCRIPTS = \
|
||||||
src/test/test_workqueue_socketpair.sh \
|
src/test/test_workqueue_socketpair.sh \
|
||||||
src/test/test_switch_id.sh \
|
src/test/test_switch_id.sh \
|
||||||
src/test/test_cmdline.sh \
|
src/test/test_cmdline.sh \
|
||||||
src/test/test_parseconf.sh
|
src/test/test_parseconf.sh \
|
||||||
|
src/test/test_switch_id.sh \
|
||||||
|
src/test/unittest_part1.sh \
|
||||||
|
src/test/unittest_part2.sh \
|
||||||
|
src/test/unittest_part3.sh \
|
||||||
|
src/test/unittest_part4.sh \
|
||||||
|
src/test/unittest_part5.sh \
|
||||||
|
src/test/unittest_part6.sh \
|
||||||
|
src/test/unittest_part7.sh \
|
||||||
|
src/test/unittest_part8.sh
|
||||||
|
|
||||||
if USE_RUST
|
if USE_RUST
|
||||||
TESTSCRIPTS += \
|
TESTSCRIPTS += \
|
||||||
|
@ -53,7 +62,7 @@ TESTSCRIPTS += \
|
||||||
scripts/maint/checkSpaceTest.sh
|
scripts/maint/checkSpaceTest.sh
|
||||||
endif
|
endif
|
||||||
|
|
||||||
TESTS += src/test/test src/test/test-slow src/test/test-memwipe \
|
TESTS += src/test/test-slow src/test/test-memwipe \
|
||||||
src/test/test_workqueue \
|
src/test/test_workqueue \
|
||||||
src/test/test_keygen.sh \
|
src/test/test_keygen.sh \
|
||||||
src/test/test_key_expiration.sh \
|
src/test/test_key_expiration.sh \
|
||||||
|
@ -432,7 +441,15 @@ EXTRA_DIST += \
|
||||||
src/test/test_workqueue_pipe2.sh \
|
src/test/test_workqueue_pipe2.sh \
|
||||||
src/test/test_workqueue_socketpair.sh \
|
src/test/test_workqueue_socketpair.sh \
|
||||||
src/test/test_cmdline.sh \
|
src/test/test_cmdline.sh \
|
||||||
src/test/test_parseconf.sh
|
src/test/test_parseconf.sh \
|
||||||
|
src/test/unittest_part1.sh \
|
||||||
|
src/test/unittest_part2.sh \
|
||||||
|
src/test/unittest_part3.sh \
|
||||||
|
src/test/unittest_part4.sh \
|
||||||
|
src/test/unittest_part5.sh \
|
||||||
|
src/test/unittest_part6.sh \
|
||||||
|
src/test/unittest_part7.sh \
|
||||||
|
src/test/unittest_part8.sh
|
||||||
|
|
||||||
test-rust:
|
test-rust:
|
||||||
$(TESTS_ENVIRONMENT) "$(abs_top_srcdir)/src/test/test_rust.sh"
|
$(TESTS_ENVIRONMENT) "$(abs_top_srcdir)/src/test/test_rust.sh"
|
||||||
|
|
|
@ -286,6 +286,8 @@ main(int c, const char **v)
|
||||||
/* Don't add default logs; the tests manage their own. */
|
/* Don't add default logs; the tests manage their own. */
|
||||||
quiet_level = QUIET_SILENT;
|
quiet_level = QUIET_SILENT;
|
||||||
|
|
||||||
|
unsigned num=1, den=1;
|
||||||
|
|
||||||
for (i_out = i = 1; i < c; ++i) {
|
for (i_out = i = 1; i < c; ++i) {
|
||||||
if (!strcmp(v[i], "--warn")) {
|
if (!strcmp(v[i], "--warn")) {
|
||||||
loglevel = LOG_WARN;
|
loglevel = LOG_WARN;
|
||||||
|
@ -297,6 +299,19 @@ main(int c, const char **v)
|
||||||
loglevel = LOG_DEBUG;
|
loglevel = LOG_DEBUG;
|
||||||
} else if (!strcmp(v[i], "--accel")) {
|
} else if (!strcmp(v[i], "--accel")) {
|
||||||
accel_crypto = 1;
|
accel_crypto = 1;
|
||||||
|
} else if (!strcmp(v[i], "--fraction")) {
|
||||||
|
if (i+1 == c) {
|
||||||
|
printf("--fraction needs an argument.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
const char *fracstr = v[++i];
|
||||||
|
char ch;
|
||||||
|
if (sscanf(fracstr, "%u/%u%c", &num, &den, &ch) != 2) {
|
||||||
|
printf("--fraction expects a fraction as an input.\n");
|
||||||
|
}
|
||||||
|
if (den == 0 || num == 0 || num > den) {
|
||||||
|
printf("--fraction expects a valid fraction as an input.\n");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
v[i_out++] = v[i];
|
v[i_out++] = v[i];
|
||||||
}
|
}
|
||||||
|
@ -373,6 +388,33 @@ main(int c, const char **v)
|
||||||
smartlist_free(skip);
|
smartlist_free(skip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (den != 1) {
|
||||||
|
// count the tests. Linear but fast.
|
||||||
|
unsigned n_tests = 0;
|
||||||
|
struct testgroup_t *tg;
|
||||||
|
struct testcase_t *tc;
|
||||||
|
for (tg = testgroups; tg->prefix != NULL; ++tg) {
|
||||||
|
for (tc = tg->cases; tc->name != NULL; ++tc) {
|
||||||
|
++n_tests;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Which tests should we run? This can give iffy results if den is huge
|
||||||
|
// but it doesn't actually matter in practice.
|
||||||
|
unsigned tests_per_chunk = CEIL_DIV(n_tests, den);
|
||||||
|
unsigned start_at = (num-1) * tests_per_chunk;
|
||||||
|
|
||||||
|
// Skip the tests that are outside of the range.
|
||||||
|
unsigned idx = 0;
|
||||||
|
for (tg = testgroups; tg->prefix != NULL; ++tg) {
|
||||||
|
for (tc = tg->cases; tc->name != NULL; ++tc) {
|
||||||
|
if (idx < start_at || idx >= start_at + tests_per_chunk) {
|
||||||
|
tc->flags |= TT_SKIP;
|
||||||
|
}
|
||||||
|
++idx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int have_failed = (tinytest_main(c, v, testgroups) != 0);
|
int have_failed = (tinytest_main(c, v, testgroups) != 0);
|
||||||
|
|
||||||
free_pregenerated_keys();
|
free_pregenerated_keys();
|
||||||
|
|
3
src/test/unittest_part1.sh
Executable file
3
src/test/unittest_part1.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
"${abs_top_builddir:-.}/src/test/test" --fraction 1/8
|
3
src/test/unittest_part2.sh
Executable file
3
src/test/unittest_part2.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
"${abs_top_builddir:-.}/src/test/test" --fraction 2/8
|
3
src/test/unittest_part3.sh
Executable file
3
src/test/unittest_part3.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
"${abs_top_builddir:-.}/src/test/test" --fraction 3/8
|
3
src/test/unittest_part4.sh
Executable file
3
src/test/unittest_part4.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
"${abs_top_builddir:-.}/src/test/test" --fraction 4/8
|
3
src/test/unittest_part5.sh
Executable file
3
src/test/unittest_part5.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
"${abs_top_builddir:-.}/src/test/test" --fraction 5/8
|
3
src/test/unittest_part6.sh
Executable file
3
src/test/unittest_part6.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
"${abs_top_builddir:-.}/src/test/test" --fraction 6/8
|
3
src/test/unittest_part7.sh
Executable file
3
src/test/unittest_part7.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
"${abs_top_builddir:-.}/src/test/test" --fraction 7/8
|
3
src/test/unittest_part8.sh
Executable file
3
src/test/unittest_part8.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
"${abs_top_builddir:-.}/src/test/test" --fraction 8/8
|
Loading…
Add table
Reference in a new issue