Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
Description
`StalenessCheckTest` consists of three python tests, each of which verify whether a thrift file is recompiled after some modification. The test scheme is such as:
- Compile some thrift files
- Get the modification timestamp of generated files.
- Make modification to the thrift files
- Sleep for 0.1 second, and then recompile
- Get the modification timestamp of (re)generated files
- Assert that the second timestamp is bigger than the first
When running a docker build (with ubuntu-bionic) on MacOS, the assertion fails randomly, because the underlying file system's timestamp is only second-accurate. So the 0.1 second is not enough to make sure that the second timestamp is bigger than the first (both could end up to be round to the same second).
Example:
export SCRIPT="cmake.sh" export BUILD_ARG="-D WITH_C_GLIB=OFF -D WITH_AS3=OFF -D WITH_PYTHON=OFF -D WITH_HASKELL=OFF" export BUILD_ENV="-e CC=gcc -e CXX=g++ -e THRIFT_CROSSTEST_CONCURRENCY=3" export DISTRO=ubuntu-bionic export BUILD_LIBS="CPP JAVA" # only meaningful for CMake builds export DOCKER_REPO="thrift/thrift-build" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" DOCKER_TAG=$DOCKER_REPO:$DISTRO docker run --net=host -e BUILD_LIBS="$BUILD_LIBS" $BUILD_ENV -v $(pwd):/thrift/src \ -it $DOCKER_TAG build/docker/scripts/cmake.sh $BUILD_ARG ... test 435 Start 435: StalenessCheckTest435: Test command: /usr/bin/python "/thrift/src/compiler/cpp/test/compiler/staleness_check.py" "/thrift/src/cmake_build/compiler/cpp/bin/thrift" 435: Test timeout computed to be: 1500 435: test_staleness_check_of_included_file (__main__.TestStalenessCheck) ... FAIL 435: test_staleness_check_of_single_thrift_file_with_changed_output (__main__.TestStalenessCheck) ... ok 435: test_staleness_check_of_single_thrift_file_without_changed_output (__main__.TestStalenessCheck) ... ok 435: 435: ====================================================================== 435: FAIL: test_staleness_check_of_included_file (__main__.TestStalenessCheck) 435: ---------------------------------------------------------------------- 435: Traceback (most recent call last): 435: File "/thrift/src/compiler/cpp/test/compiler/staleness_check.py", line 123, in test_staleness_check_of_included_file 435: included_constants_cpp_second_modification_time, included_constants_cpp_first_modification_time) 435: AssertionError: 1570986553.0 not greater than 1570986553.0 435: 435: ---------------------------------------------------------------------- 435: Ran 3 tests in 0.727s 435: 435: FAILED (failures=1) 435/464 Test #435: StalenessCheckTest ...............***Failed 0.85 sec ... 99% tests passed, 1 tests failed out of 46499% tests passed, 1 tests failed out of 464 Total Test time (real) = 344.50 sec The following tests FAILED: 435 - StalenessCheckTest (Failed)Errors while running CTest
Attachments
Issue Links
- links to