You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2018/08/30 08:56:49 UTC
[couchdb] 10/12: Add test for all_docs partition optimisation
This is an automated email from the ASF dual-hosted git repository.
rnewson pushed a commit to branch user-partitioned-dbs-6
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit b0a9b0010d04a8a5b914712324f104dab2624583
Author: Garren Smith <ga...@gmail.com>
AuthorDate: Tue Aug 14 15:43:01 2018 +0200
Add test for all_docs partition optimisation
Adds tests to validate the all_docs optimisations works for partitions
---
src/fabric/src/fabric_view_all_docs.erl | 86 +++++++++++++++++++++++++++++++++
1 file changed, 86 insertions(+)
diff --git a/src/fabric/src/fabric_view_all_docs.erl b/src/fabric/src/fabric_view_all_docs.erl
index 83c3790..b12bcde 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.