summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Doane <jay.s.doane@gmail.com>2018-12-23 10:07:02 -0800
committerJay Doane <jay.s.doane@gmail.com>2018-12-27 13:07:57 -0800
commitb9b333bac7a2518c2acfde31c47872523ad6e50c (patch)
tree3b599f1d58d6a956be0fefae878732a24ab9db43
parentf519b26c80e2c3dce63dc2669b92f6e357607103 (diff)
downloadcouchdb-b9b333bac7a2518c2acfde31c47872523ad6e50c.tar.gz
Suppress crypto and random compiler warnings
Replace deprecated crypto:rand_uniform/2 and 'random' module functions with equivalent couch_rand:uniform/1 calls, or eliminate the offending code entirely if unused. Note that crypto:rand_uniform/2 takes two parameters which have different semantics than the single argument couch_rand:uniform/1. Tests in mem3 are also provided to validate that the random rotation of node lists was converted correctly.
-rw-r--r--src/couch/src/couch_uuids.erl2
-rw-r--r--src/couch/test/couch_file_tests.erl2
-rw-r--r--src/couch/test/json_stream_parse_tests.erl2
-rw-r--r--src/couch_pse_tests/src/cpse_test_fold_changes.erl16
-rw-r--r--src/mem3/src/mem3.erl14
5 files changed, 16 insertions, 20 deletions
diff --git a/src/couch/src/couch_uuids.erl b/src/couch/src/couch_uuids.erl
index 5c7359b33..b9c03b502 100644
--- a/src/couch/src/couch_uuids.erl
+++ b/src/couch/src/couch_uuids.erl
@@ -95,7 +95,7 @@ new_prefix() ->
couch_util:to_hex((crypto:strong_rand_bytes(13))).
inc() ->
- crypto:rand_uniform(1, 16#ffe).
+ couch_rand:uniform(16#ffd).
state() ->
AlgoStr = config:get("uuids", "algorithm", "random"),
diff --git a/src/couch/test/couch_file_tests.erl b/src/couch/test/couch_file_tests.erl
index a387615dd..34c1a1654 100644
--- a/src/couch/test/couch_file_tests.erl
+++ b/src/couch/test/couch_file_tests.erl
@@ -418,7 +418,7 @@ nuke_dir_test_() ->
File0 = ?tempfile() ++ ".couch",
RootDir = filename:dirname(File0),
BaseName = filename:basename(File0),
- Seed = crypto:rand_uniform(1000000000, 9999999999),
+ Seed = couch_rand:uniform(8999999999) + 999999999,
DDocDir = io_lib:format("db.~b_design", [Seed]),
ViewDir = filename:join([RootDir, DDocDir]),
file:make_dir(ViewDir),
diff --git a/src/couch/test/json_stream_parse_tests.erl b/src/couch/test/json_stream_parse_tests.erl
index ffcf9185a..e690d7728 100644
--- a/src/couch/test/json_stream_parse_tests.erl
+++ b/src/couch/test/json_stream_parse_tests.erl
@@ -136,7 +136,7 @@ single_byte_data_fun([H | T]) ->
multiple_bytes_data_fun([]) ->
done;
multiple_bytes_data_fun(L) ->
- N = crypto:rand_uniform(0, 7),
+ N = couch_rand:uniform(7) - 1,
{Part, Rest} = split(L, N),
{list_to_binary(Part), fun() -> multiple_bytes_data_fun(Rest) end}.
diff --git a/src/couch_pse_tests/src/cpse_test_fold_changes.erl b/src/couch_pse_tests/src/cpse_test_fold_changes.erl
index 8ee74f041..00a402cb9 100644
--- a/src/couch_pse_tests/src/cpse_test_fold_changes.erl
+++ b/src/couch_pse_tests/src/cpse_test_fold_changes.erl
@@ -170,25 +170,11 @@ do_mutation_ordering(Db, Seq, [{DocId, _OldSeq} | Rest], DocSeqAcc) ->
shuffle(List) ->
- random:seed(os:timestamp()),
- Paired = [{random:uniform(), I} || I <- List],
+ Paired = [{couch_rand:uniform(), I} || I <- List],
Sorted = lists:sort(Paired),
[I || {_, I} <- Sorted].
-remove_random(List) ->
- Pos = random:uniform(length(List)),
- remove_random(Pos, List).
-
-
-remove_random(1, [Item | Rest]) ->
- {Item, Rest};
-
-remove_random(N, [Skip | Rest]) when N > 1 ->
- {Item, Tail} = remove_random(N - 1, Rest),
- {Item, [Skip | Tail]}.
-
-
fold_fun(#full_doc_info{id=Id, update_seq=Seq}, Acc) ->
{ok, [{Id, Seq} | Acc]}.
diff --git a/src/mem3/src/mem3.erl b/src/mem3/src/mem3.erl
index de633006a..f1af0f796 100644
--- a/src/mem3/src/mem3.erl
+++ b/src/mem3/src/mem3.erl
@@ -196,10 +196,13 @@ choose_shards(DbName, Nodes, Options) ->
Q = mem3_util:q_val(couch_util:get_value(q, Options,
config:get("cluster", "q", "8"))),
%% rotate to a random entry in the nodelist for even distribution
- {A, B} = lists:split(crypto:rand_uniform(1,length(Nodes)+1), Nodes),
- RotatedNodes = B ++ A,
+ RotatedNodes = rotate_rand(Nodes),
mem3_util:create_partition_map(DbName, N, Q, RotatedNodes, Suffix).
+rotate_rand(Nodes) ->
+ {A, B} = lists:split(couch_rand:uniform(length(Nodes)), Nodes),
+ B ++ A.
+
get_placement(Options) ->
case couch_util:get_value(placement, Options) of
undefined ->
@@ -382,4 +385,11 @@ allowed_nodes_test_() ->
]
}]}.
+rotate_rand_degenerate_test() ->
+ ?assertEqual([1], rotate_rand([1])).
+
+rotate_rand_distribution_test() ->
+ Cases = [rotate_rand([1, 2, 3]) || _ <- lists:seq(1, 100)],
+ ?assertEqual(3, length(lists:usort(Cases))).
+
-endif.