diff options
author | Garren Smith <garren.smith@gmail.com> | 2018-08-14 15:43:01 +0200 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2018-08-22 11:40:38 +0100 |
commit | eab120d643e85acb69fec68dd876bfd4ce043546 (patch) | |
tree | 3a936d09ccd40926a1ffa6b9e073cd6f6fc2d4d7 | |
parent | 66301284cc1ebdde3a2f8bfe77f8b5ef3163df89 (diff) | |
download | couchdb-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.erl | 86 |
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. |