File 1264-Use-rand-3-instead-of-random-3.patch of Package erlang

From c980e489d02417e1144d28958fe9abd4017f72a4 Mon Sep 17 00:00:00 2001
From: Anders Svensson <anders@erlang.org>
Date: Sat, 11 Jun 2016 12:42:43 +0200
Subject: [PATCH] Use rand(3) instead of random(3)

The latter is deprecated in OTP 19.
---
 lib/diameter/src/base/diameter_lib.erl         | 33 ++++++++++----------------
 lib/diameter/src/base/diameter_session.erl     |  5 ++--
 lib/diameter/src/base/diameter_watchdog.erl    |  4 +---
 lib/diameter/test/diameter_codec_test.erl      | 13 ++--------
 lib/diameter/test/diameter_transport_SUITE.erl |  3 +--
 lib/diameter/test/diameter_util.erl            | 13 ++--------
 6 files changed, 20 insertions(+), 51 deletions(-)

diff --git a/lib/diameter/src/base/diameter_lib.erl b/lib/diameter/src/base/diameter_lib.erl
index 43b0ca2..b835e87 100644
--- a/lib/diameter/src/base/diameter_lib.erl
+++ b/lib/diameter/src/base/diameter_lib.erl
@@ -1,7 +1,7 @@
 %%
 %% %CopyrightBegin%
 %%
-%% Copyright Ericsson AB 2010-2015. All Rights Reserved.
+%% Copyright Ericsson AB 2010-2016. All Rights Reserved.
 %%
 %% Licensed under the Apache License, Version 2.0 (the "License");
 %% you may not use this file except in compliance with the License.
@@ -20,18 +20,17 @@
 
 -module(diameter_lib).
 -compile({no_auto_import, [now/0]}).
--compile({nowarn_deprecated_function, [{erlang, now, 0}]}).
 
 -export([info_report/2,
          error_report/2,
          warning_report/2,
          now/0,
+         timestamp/0,
          timestamp/1,
          now_diff/1,
          micro_diff/1,
          micro_diff/2,
          time/1,
-         seed/0,
          eval/1,
          eval_name/1,
          get_stacktrace/0,
@@ -110,6 +109,16 @@ now() ->
     erlang:monotonic_time().
 
 %% ---------------------------------------------------------------------------
+%% # timestamp/0
+%% ---------------------------------------------------------------------------
+
+-spec timestamp()
+   -> erlang:timestamp().
+
+timestamp() ->
+    timestamp(now()).
+
+%% ---------------------------------------------------------------------------
 %% # timestamp/1
 %% ---------------------------------------------------------------------------
 
@@ -184,24 +193,6 @@ time(Micro) ->  %% elapsed time
     {H, M, S, Micro rem 1000000}.
 
 %% ---------------------------------------------------------------------------
-%% # seed/0
-%% ---------------------------------------------------------------------------
-
--spec seed()
-   -> {erlang:timestamp(), {integer(), integer(), integer()}}.
-
-%% Return an argument for random:seed/1.
-
-seed() ->
-    T = now(),
-    {timestamp(T), seed(T)}.
-
-%% seed/1
-
-seed(T) ->  %% monotonic time
-    {erlang:phash2(node()), T, erlang:unique_integer()}.
-
-%% ---------------------------------------------------------------------------
 %% # eval/1
 %%
 %% Evaluate a function in various forms.
diff --git a/lib/diameter/src/base/diameter_session.erl b/lib/diameter/src/base/diameter_session.erl
index 5397364..d854bc3 100644
--- a/lib/diameter/src/base/diameter_session.erl
+++ b/lib/diameter/src/base/diameter_session.erl
@@ -158,10 +158,9 @@ session_id(Host) ->
 %% ---------------------------------------------------------------------------
 
 init() ->
-    {Now, Seed} = diameter_lib:seed(),
-    random:seed(Seed),
+    Now = diameter_lib:timestamp(),
     Time = time32(Now),
-    Seq  = (?INT32 band (Time bsl 20)) bor (random:uniform(1 bsl 20) - 1),
+    Seq  = (?INT32 band (Time bsl 20)) bor (rand:uniform(1 bsl 20) - 1),
     ets:insert(diameter_sequence, [{origin_state_id, Time},
 				   {session_base, Time bsl 32},
 				   {sequence, Seq}]),
diff --git a/lib/diameter/src/base/diameter_watchdog.erl b/lib/diameter/src/base/diameter_watchdog.erl
index 3fd87b2..2ba60a6 100644
--- a/lib/diameter/src/base/diameter_watchdog.erl
+++ b/lib/diameter/src/base/diameter_watchdog.erl
@@ -125,8 +125,6 @@ i({Ack, T, Pid, {RecvData,
                  = Svc}}) ->
     monitor(process, Pid),
     wait(Ack, Pid),
-    {_, Seed} = diameter_lib:seed(),
-    random:seed(Seed),
     putr(restart, {T, Opts, Svc, SvcOpts}),  %% save seeing it in trace
     putr(dwr, dwr(Caps)),                    %%
     {_,_} = Mask = proplists:get_value(sequence, SvcOpts),
@@ -565,7 +563,7 @@ tw(TwInit, Ms) ->
 
 tw(T)
   when is_integer(T), T >= 6000 ->
-    T - 2000 + (random:uniform(4001) - 1); %% RFC3539 jitter of +/- 2 sec.
+    T - 2000 + (rand:uniform(4001) - 1); %% RFC3539 jitter of +/- 2 sec.
 tw({M,F,A}) ->
     apply(M,F,A).
 
diff --git a/lib/diameter/test/diameter_codec_test.erl b/lib/diameter/test/diameter_codec_test.erl
index 7830885..37c41a1 100644
--- a/lib/diameter/test/diameter_codec_test.erl
+++ b/lib/diameter/test/diameter_codec_test.erl
@@ -230,13 +230,12 @@ v(Max, Ord, E)
   when Ord =< Max ->
     diameter_enum:to_list(E);
 v(Max, Ord, E) ->
-    random:seed(diameter_util:seed()),
     v(Max, Ord, E, []).
 
 v(0, _, _, Acc) ->
     Acc;
 v(N, Ord, E, Acc) ->
-    v(N-1, Ord, E, [E(random:uniform(Ord)) | Acc]).
+    v(N-1, Ord, E, [E(rand:uniform(Ord)) | Acc]).
 
 %% arity/3
 
@@ -518,15 +517,7 @@ random(M) ->
     random(0,M).
 
 random(Mn,Mx) ->
-    seed(get({?MODULE, seed})),
-    Mn + random:uniform(Mx - Mn + 1) - 1.
-
-seed(undefined) ->
-    put({?MODULE, seed}, true),
-    random:seed(diameter_util:seed());
-
-seed(true) ->
-    ok.
+    Mn + rand:uniform(Mx - Mn + 1) - 1.
 
 %% run/1
 %%
diff --git a/lib/diameter/test/diameter_transport_SUITE.erl b/lib/diameter/test/diameter_transport_SUITE.erl
index f2884ea..c94f46b 100644
--- a/lib/diameter/test/diameter_transport_SUITE.erl
+++ b/lib/diameter/test/diameter_transport_SUITE.erl
@@ -338,13 +338,12 @@ 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()),
     rand_bytes(N, <<>>).
 
 rand_bytes(0, Bin) ->
     Bin;
 rand_bytes(N, Bin) ->
-    Oct = random:uniform(256) - 1,
+    Oct = rand:uniform(256) - 1,
     rand_bytes(N-1, <<Oct, Bin/binary>>).
 
 %% ===========================================================================
diff --git a/lib/diameter/test/diameter_util.erl b/lib/diameter/test/diameter_util.erl
index f26f1e9..37fcbbc 100644
--- a/lib/diameter/test/diameter_util.erl
+++ b/lib/diameter/test/diameter_util.erl
@@ -1,7 +1,7 @@
 %%
 %% %CopyrightBegin%
 %%
-%% Copyright Ericsson AB 2010-2015. All Rights Reserved.
+%% Copyright Ericsson AB 2010-2016. All Rights Reserved.
 %%
 %% Licensed under the Apache License, Version 2.0 (the "License");
 %% you may not use this file except in compliance with the License.
@@ -31,7 +31,6 @@
          fold/3,
          foldl/3,
          scramble/1,
-         seed/0,
          unique_string/0,
          have_sctp/0]).
 
@@ -178,23 +177,15 @@ scramble(L) ->
           [[fun s/1, L]]).
 
 s(L) ->
-    random:seed(seed()),
     s([], L).
 
 s(Acc, []) ->
     Acc;
 s(Acc, L) ->
-    {H, [T|Rest]} = lists:split(random:uniform(length(L)) - 1, L),
+    {H, [T|Rest]} = lists:split(rand:uniform(length(L)) - 1, L),
     s([T|Acc], H ++ Rest).
 
 %% ---------------------------------------------------------------------------
-%% seed/0
-
-seed() ->
-    {_,T} = diameter_lib:seed(),
-    T.
-
-%% ---------------------------------------------------------------------------
 %% unique_string/0
 
 unique_string() ->
-- 
2.1.4

openSUSE Build Service is sponsored by