diff --git a/changes/bug25450 b/changes/bug25450 new file mode 100644 index 000000000..ae14135a7 --- /dev/null +++ b/changes/bug25450 @@ -0,0 +1,8 @@ + o Minor bugfixes (testing): + - Avoid intermittent test failures due to relying on hidden service + introductory point creation within 5 seconds of real clock time. The + time limit for the test has been increased to 500 seconds, which may + still result in intermittent failures (e.g. if the system doing the + testing enters sleep/hibernation or experiences some other clock jump). + However, this should elliminate test failures currently happening on + developer and CI systems. Fixes bug 25450; bugfix on 0.3.1.3-alpha. diff --git a/src/test/test_hs_service.c b/src/test/test_hs_service.c index 8407eccfa..4f5e8ba45 100644 --- a/src/test/test_hs_service.c +++ b/src/test/test_hs_service.c @@ -413,13 +413,14 @@ test_service_intro_point(void *arg) INTRO_POINT_MIN_LIFETIME_INTRODUCTIONS); tt_u64_op(ip->introduce2_max, OP_LE, INTRO_POINT_MAX_LIFETIME_INTRODUCTIONS); - /* Time to expire MUST also be in that range. We add 5 seconds because - * there could be a gap between setting now and the time taken in - * service_intro_point_new. On ARM, it can be surprisingly slow... */ + /* Time to expire MUST also be in that range. We subtract 500 seconds + * because there could be a gap between setting now and the time taken in + * service_intro_point_new. On ARM and other older CPUs, it can be + * surprisingly slow... */ tt_u64_op(ip->time_to_expire, OP_GE, - now + INTRO_POINT_LIFETIME_MIN_SECONDS + 5); + now + INTRO_POINT_LIFETIME_MIN_SECONDS - 500); tt_u64_op(ip->time_to_expire, OP_LE, - now + INTRO_POINT_LIFETIME_MAX_SECONDS + 5); + now + INTRO_POINT_LIFETIME_MAX_SECONDS - 500); tt_assert(ip->replay_cache); tt_assert(ip->base.link_specifiers); /* By default, this is NOT a legacy object. */