You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2021/10/27 18:22:55 UTC

[couchdb] 02/04: Parameterize shards db

This is an automated email from the ASF dual-hosted git repository.

jaydoane pushed a commit to branch 3.x
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 4ea233fb250e465cd36c83a41bb0630af0c08ce9
Author: Jay Doane <ja...@apache.org>
AuthorDate: Tue Oct 26 16:43:40 2021 -0700

    Parameterize shards db
    
    Depending on configuration, it is possible for the shards db to be
    different than `_dbs`.
---
 src/mem3/test/eunit/mem3_bdu_test.erl | 62 +++++++++++++++++------------------
 1 file changed, 31 insertions(+), 31 deletions(-)

diff --git a/src/mem3/test/eunit/mem3_bdu_test.erl b/src/mem3/test/eunit/mem3_bdu_test.erl
index 056cced..27d5783 100644
--- a/src/mem3/test/eunit/mem3_bdu_test.erl
+++ b/src/mem3/test/eunit/mem3_bdu_test.erl
@@ -23,7 +23,6 @@
 -define(PASS, "pass").
 -define(AUTH, {basic_auth, {?USER, ?PASS}}).
 -define(JSON, {"Content-Type", "application/json"}).
--define(DBS, "_node/_local/_dbs").
 
 
 setup() ->
@@ -33,10 +32,11 @@ setup() ->
     Db = ?tempdb(),
     Port = mochiweb_socket_server:get(chttpd, port),
     Url = lists:concat(["http://", Addr, ":", Port, "/"]),
-    {Url, Db}.
+    ShardsDb = "_node/_local/" ++ config:get("mem3", "shards_db", "_dbs"),
+    {Url, Db, ShardsDb}.
 
 
-teardown({Url, Db}) ->
+teardown({Url, Db, _}) ->
     sync_delete_db(Url, Db),
     ok = config:delete("admins", ?USER, _Persist=false).
 
@@ -78,7 +78,7 @@ mem3_bdu_shard_doc_test_() ->
     }.
 
 
-t_can_insert_shard_map_doc({Top, Db}) ->
+t_can_insert_shard_map_doc({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
@@ -87,22 +87,22 @@ t_can_insert_shard_map_doc({Top, Db}) ->
         <<"by_range">> => #{Range => [Node]},
         <<"suffix">> => suffix()
     },
-    {Code, Res} = req(post, Top ++ ?DBS, ShardMap),
+    {Code, Res} = req(post, Top ++ ShardsDb, ShardMap),
     ?assertEqual(201, Code),
     ?assertMatch(#{<<"ok">> := true}, Res).
 
 
-t_missing_by_node_section({Top, Db}) ->
+t_missing_by_node_section({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
         <<"_id">> => Db,
         <<"by_range">> => #{Range => [Node]}
     },
-    ?assertMatch({403, _}, req(post, Top ++ ?DBS, ShardMap)).
+    ?assertMatch({403, _}, req(post, Top ++ ShardsDb, ShardMap)).
 
 
-t_by_node_not_a_map({Top, Db}) ->
+t_by_node_not_a_map({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
@@ -110,20 +110,20 @@ t_by_node_not_a_map({Top, Db}) ->
         <<"by_node">> => 42,
         <<"by_range">> => #{Range => [Node]}
     },
-    ?assertMatch({403, _}, req(post, Top ++ ?DBS, ShardMap)).
+    ?assertMatch({403, _}, req(post, Top ++ ShardsDb, ShardMap)).
 
 
-t_missing_by_range_section({Top, Db}) ->
+t_missing_by_range_section({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
         <<"_id">> => Db,
         <<"by_node">> => #{Node => [Range]}
     },
-    ?assertMatch({403, _}, req(post, Top ++ ?DBS, ShardMap)).
+    ?assertMatch({403, _}, req(post, Top ++ ShardsDb, ShardMap)).
 
 
-t_by_range_not_a_map({Top, Db}) ->
+t_by_range_not_a_map({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
@@ -131,10 +131,10 @@ t_by_range_not_a_map({Top, Db}) ->
         <<"by_node">> => #{Node => [Range]},
         <<"by_range">> => 42
     },
-    ?assertMatch({403, _}, req(post, Top ++ ?DBS, ShardMap)).
+    ?assertMatch({403, _}, req(post, Top ++ ShardsDb, ShardMap)).
 
 
-t_missing_range_in_by_range({Top, Db}) ->
+t_missing_range_in_by_range({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
@@ -142,10 +142,10 @@ t_missing_range_in_by_range({Top, Db}) ->
         <<"by_node">> => #{Node => [Range]},
         <<"by_range">> => #{<<"xyz">> => [Node]}
     },
-    ?assertMatch({403, _}, req(post, Top ++ ?DBS, ShardMap)).
+    ?assertMatch({403, _}, req(post, Top ++ ShardsDb, ShardMap)).
 
 
-t_missing_node_in_by_range_node_list({Top, Db}) ->
+t_missing_node_in_by_range_node_list({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
@@ -153,10 +153,10 @@ t_missing_node_in_by_range_node_list({Top, Db}) ->
         <<"by_node">> => #{Node => [Range]},
         <<"by_range">> => #{Range => [<<"xyz">>]}
     },
-    ?assertMatch({403, _}, req(post, Top ++ ?DBS, ShardMap)).
+    ?assertMatch({403, _}, req(post, Top ++ ShardsDb, ShardMap)).
 
 
-t_missing_node_in_by_node({Top, Db}) ->
+t_missing_node_in_by_node({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
@@ -164,10 +164,10 @@ t_missing_node_in_by_node({Top, Db}) ->
         <<"by_node">> => #{<<"xyz">> => [Range]},
         <<"by_range">> => #{Range => [Node]}
     },
-    ?assertMatch({403, _}, req(post, Top ++ ?DBS, ShardMap)).
+    ?assertMatch({403, _}, req(post, Top ++ ShardsDb, ShardMap)).
 
 
-t_missing_range_in_by_node_range_list({Top, Db}) ->
+t_missing_range_in_by_node_range_list({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
@@ -175,10 +175,10 @@ t_missing_range_in_by_node_range_list({Top, Db}) ->
         <<"by_node">> => #{Node => [<<"xyz">>]},
         <<"by_range">> => #{Range => [Node]}
     },
-    ?assertMatch({403, _}, req(post, Top ++ ?DBS, ShardMap)).
+    ?assertMatch({403, _}, req(post, Top ++ ShardsDb, ShardMap)).
 
 
-t_by_node_val_not_array({Top, Db}) ->
+t_by_node_val_not_array({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
@@ -186,10 +186,10 @@ t_by_node_val_not_array({Top, Db}) ->
         <<"by_node">> => #{Node => 42},
         <<"by_range">> => #{Range => [Node]}
     },
-    ?assertMatch({403, _}, req(post, Top ++ ?DBS, ShardMap)).
+    ?assertMatch({403, _}, req(post, Top ++ ShardsDb, ShardMap)).
 
 
-t_by_range_val_not_array({Top, Db}) ->
+t_by_range_val_not_array({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
@@ -197,12 +197,12 @@ t_by_range_val_not_array({Top, Db}) ->
         <<"by_node">> => #{Node => [Range]},
         <<"by_range">> => #{Range => 42}
     },
-    ?assertMatch({403, _}, req(post, Top ++ ?DBS, ShardMap)).
+    ?assertMatch({403, _}, req(post, Top ++ ShardsDb, ShardMap)).
 
 
-t_design_docs_are_not_validated({Top, _}) ->
+t_design_docs_are_not_validated({Top, _, ShardsDb}) ->
     DDoc = #{<<"_id">> => <<"_design/ddoc_bdu_test">>},
-    {Code, Res} = req(post, Top ++ ?DBS, DDoc),
+    {Code, Res} = req(post, Top ++ ShardsDb, DDoc),
     ?assertEqual(201, Code),
     #{<<"rev">> := Rev} = Res,
     Deleted = #{
@@ -210,10 +210,10 @@ t_design_docs_are_not_validated({Top, _}) ->
         <<"_rev">> => Rev,
         <<"_deleted">> => true
     },
-    ?assertMatch({200, _}, req(post, Top ++ ?DBS, Deleted)).
+    ?assertMatch({200, _}, req(post, Top ++ ShardsDb, Deleted)).
 
 
-t_replicated_changes_not_validated({Top, Db}) ->
+t_replicated_changes_not_validated({Top, Db, ShardsDb}) ->
     Node = atom_to_binary(node(), utf8),
     Range = <<"00000000-ffffffff">>,
     ShardMap = #{
@@ -232,7 +232,7 @@ t_replicated_changes_not_validated({Top, Db}) ->
         <<"docs">> => [ShardMap],
         <<"new_edits">> => false
     },
-    {Code, Res} = req(post, Top ++ ?DBS ++ "/_bulk_docs", Docs),
+    {Code, Res} = req(post, Top ++ ShardsDb ++ "/_bulk_docs", Docs),
     ?assertEqual(201, Code),
     ?assertEqual([], Res),
     Deleted = #{
@@ -240,7 +240,7 @@ t_replicated_changes_not_validated({Top, Db}) ->
         <<"_rev">> => <<"1-abc">>,
         <<"_deleted">> => true
     },
-    ?assertMatch({200, _}, req(post, Top ++ ?DBS, Deleted)).
+    ?assertMatch({200, _}, req(post, Top ++ ShardsDb, Deleted)).
 
 
 delete_db(Top, Db) when is_binary(Db) ->