summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarren Smith <garren.smith@gmail.com>2018-08-14 15:43:01 +0200
committerRobert Newson <rnewson@apache.org>2018-08-22 11:40:38 +0100
commiteab120d643e85acb69fec68dd876bfd4ce043546 (patch)
tree3a936d09ccd40926a1ffa6b9e073cd6f6fc2d4d7
parent66301284cc1ebdde3a2f8bfe77f8b5ef3163df89 (diff)
downloadcouchdb-eab120d643e85acb69fec68dd876bfd4ce043546.tar.gz
Add test for all_docs partition optimisation
Adds tests to validate the all_docs optimisations works for partitions
-rw-r--r--src/fabric/src/fabric_view_all_docs.erl86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/fabric/src/fabric_view_all_docs.erl b/src/fabric/src/fabric_view_all_docs.erl
index 83c3790a1..b12bcded3 100644
--- a/src/fabric/src/fabric_view_all_docs.erl
+++ b/src/fabric/src/fabric_view_all_docs.erl
@@ -316,3 +316,89 @@ cancel_read_pids(Pids) ->
{empty, _} ->
ok
end.
+
+-ifdef(TEST).
+
+-include_lib("eunit/include/eunit.hrl").
+
+ shards_for_partition_gets_partitioned_shards_test() ->
+ DbName = <<"db">>,
+ Args = #mrargs{
+ start_key = <<"pk:id">>,
+ end_key = <<"pk:idZ">>,
+ extra = [{partitioned, true}]
+ },
+ meck:expect(mem3, shards, fun(<<"db">>, <<"pk:foo">>) -> [] end),
+ shards(DbName, Args),
+ meck:validate(mem3),
+ meck:unload(mem3).
+
+ shards_for_no_partition_gets_all_shards_test() ->
+ DbName = <<"db">>,
+ Args = #mrargs{
+ start_key = <<"pk:id">>,
+ end_key = <<"pk:idZ">>,
+ extra = [{partitioned, false}]
+ },
+ meck:expect(mem3, shards, fun(<<"db">>) -> [] end),
+ shards(DbName, Args),
+ meck:validate(mem3),
+ meck:unload(mem3).
+
+ shards_for_different_partitions_gets_all_shards_test() ->
+ DbName = <<"db">>,
+ Args = #mrargs{
+ start_key = <<"pk1:id">>,
+ end_key = <<"pk2:idZ">>,
+ extra = [{partitioned, true}]
+ },
+ meck:expect(mem3, shards, fun(<<"db">>) -> [] end),
+ shards(DbName, Args),
+ meck:validate(mem3),
+ meck:unload(mem3).
+
+ shards_for_no_startkey_all_shards_test() ->
+ DbName = <<"db">>,
+ Args = #mrargs{
+ end_key = <<"pk:idZ">>,
+ extra = [{partitioned, true}]
+ },
+ meck:expect(mem3, shards, fun(<<"db">>) -> [] end),
+ shards(DbName, Args),
+ meck:validate(mem3),
+ meck:unload(mem3).
+
+ shards_for_no_endkey_all_shards_test() ->
+ DbName = <<"db">>,
+ Args = #mrargs{
+ start_key = <<"pk:idZ">>,
+ extra = [{partitioned, true}]
+ },
+ meck:expect(mem3, shards, fun(<<"db">>) -> [] end),
+ shards(DbName, Args),
+ meck:validate(mem3),
+ meck:unload(mem3).
+
+ shards_for_no_keys_all_shards_test() ->
+ DbName = <<"db">>,
+ Args = #mrargs{
+ extra = [{partitioned, true}]
+ },
+ meck:expect(mem3, shards, fun(<<"db">>) -> [] end),
+ shards(DbName, Args),
+ meck:validate(mem3),
+ meck:unload(mem3).
+
+ shards_for_non_binary_keys_all_shards_test() ->
+ DbName = <<"db">>,
+ Args = #mrargs{
+ start_key = null,
+ end_key = null,
+ extra = [{partitioned, true}]
+ },
+ meck:expect(mem3, shards, fun(<<"db">>) -> [] end),
+ shards(DbName, Args),
+ meck:validate(mem3),
+ meck:unload(mem3).
+
+-endif.