aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Andersson <peppe@erlang.org>2016-06-06 01:30:35 +0200
committerPeter Andersson <peppe@erlang.org>2016-06-06 01:30:35 +0200
commitf204d0dd77fa261bf2b99a7aa0b6a2413f0ef533 (patch)
tree3d7c0a2eee85ad61a4a61b4e304c74caa58ee83a
parent5c6153ddd991f88f9539958f3c27e51793041abd (diff)
downloadotp-f204d0dd77fa261bf2b99a7aa0b6a2413f0ef533.tar.gz
otp-f204d0dd77fa261bf2b99a7aa0b6a2413f0ef533.tar.bz2
otp-f204d0dd77fa261bf2b99a7aa0b6a2413f0ef533.zip
Measure file i/o overhead and skip test if the speed is too slow
-rw-r--r--lib/common_test/test/ct_repeat_testrun_SUITE.erl31
1 files changed, 22 insertions, 9 deletions
diff --git a/lib/common_test/test/ct_repeat_testrun_SUITE.erl b/lib/common_test/test/ct_repeat_testrun_SUITE.erl
index 199df66767..195abdb7c0 100644
--- a/lib/common_test/test/ct_repeat_testrun_SUITE.erl
+++ b/lib/common_test/test/ct_repeat_testrun_SUITE.erl
@@ -70,7 +70,7 @@ init_per_suite(Config0) ->
ct:pal("Timetrap info = ~w", [TTInfo]),
if ScaleVal > 1 ->
{skip,"Skip on systems running e.g. cover or debug!"};
- ScaleVal =< 1 ->
+ ScaleVal =< 1 ->
Config = ct_test_support:init_per_suite(Config0),
DataDir = ?config(data_dir, Config),
Suite1 = filename:join([DataDir,"a_test","r1_SUITE"]),
@@ -83,14 +83,27 @@ init_per_suite(Config0) ->
{1,0,{0,0}} = ct_test_support:run(ct,run_test,[Opts1],Config),
{1,0,{0,0}} = ct_test_support:run(ct,run_test,[Opts2],Config),
- %% Time the shortest testcase to use for offset
- {_T0,{1,0,{0,0}}} = timer:tc(ct_test_support,run,
- [ct,run_test,[Opts1],Config]),
-
- %% -2 is to ensure we hit inside the target test case and not after
- % T = round(T0/1000000)-2,
- T=0,
- [{offset,T}|Config]
+ %% Check if file i/o is too slow for correct measurements
+ Opts3 = Opts0 ++ [{suite,Suite1},{testcase,tc1},{label,timing3}],
+ {T,{1,0,{0,0}}} =
+ timer:tc(fun() ->
+ ct_test_support:run(ct,run_test,
+ [Opts3],Config),
+ ct_test_support:run(ct,run_test,
+ [Opts3],Config)
+ end),
+ %% The time to compare with here must match the timeout value
+ %% in the test suite. Accept 30% logging overhead (26 sec total).
+ if T > 26000000 ->
+ ct:pal("Timing test took ~w sec (< 27 sec expected). "
+ "Skipping the suite!",
+ [trunc(T/1000000)]),
+ {skip,"File I/O too slow for this suite"};
+ true ->
+ ct:pal("Timing test took ~w sec. Proceeding...",
+ [trunc(T/1000000)]),
+ [{offset,0}|Config]
+ end
end.
end_per_suite(Config) ->