diff options
author | Dan Gudmundsson <[email protected]> | 2011-03-30 12:50:03 +0200 |
---|---|---|
committer | Dan Gudmundsson <[email protected]> | 2011-05-11 16:08:18 +0200 |
commit | 1d4472c3e6bad242c04ab5925ac12b3053ece323 (patch) | |
tree | b2e675e2395cfa8a3f1ceb86bbde235d01180797 /lib/stdlib/test | |
parent | 0a80859714d86191e17f84cf60833010b20655d0 (diff) | |
download | otp-1d4472c3e6bad242c04ab5925ac12b3053ece323.tar.gz otp-1d4472c3e6bad242c04ab5925ac12b3053ece323.tar.bz2 otp-1d4472c3e6bad242c04ab5925ac12b3053ece323.zip |
Add timer:tc/1 which measures elapsed time for a fun/0
Also removes the 'catch' from timer:tc functions which masked errors
in measuring code.
Diffstat (limited to 'lib/stdlib/test')
-rw-r--r-- | lib/stdlib/test/timer_simple_SUITE.erl | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/lib/stdlib/test/timer_simple_SUITE.erl b/lib/stdlib/test/timer_simple_SUITE.erl index 852afa1a4d..dc751aad16 100644 --- a/lib/stdlib/test/timer_simple_SUITE.erl +++ b/lib/stdlib/test/timer_simple_SUITE.erl @@ -229,7 +229,7 @@ cancel2(Config) when is_list(Config) -> tc(doc) -> "Test sleep/1 and tc/3."; tc(suite) -> []; tc(Config) when is_list(Config) -> - % This should both sleep and tc/3 + %% This should test both sleep and tc/3 ?line {Res1, ok} = timer:tc(timer, sleep, [500]), ?line ok = if Res1 < 500*1000 -> {too_early, Res1}; % Too early @@ -237,13 +237,40 @@ tc(Config) when is_list(Config) -> true -> ok end, - % This should both sleep and tc/2 + %% tc/2 ?line {Res2, ok} = timer:tc(fun(T) -> timer:sleep(T) end, [500]), ?line ok = if Res2 < 500*1000 -> {too_early, Res2}; % Too early Res2 > 800*1000 -> {too_late, Res2}; % Too much time true -> ok end, + + %% tc/1 + ?line {Res3, ok} = timer:tc(fun() -> timer:sleep(500) end), + ?line ok = if + Res3 < 500*1000 -> {too_early, Res3}; % Too early + Res3 > 800*1000 -> {too_late, Res3}; % Too much time + true -> ok + end, + + %% Check that timer:tc don't catch errors + ?line ok = try timer:tc(erlang, exit, [foo]) + catch exit:foo -> ok + end, + + ?line ok = try timer:tc(fun(Reason) -> 1 = Reason end, [foo]) + catch error:{badmatch,_} -> ok + end, + + ?line ok = try timer:tc(fun() -> throw(foo) end) + catch foo -> ok + end, + + %% Check that return values are propageted + Self = self(), + ?line {_, Self} = timer:tc(erlang, self, []), + ?line {_, Self} = timer:tc(fun(P) -> P end, [self()]), + ?line {_, Self} = timer:tc(fun() -> self() end), ?line Sec = timer:seconds(4), ?line Min = timer:minutes(4), |