From 84004d4f99271e8324f7d1e3fb8a3cd68109d456 Mon Sep 17 00:00:00 2001
From: Anders Svensson <anders@erlang.org>
Date: Tue, 4 Aug 2015 23:51:45 +0200
Subject: Remove unnecessary redefinition of erlang:max/2

The function already operates on arbitrary terms.
---
 lib/diameter/src/info/diameter_info.erl | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

(limited to 'lib')

diff --git a/lib/diameter/src/info/diameter_info.erl b/lib/diameter/src/info/diameter_info.erl
index 10972f3231..5ecce2206f 100644
--- a/lib/diameter/src/info/diameter_info.erl
+++ b/lib/diameter/src/info/diameter_info.erl
@@ -1,7 +1,7 @@
 %%
 %% %CopyrightBegin%
 %%
-%% Copyright Ericsson AB 2010-2014. All Rights Reserved.
+%% Copyright Ericsson AB 2010-2015. All Rights Reserved.
 %%
 %% The contents of this file are subject to the Erlang Public License,
 %% Version 1.1, (the "License"); you may not use this file except in
@@ -51,8 +51,6 @@
          p/1,
          p/3]).
 
--compile({no_auto_import,[max/2]}).
-
 -export([collect/2]).
 
 -define(LONG_TIMEOUT, 30000).
@@ -683,9 +681,6 @@ pt(T) ->
 recsplit(SFun, Rec) ->
     fun(Fs,Vs) -> SFun(element(1, Rec), Fs, Vs) end.
 
-max(A, B) ->
-    if A > B -> A; true -> B end.
-
 keyfetch(Key, List) ->
     {Key,V} = lists:keyfind(Key, 1, List),
     V.
-- 
cgit v1.2.3


From 9c0f2f2ce3ed040b3963d5b00cad0276c276d590 Mon Sep 17 00:00:00 2001
From: Anders Svensson <anders@erlang.org>
Date: Tue, 4 Aug 2015 10:14:44 +0200
Subject: Remove use of monotonic time in pre-18 code

This has been seen to be a bottleneck at high load: each undef results
in a loop out to the code server.

Originally implemented as suggested in the erts user's guide, in commits
e6d19a18 and d4386254.
---
 lib/diameter/src/base/diameter_lib.erl      | 40 +++++------------------------
 lib/diameter/src/base/diameter_watchdog.erl |  1 -
 2 files changed, 6 insertions(+), 35 deletions(-)

(limited to 'lib')

diff --git a/lib/diameter/src/base/diameter_lib.erl b/lib/diameter/src/base/diameter_lib.erl
index 3f327f3653..6a94e32b0e 100644
--- a/lib/diameter/src/base/diameter_lib.erl
+++ b/lib/diameter/src/base/diameter_lib.erl
@@ -102,8 +102,7 @@ fmt(T) ->
 %% ---------------------------------------------------------------------------
 
 -type timestamp() :: {non_neg_integer(), 0..999999, 0..999999}.
--type now() :: integer() %% monotonic time
-             | timestamp().
+-type now() :: timestamp().
 
 -spec now()
    -> now().
@@ -112,11 +111,7 @@ fmt(T) ->
 %% otherwise.
 
 now() ->
-    try
-        erlang:monotonic_time() 
-    catch
-        error: undef -> erlang:now()
-    end.
+    erlang:now().
 
 %% ---------------------------------------------------------------------------
 %% # timestamp/1
@@ -126,15 +121,7 @@ now() ->
    -> timestamp().
 
 timestamp({_,_,_} = T) ->  %% erlang:now()
-    T;
-
-timestamp(MonoT) ->  %% monotonic time
-    MicroSecs = monotonic_to_microseconds(MonoT + erlang:time_offset()),
-    Secs = MicroSecs div 1000000,
-    {Secs div 1000000, Secs rem 1000000, MicroSecs rem 1000000}.
-
-monotonic_to_microseconds(MonoT) ->
-    erlang:convert_time_unit(MonoT, native, micro_seconds).
+    T.
 
 %% ---------------------------------------------------------------------------
 %% # now_diff/1
@@ -162,10 +149,7 @@ now_diff(Time) ->
  when MicroSecs :: non_neg_integer().
 
 micro_diff({_,_,_} = T0) ->
-    timer:now_diff(erlang:now(), T0);
-
-micro_diff(T0) ->  %% monotonic time
-    monotonic_to_microseconds(erlang:monotonic_time() - T0).
+    timer:now_diff(erlang:now(), T0).
 
 %% ---------------------------------------------------------------------------
 %% # micro_diff/2
@@ -175,12 +159,8 @@ micro_diff(T0) ->  %% monotonic time
    -> MicroSecs
  when MicroSecs :: non_neg_integer().
 
-micro_diff(T1, T0)
-  when is_integer(T1), is_integer(T0) ->  %% monotonic time
-    monotonic_to_microseconds(T1 - T0);
-
 micro_diff(T1, T0) ->  %% at least one erlang:now()
-    timer:now_diff(timestamp(T1), timestamp(T0)).
+    timer:now_diff(T1, T0).
 
 %% ---------------------------------------------------------------------------
 %% # time/1
@@ -219,15 +199,7 @@ time(Micro) ->  %% elapsed time
 
 seed() ->
     T = now(),
-    {timestamp(T), seed(T)}.
-
-%% seed/1
-
-seed({_,_,_} = T) ->
-    T;
-
-seed(T) ->  %% monotonic time
-    {erlang:phash2(node()), T, erlang:unique_integer()}.
+    {T, T}.
 
 %% ---------------------------------------------------------------------------
 %% # eval/1
diff --git a/lib/diameter/src/base/diameter_watchdog.erl b/lib/diameter/src/base/diameter_watchdog.erl
index 0607c72818..66781d7b06 100644
--- a/lib/diameter/src/base/diameter_watchdog.erl
+++ b/lib/diameter/src/base/diameter_watchdog.erl
@@ -66,7 +66,6 @@
          parent = self() :: pid(),              %% service process
          transport       :: pid() | undefined,  %% peer_fsm process
          tref :: reference()      %% reference for current watchdog timer
-               | integer()        %% monotonic time
                | tuple()          %% now()
                | undefined,
          dictionary :: module(),  %% common dictionary
-- 
cgit v1.2.3


From 96d63dca845e18f86488db9d8dfb33eb76ad0467 Mon Sep 17 00:00:00 2001
From: Anders Svensson <anders@erlang.org>
Date: Tue, 4 Aug 2015 23:46:29 +0200
Subject: Simplify time manipulation

By doing away with more wrapping that the parent commit started to
remove.
---
 lib/diameter/src/base/diameter_config.erl      |  3 +-
 lib/diameter/src/base/diameter_lib.erl         | 73 ++------------------------
 lib/diameter/src/base/diameter_peer.erl        |  3 --
 lib/diameter/src/base/diameter_reg.erl         |  3 +-
 lib/diameter/src/base/diameter_service.erl     |  5 +-
 lib/diameter/src/base/diameter_session.erl     |  4 +-
 lib/diameter/src/base/diameter_stats.erl       |  3 --
 lib/diameter/src/base/diameter_sync.erl        |  3 --
 lib/diameter/src/base/diameter_watchdog.erl    |  7 ++-
 lib/diameter/src/transport/diameter_sctp.erl   |  3 --
 lib/diameter/test/diameter_codec_test.erl      |  4 +-
 lib/diameter/test/diameter_config_SUITE.erl    |  2 +-
 lib/diameter/test/diameter_ct.erl              |  4 +-
 lib/diameter/test/diameter_event_SUITE.erl     |  6 +--
 lib/diameter/test/diameter_examples_SUITE.erl  |  8 +--
 lib/diameter/test/diameter_gen_sctp_SUITE.erl  | 10 ++--
 lib/diameter/test/diameter_traffic_SUITE.erl   |  8 ++-
 lib/diameter/test/diameter_transport_SUITE.erl |  6 +--
 lib/diameter/test/diameter_util.erl            | 19 +------
 19 files changed, 36 insertions(+), 138 deletions(-)

(limited to 'lib')

diff --git a/lib/diameter/src/base/diameter_config.erl b/lib/diameter/src/base/diameter_config.erl
index 8ac3b9d6ca..89b26707ad 100644
--- a/lib/diameter/src/base/diameter_config.erl
+++ b/lib/diameter/src/base/diameter_config.erl
@@ -37,8 +37,7 @@
 -module(diameter_config).
 -behaviour(gen_server).
 
--compile({no_auto_import, [monitor/2, now/0]}).
--import(diameter_lib, [now/0]).
+-compile({no_auto_import, [monitor/2]}).
 
 -export([start_service/2,
          stop_service/1,
diff --git a/lib/diameter/src/base/diameter_lib.erl b/lib/diameter/src/base/diameter_lib.erl
index 6a94e32b0e..e8009c6a14 100644
--- a/lib/diameter/src/base/diameter_lib.erl
+++ b/lib/diameter/src/base/diameter_lib.erl
@@ -18,18 +18,12 @@
 %%
 
 -module(diameter_lib).
--compile({no_auto_import, [now/0]}).
 
 -export([info_report/2,
          error_report/2,
          warning_report/2,
-         now/0,
-         timestamp/1,
          now_diff/1,
-         micro_diff/1,
-         micro_diff/2,
          time/1,
-         seed/0,
          eval/1,
          eval_name/1,
          get_stacktrace/0,
@@ -97,37 +91,11 @@ fmt(T) ->
             "p"
     end.
 
-%% ---------------------------------------------------------------------------
-%% # now/0
-%% ---------------------------------------------------------------------------
-
--type timestamp() :: {non_neg_integer(), 0..999999, 0..999999}.
--type now() :: timestamp().
-
--spec now()
-   -> now().
-
-%% Use monotonic time if it exists, fall back to erlang:now()
-%% otherwise.
-
-now() ->
-    erlang:now().
-
-%% ---------------------------------------------------------------------------
-%% # timestamp/1
-%% ---------------------------------------------------------------------------
-
--spec timestamp(NowT :: now())
-   -> timestamp().
-
-timestamp({_,_,_} = T) ->  %% erlang:now()
-    T.
-
 %% ---------------------------------------------------------------------------
 %% # now_diff/1
 %% ---------------------------------------------------------------------------
 
--spec now_diff(NowT :: now())
+-spec now_diff(NowT :: erlang:timestamp())
    -> {Hours, Mins, Secs, MicroSecs}
  when Hours :: non_neg_integer(),
       Mins  :: 0..59,
@@ -138,29 +106,7 @@ timestamp({_,_,_} = T) ->  %% erlang:now()
 %% instead of as integer microseconds.
 
 now_diff(Time) ->
-    time(micro_diff(Time)).
-
-%% ---------------------------------------------------------------------------
-%% # micro_diff/1
-%% ---------------------------------------------------------------------------
-
--spec micro_diff(NowT :: now())
-   -> MicroSecs
- when MicroSecs :: non_neg_integer().
-
-micro_diff({_,_,_} = T0) ->
-    timer:now_diff(erlang:now(), T0).
-
-%% ---------------------------------------------------------------------------
-%% # micro_diff/2
-%% ---------------------------------------------------------------------------
-
--spec micro_diff(T1 :: now(), T0 :: now())
-   -> MicroSecs
- when MicroSecs :: non_neg_integer().
-
-micro_diff(T1, T0) ->  %% at least one erlang:now()
-    timer:now_diff(T1, T0).
+    time(timer:now_diff(now(), Time)).
 
 %% ---------------------------------------------------------------------------
 %% # time/1
@@ -170,7 +116,7 @@ micro_diff(T1, T0) ->  %% at least one erlang:now()
 
 -spec time(NowT | Diff)
    -> {Hours, Mins, Secs, MicroSecs}
- when NowT  :: timestamp(),
+ when NowT  :: erlang:timestamp(),
       Diff  :: non_neg_integer(),
       Hours :: non_neg_integer(),
       Mins  :: 0..59,
@@ -188,19 +134,6 @@ time(Micro) ->  %% elapsed time
     S = Seconds rem 60,
     {H, M, S, Micro rem 1000000}.
 
-%% ---------------------------------------------------------------------------
-%% # seed/0
-%% ---------------------------------------------------------------------------
-
--spec seed()
-   -> {timestamp(), {integer(), integer(), integer()}}.
-
-%% Return an argument for random:seed/1.
-
-seed() ->
-    T = now(),
-    {T, T}.
-
 %% ---------------------------------------------------------------------------
 %% # eval/1
 %%
diff --git a/lib/diameter/src/base/diameter_peer.erl b/lib/diameter/src/base/diameter_peer.erl
index 89b63c8a92..356383dbab 100644
--- a/lib/diameter/src/base/diameter_peer.erl
+++ b/lib/diameter/src/base/diameter_peer.erl
@@ -20,9 +20,6 @@
 -module(diameter_peer).
 -behaviour(gen_server).
 
--compile({no_auto_import, [now/0]}).
--import(diameter_lib, [now/0]).
-
 %% Interface towards transport modules ...
 -export([recv/2,
          up/1,
diff --git a/lib/diameter/src/base/diameter_reg.erl b/lib/diameter/src/base/diameter_reg.erl
index f785777874..6bb4710e63 100644
--- a/lib/diameter/src/base/diameter_reg.erl
+++ b/lib/diameter/src/base/diameter_reg.erl
@@ -24,8 +24,7 @@
 -module(diameter_reg).
 -behaviour(gen_server).
 
--compile({no_auto_import, [monitor/2, now/0]}).
--import(diameter_lib, [now/0]).
+-compile({no_auto_import, [monitor/2]}).
 
 -export([add/1,
          add_new/1,
diff --git a/lib/diameter/src/base/diameter_service.erl b/lib/diameter/src/base/diameter_service.erl
index 86e744dfbe..a31cef2c8c 100644
--- a/lib/diameter/src/base/diameter_service.erl
+++ b/lib/diameter/src/base/diameter_service.erl
@@ -24,9 +24,6 @@
 -module(diameter_service).
 -behaviour(gen_server).
 
--compile({no_auto_import, [now/0]}).
--import(diameter_lib, [now/0]).
-
 %% towards diameter_service_sup
 -export([start_link/1]).
 
@@ -1218,7 +1215,7 @@ connect_timer(Opts, Def0) ->
 %% continuous restarted in case of faulty config or other problems.
 tc(Time, Tc) ->
     choose(Tc > ?RESTART_TC
-             orelse diameter_lib:micro_diff(Time) > 1000*?RESTART_TC,
+             orelse timer:now_diff(now(), Time) > 1000*?RESTART_TC,
            Tc,
            ?RESTART_TC).
 
diff --git a/lib/diameter/src/base/diameter_session.erl b/lib/diameter/src/base/diameter_session.erl
index c5ea0428b5..3b236f109a 100644
--- a/lib/diameter/src/base/diameter_session.erl
+++ b/lib/diameter/src/base/diameter_session.erl
@@ -157,8 +157,8 @@ session_id(Host) ->
 %% ---------------------------------------------------------------------------
 
 init() ->
-    {Now, Seed} = diameter_lib:seed(),
-    random:seed(Seed),
+    Now = now(),
+    random:seed(Now),
     Time = time32(Now),
     Seq  = (?INT32 band (Time bsl 20)) bor (random:uniform(1 bsl 20) - 1),
     ets:insert(diameter_sequence, [{origin_state_id, Time},
diff --git a/lib/diameter/src/base/diameter_stats.erl b/lib/diameter/src/base/diameter_stats.erl
index d2c760317a..5eb8fa1cba 100644
--- a/lib/diameter/src/base/diameter_stats.erl
+++ b/lib/diameter/src/base/diameter_stats.erl
@@ -24,9 +24,6 @@
 -module(diameter_stats).
 -behaviour(gen_server).
 
--compile({no_auto_import, [now/0]}).
--import(diameter_lib, [now/0]).
-
 -export([reg/2, reg/1,
          incr/3, incr/1,
          read/1,
diff --git a/lib/diameter/src/base/diameter_sync.erl b/lib/diameter/src/base/diameter_sync.erl
index 90eabece3d..cee06b9e96 100644
--- a/lib/diameter/src/base/diameter_sync.erl
+++ b/lib/diameter/src/base/diameter_sync.erl
@@ -27,9 +27,6 @@
 -module(diameter_sync).
 -behaviour(gen_server).
 
--compile({no_auto_import, [now/0]}).
--import(diameter_lib, [now/0]).
-
 -export([call/4, call/5,
          cast/4, cast/5,
          carp/1, carp/2]).
diff --git a/lib/diameter/src/base/diameter_watchdog.erl b/lib/diameter/src/base/diameter_watchdog.erl
index 66781d7b06..009a766e43 100644
--- a/lib/diameter/src/base/diameter_watchdog.erl
+++ b/lib/diameter/src/base/diameter_watchdog.erl
@@ -124,8 +124,7 @@ i({Ack, T, Pid, {RecvData,
                  = Svc}}) ->
     monitor(process, Pid),
     wait(Ack, Pid),
-    {_, Seed} = diameter_lib:seed(),
-    random:seed(Seed),
+    random:seed(now()),
     putr(restart, {T, Opts, Svc, SvcOpts}),  %% save seeing it in trace
     putr(dwr, dwr(Caps)),                    %%
     {_,_} = Mask = proplists:get_value(sequence, SvcOpts),
@@ -453,7 +452,7 @@ transition({timeout, TRef, tw}, #watchdog{tref = TRef} = S) ->
 %% Message has arrived since the timer was started: subtract time
 %% already elapsed from new timer.
 transition({timeout, _, tw}, #watchdog{tref = T0} = S) ->
-    set_watchdog(diameter_lib:micro_diff(T0) div 1000, S);
+    set_watchdog(timer:now_diff(now(), T0) div 1000, S);
 
 %% State query.
 transition({state, Pid}, #watchdog{status = S}) ->
@@ -535,7 +534,7 @@ set_watchdog(#watchdog{tref = undefined} = S) ->
 
 %% Timer already set: start at new one only at expiry.
 set_watchdog(#watchdog{} = S) ->
-    S#watchdog{tref = diameter_lib:now()};
+    S#watchdog{tref = now()};
 
 set_watchdog(stop = No) ->
     No.
diff --git a/lib/diameter/src/transport/diameter_sctp.erl b/lib/diameter/src/transport/diameter_sctp.erl
index f80de0a816..e9c52c9de5 100644
--- a/lib/diameter/src/transport/diameter_sctp.erl
+++ b/lib/diameter/src/transport/diameter_sctp.erl
@@ -20,9 +20,6 @@
 -module(diameter_sctp).
 -behaviour(gen_server).
 
--compile({no_auto_import, [now/0]}).
--import(diameter_lib, [now/0]).
-
 %% interface
 -export([start/3]).
 
diff --git a/lib/diameter/test/diameter_codec_test.erl b/lib/diameter/test/diameter_codec_test.erl
index 5f1dbfbd61..17f5833101 100644
--- a/lib/diameter/test/diameter_codec_test.erl
+++ b/lib/diameter/test/diameter_codec_test.erl
@@ -229,7 +229,7 @@ v(Max, Ord, E)
   when Ord =< Max ->
     diameter_enum:to_list(E);
 v(Max, Ord, E) ->
-    random:seed(diameter_util:seed()),
+    random:seed(now()),
     v(Max, Ord, E, []).
 
 v(0, _, _, Acc) ->
@@ -522,7 +522,7 @@ random(Mn,Mx) ->
 
 seed(undefined) ->
     put({?MODULE, seed}, true),
-    random:seed(diameter_util:seed());
+    random:seed(now());
 
 seed(true) ->
     ok.
diff --git a/lib/diameter/test/diameter_config_SUITE.erl b/lib/diameter/test/diameter_config_SUITE.erl
index 4bcaa8119f..bbdf672291 100644
--- a/lib/diameter/test/diameter_config_SUITE.erl
+++ b/lib/diameter/test/diameter_config_SUITE.erl
@@ -50,7 +50,7 @@
                 {request_errors, RE},
                 {call_mutates_state, C}]]
               || D <- [diameter_gen_base_rfc3588, diameter_gen_base_rfc6733],
-                 M <- [?MODULE, [?MODULE, diameter_lib:now()]],
+                 M <- [?MODULE, [?MODULE, now()]],
                  A <- [0, common, make_ref()],
                  S <- [[], make_ref()],
                  AE <- [report, callback, discard],
diff --git a/lib/diameter/test/diameter_ct.erl b/lib/diameter/test/diameter_ct.erl
index 85c502ea7f..788cbbbe3e 100644
--- a/lib/diameter/test/diameter_ct.erl
+++ b/lib/diameter/test/diameter_ct.erl
@@ -43,7 +43,7 @@ ct_run(Opts) ->
     info(Start , info()).
 
 info() ->
-    [{time, diameter_lib:now()},
+    [{time, now()},
      {process_count, erlang:system_info(process_count)}
      | erlang:memory()].
 
@@ -56,6 +56,6 @@ info(L0, L1) ->
     io:format("INFO: ~p~n", [Diff]).
 
 diff(time, T0, T1) ->
-    diameter_lib:micro_diff(T1, T0);
+    timer:now_diff(T1, T0);
 diff(_, N0, N1) ->
     N1 - N0.
diff --git a/lib/diameter/test/diameter_event_SUITE.erl b/lib/diameter/test/diameter_event_SUITE.erl
index bfe160203c..8ede8a51a8 100644
--- a/lib/diameter/test/diameter_event_SUITE.erl
+++ b/lib/diameter/test/diameter_event_SUITE.erl
@@ -1,7 +1,7 @@
 %%
 %% %CopyrightBegin%
 %%
-%% Copyright Ericsson AB 2013-15. All Rights Reserved.
+%% Copyright Ericsson AB 2013-2015. All Rights Reserved.
 %%
 %% The contents of this file are subject to the Erlang Public License,
 %% Version 1.1, (the "License"); you may not use this file except in
@@ -174,9 +174,9 @@ event(Name) ->
     receive #diameter_event{service = Name, info = T} -> T end.
 
 event(Name, TL, TH) ->
-    T0 = diameter_lib:now(),
+    T0 = now(),
     Event = event(Name),
-    DT = diameter_lib:micro_diff(T0) div 1000,
+    DT = timer:now_diff(now(), T0) div 1000,
     {true, true, DT, Event} = {TL < DT, DT < TH, DT, Event},
     Event.
 
diff --git a/lib/diameter/test/diameter_examples_SUITE.erl b/lib/diameter/test/diameter_examples_SUITE.erl
index ef8e459175..dc0b466b59 100644
--- a/lib/diameter/test/diameter_examples_SUITE.erl
+++ b/lib/diameter/test/diameter_examples_SUITE.erl
@@ -295,15 +295,15 @@ slave() ->
     [{timetrap, {minutes, 10}}].
 
 slave(_) ->
-    T0 = diameter_lib:now(),
+    T0 = now(),
     {ok, Node} = ct_slave:start(?MODULE, ?TIMEOUTS),
-    T1 = diameter_lib:now(),
+    T1 = now(),
     T2 = rpc:call(Node, erlang, now, []),
     {ok, Node} = ct_slave:stop(?MODULE),
-    now_diff([T0, T1, T2, diameter_lib:now()]).
+    now_diff([T0, T1, T2, now()]).
 
 now_diff([T1,T2|_] = Ts) ->
-    [diameter_lib:micro_diff(T2,T1) | now_diff(tl(Ts))];
+    [timer:now_diff(T2,T1) | now_diff(tl(Ts))];
 now_diff(_) ->
     [].
 
diff --git a/lib/diameter/test/diameter_gen_sctp_SUITE.erl b/lib/diameter/test/diameter_gen_sctp_SUITE.erl
index 4ea5e80095..ced897c714 100644
--- a/lib/diameter/test/diameter_gen_sctp_SUITE.erl
+++ b/lib/diameter/test/diameter_gen_sctp_SUITE.erl
@@ -296,12 +296,12 @@ connect2(Pid, PortNr, Bin) ->
     %% T2 = time after listening process received our message
     %% T3 = time after reply is received
 
-    T1 = diameter_util:timestamp(),
+    T1 = now(),
     ok = send(Sock, Id, Bin),
     T2 = unmark(recv(Sock, Id)),
-    T3 = diameter_util:timestamp(),
-    {diameter_lib:micro_diff(T2, T1),  %% Outbound
-     diameter_lib:micro_diff(T3, T2)}. %% Inbound
+    T3 = now(),
+    {timer:now_diff(T2, T1),  %% Outbound
+     timer:now_diff(T3, T2)}. %% Inbound
 
 %% recv/2
 
@@ -326,7 +326,7 @@ send(Sock, Id, Bin) ->
 %% mark/1
 
 mark(Bin) ->
-    Info = term_to_binary(diameter_util:timestamp()),
+    Info = term_to_binary(now()),
     <<Info/binary, Bin/binary>>.
 
 %% unmark/1
diff --git a/lib/diameter/test/diameter_traffic_SUITE.erl b/lib/diameter/test/diameter_traffic_SUITE.erl
index 17faf30a9b..4669fb6720 100644
--- a/lib/diameter/test/diameter_traffic_SUITE.erl
+++ b/lib/diameter/test/diameter_traffic_SUITE.erl
@@ -874,7 +874,7 @@ call(Config, Req, Opts) ->
     diameter:call(CN,
                   dict(Req, Dict0),
                   msg(Req, ReqEncoding, Dict0),
-                  [{extra, [{Name, Group}, diameter_lib:now()]} | Opts]).
+                  [{extra, [{Name, Group}, now()]} | Opts]).
 
 origin({A,C}) ->
     2*codec(A) + container(C);
@@ -1200,10 +1200,8 @@ app(Req, _, Dict0) ->
 %% handle_error/6
 
 handle_error(timeout = Reason, _Req, [$C|_], _Peer, _, Time) ->
-    Now = diameter_lib:now(),
-    {Reason, {diameter_lib:timestamp(Time),
-              diameter_lib:timestamp(Now),
-              diameter_lib:micro_diff(Now, Time)}};
+    Now = now(),
+    {Reason, {Time, Now, timer:now_diff(Now, Time)}};
 
 handle_error(Reason, _Req, [$C|_], _Peer, _, _Time) ->
     {error, Reason}.
diff --git a/lib/diameter/test/diameter_transport_SUITE.erl b/lib/diameter/test/diameter_transport_SUITE.erl
index 78bddbd1cf..40f713a550 100644
--- a/lib/diameter/test/diameter_transport_SUITE.erl
+++ b/lib/diameter/test/diameter_transport_SUITE.erl
@@ -53,7 +53,7 @@
 
 %% Receive a message.
 -define(RECV(Pat, Ret), receive Pat -> Ret end).
--define(RECV(Pat), ?RECV(Pat, diameter_util:timestamp())).
+-define(RECV(Pat), ?RECV(Pat, now())).
 
 %% Sockets are opened on the loopback address.
 -define(ADDR, {127,0,0,1}).
@@ -335,7 +335,7 @@ make_msg() ->
 %% crypto:rand_bytes/1 isn't available on all platforms (since openssl
 %% isn't) so roll our own.
 rand_bytes(N) ->
-    random:seed(diameter_util:seed()),
+    random:seed(now()),
     rand_bytes(N, <<>>).
 
 rand_bytes(0, Bin) ->
@@ -416,7 +416,7 @@ gen_accept(tcp, LSock) ->
 
 gen_send(sctp, Sock, Bin) ->
     {OS, _IS, Id} = getr(assoc),
-    {_, _, Us} = diameter_util:timestamp(),
+    {_, _, Us} = now(),
     gen_sctp:send(Sock, Id, Us rem OS, Bin);
 gen_send(tcp, Sock, Bin) ->
     gen_tcp:send(Sock, Bin).
diff --git a/lib/diameter/test/diameter_util.erl b/lib/diameter/test/diameter_util.erl
index df7d268429..e8fab18a45 100644
--- a/lib/diameter/test/diameter_util.erl
+++ b/lib/diameter/test/diameter_util.erl
@@ -30,8 +30,6 @@
          fold/3,
          foldl/3,
          scramble/1,
-         timestamp/0,
-         seed/0,
          unique_string/0,
          have_sctp/0]).
 
@@ -178,7 +176,7 @@ scramble(L) ->
           [[fun s/1, L]]).
 
 s(L) ->
-    random:seed(seed()),
+    random:seed(now()),
     s([], L).
 
 s(Acc, []) ->
@@ -187,19 +185,6 @@ s(Acc, L) ->
     {H, [T|Rest]} = lists:split(random:uniform(length(L)) - 1, L),
     s([T|Acc], H ++ Rest).
 
-%% ---------------------------------------------------------------------------
-%% timestamp/0
-
-timestamp() ->
-    diameter_lib:timestamp(diameter_lib:now()).
-
-%% ---------------------------------------------------------------------------
-%% seed/0
-
-seed() ->
-    {_,T} = diameter_lib:seed(),
-    T.
-
 %% ---------------------------------------------------------------------------
 %% unique_string/0
 
@@ -209,7 +194,7 @@ unique_string() ->
             integer_to_list(N)
     catch
         error: undef ->  %% OTP < 18
-            {M,S,U} = timestamp(),
+            {M,S,U} = now(),
             tl(lists:append(["-" ++ integer_to_list(N) || N <- [M,S,U]]))
     end.
 
-- 
cgit v1.2.3