diff options
author | Jay Doane <jay.s.doane@gmail.com> | 2018-12-23 10:07:02 -0800 |
---|---|---|
committer | Jay Doane <jay.s.doane@gmail.com> | 2018-12-27 13:07:57 -0800 |
commit | b9b333bac7a2518c2acfde31c47872523ad6e50c (patch) | |
tree | 3b599f1d58d6a956be0fefae878732a24ab9db43 | |
parent | f519b26c80e2c3dce63dc2669b92f6e357607103 (diff) | |
download | couchdb-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.erl | 2 | ||||
-rw-r--r-- | src/couch/test/couch_file_tests.erl | 2 | ||||
-rw-r--r-- | src/couch/test/json_stream_parse_tests.erl | 2 | ||||
-rw-r--r-- | src/couch_pse_tests/src/cpse_test_fold_changes.erl | 16 | ||||
-rw-r--r-- | src/mem3/src/mem3.erl | 14 |
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. |