diff options
author | Rickard Green <[email protected]> | 2016-01-22 11:11:06 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2016-01-22 11:11:06 +0100 |
commit | 3d99247859e1d5d1862b550cd29c44a4f4cf54e0 (patch) | |
tree | cef0b01d8cb82f5ebbbf5d206f1d8ad0feded238 /erts/emulator/test | |
parent | 59d6e191aea477fdbbf2befa47ae1f612ed6ab17 (diff) | |
parent | 9293a250e02e63d295a841786f03c3e3a3f30e97 (diff) | |
download | otp-3d99247859e1d5d1862b550cd29c44a4f4cf54e0.tar.gz otp-3d99247859e1d5d1862b550cd29c44a4f4cf54e0.tar.bz2 otp-3d99247859e1d5d1862b550cd29c44a4f4cf54e0.zip |
Merge branch 'rickard/test-fix' into maint
* rickard/test-fix:
Fix HL timer hard debug implementation
Fix stack alignment problem in ethread test on arm
Skip time_SUITE:timestamp on timewarp test
Diffstat (limited to 'erts/emulator/test')
-rw-r--r-- | erts/emulator/test/time_SUITE.erl | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/erts/emulator/test/time_SUITE.erl b/erts/emulator/test/time_SUITE.erl index 33076c7461..787870588d 100644 --- a/erts/emulator/test/time_SUITE.erl +++ b/erts/emulator/test/time_SUITE.erl @@ -320,7 +320,41 @@ timestamp(suite) -> timestamp(doc) -> ["Test that os:timestamp works."]; timestamp(Config) when is_list(Config) -> - repeating_timestamp_check(100000). + try + repeating_timestamp_check(100000) + catch + throw : {fail, Failure} -> + %% + %% Our time warping test machines currently warps + %% time every 6:th second. If we get a warp during + %% 10 seconds, assume this is a time warping test + %% and ignore the failure. + %% + case had_time_warp(10) of + true -> + {skip, "Seems to be time warp test run..."}; + false -> + test_server:fail(Failure) + end + end. + +os_system_time_offset() -> + erlang:convert_time_unit(os:system_time() - erlang:monotonic_time(), + native, micro_seconds). + +had_time_warp(Secs) -> + had_time_warp(os_system_time_offset(), Secs). + +had_time_warp(OrigOffs, 0) -> + false; +had_time_warp(OrigOffs, N) -> + receive after 1000 -> ok end, + case OrigOffs - os_system_time_offset() of + Diff when Diff > 500000; Diff < -500000 -> + true; + _Diff -> + had_time_warp(OrigOffs, N-1) + end. repeating_timestamp_check(0) -> ok; @@ -346,15 +380,15 @@ repeating_timestamp_check(N) -> NSecs = NA*1000000+NB+round(NC/1000000), case Secs - NSecs of TooLarge when TooLarge > 3600 -> - test_server:fail( - lists:flatten( + throw({fail, + lists:flatten( io_lib:format("os:timestamp/0 is ~w s more than erlang:now/0", - [TooLarge]))); + [TooLarge]))}); TooSmall when TooSmall < -3600 -> - test_server:fail( + throw({fail, lists:flatten( io_lib:format("os:timestamp/0 is ~w s less than erlang:now/0", - [-TooSmall]))); + [-TooSmall]))}); _ -> ok end, |