From 58af3177c08fb6055ad82ff9fa9378582bfe379e Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Wed, 19 Feb 2020 09:03:39 +0100 Subject: [PATCH] tor: fix build Monotonic timer test expects sleep(200ms) to take at most 1s. On loaded systems like hydra, it's possible for such a test to take longer than 1 second. Tests expecting sleep(200ms) to take at least 175ms weren't removed, because load shouldn't cause sleep to be shorter. --- pkgs/tools/security/tor/default.nix | 3 ++- .../tor/disable-monotonic-timer-tests.patch | 26 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 pkgs/tools/security/tor/disable-monotonic-timer-tests.patch diff --git a/pkgs/tools/security/tor/default.nix b/pkgs/tools/security/tor/default.nix index 698693be95e5..78d5b4441d53 100644 --- a/pkgs/tools/security/tor/default.nix +++ b/pkgs/tools/security/tor/default.nix @@ -28,6 +28,8 @@ stdenv.mkDerivation rec { buildInputs = [ libevent openssl zlib lzma zstd scrypt ] ++ stdenv.lib.optionals stdenv.isLinux [ libseccomp systemd libcap ]; + patches = [ ./disable-monotonic-timer-tests.patch ]; + NIX_CFLAGS_LINK = stdenv.lib.optionalString stdenv.cc.isGNU "-lgcc_s"; postPatch = '' @@ -39,7 +41,6 @@ stdenv.mkDerivation rec { ''; enableParallelBuilding = true; - enableParallelChecking = false; # 4 tests fail randomly doCheck = true; diff --git a/pkgs/tools/security/tor/disable-monotonic-timer-tests.patch b/pkgs/tools/security/tor/disable-monotonic-timer-tests.patch new file mode 100644 index 000000000000..a95a373bbb64 --- /dev/null +++ b/pkgs/tools/security/tor/disable-monotonic-timer-tests.patch @@ -0,0 +1,26 @@ +diff --git a/src/test/test_util.c b/src/test/test_util.c +index 0d86a5ab5..e93c6ba89 100644 +--- a/src/test/test_util.c ++++ b/src/test/test_util.c +@@ -5829,13 +5829,9 @@ test_util_monotonic_time(void *arg) + /* We need to be a little careful here since we don't know the system load. + */ + tt_i64_op(monotime_diff_msec(&mt1, &mt2), OP_GE, 175); +- tt_i64_op(monotime_diff_msec(&mt1, &mt2), OP_LT, 1000); + tt_i64_op(monotime_coarse_diff_msec(&mtc1, &mtc2), OP_GE, 125); +- tt_i64_op(monotime_coarse_diff_msec(&mtc1, &mtc2), OP_LT, 1000); + tt_u64_op(nsec2-nsec1, OP_GE, 175000000); +- tt_u64_op(nsec2-nsec1, OP_LT, 1000000000); + tt_u64_op(nsecc2-nsecc1, OP_GE, 125000000); +- tt_u64_op(nsecc2-nsecc1, OP_LT, 1000000000); + + tt_u64_op(msec1, OP_GE, nsec1 / 1000000); + tt_u64_op(usec1, OP_GE, nsec1 / 1000); +@@ -5849,7 +5845,6 @@ test_util_monotonic_time(void *arg) + uint64_t coarse_stamp_diff = + monotime_coarse_stamp_units_to_approx_msec(stamp2-stamp1); + tt_u64_op(coarse_stamp_diff, OP_GE, 120); +- tt_u64_op(coarse_stamp_diff, OP_LE, 1200); + + { + uint64_t units = monotime_msec_to_approx_coarse_stamp_units(5000);