diff options
author | Rickard Green <[email protected]> | 2016-01-22 11:11:40 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2016-01-22 11:11:40 +0100 |
commit | 044f9b79cf705add905284d93010f40088c0f3bc (patch) | |
tree | 38e09d61a575c4e280e0a99ca964bb50a6221751 /erts/emulator/test/time_SUITE.erl | |
parent | 0b9852d9a774be8c6f1d91065b60329bac779e2f (diff) | |
parent | 3d99247859e1d5d1862b550cd29c44a4f4cf54e0 (diff) | |
download | otp-044f9b79cf705add905284d93010f40088c0f3bc.tar.gz otp-044f9b79cf705add905284d93010f40088c0f3bc.tar.bz2 otp-044f9b79cf705add905284d93010f40088c0f3bc.zip |
Merge branch 'maint'
* maint:
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/time_SUITE.erl')
-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 3bd28a6d20..9bf3b90d91 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, |