Open jeking3 opened 5 years ago
Hi, this is not a solution. I would prefer to inhibit those test on some circumstances, changing them wouldn't test anything and will postpone the issue.
An alternative is to change the timing depending on the platform or environment.
I restored the "develop" copy of the timming.hpp header and I changed 75 to 125, since the clang-6.0 test I referenced took 90 and the cygwin test I referenced took 105, and left 250 alone. We'll see how that handles it.
I changed it to 100 for the baseline (due to the 90 I saw on clang-6), and added cygwin to win32 at 250.
I believe that you should enter the VALGRIND macro on the definition of those values, without changing the default. What do you think?
Sure, that makes sense.
This issue will be resolved by the CI work.
Where we are concerning this issue?
I sync'd with the latest boost-ci and re-running to see where we're at post-1.70.0.
Yeah, the unit tests are too much for CI. We need to start honoring the BOOST_NO_STRESS_TEST setting so CI has a chance of passing.
A number of unit tests are failing in various situations because they place an upper bound on elapsed time. There are problems with this logic:
In all cases where duration is specified, for example "this_thread::sleep" or "try_lock_for", the specified duration is a "guaranteed minimum". The operation will wait "at least" that long. No guarantees are made that it will not wait longer.
The issue is exacerbated by running a more stressful test such as within valgrind or by running tests on an overloaded Appveyor build slave.
Here are some examples of this in action:
On a cygwin (32-bit) job: https://ci.appveyor.com/project/jeking3/thread/builds/20434396/job/nrsami3xyqhhp56v#L10016
On a valgrind job: https://travis-ci.org/jeking3/thread/jobs/457490787#L4453
Other jobs have shown up to 175ms unexpected delay. I am planning on changing the file (misspelled) "timming.hpp" to use 250 for all cases. That will clear up most of these issues in CI.