diff options
author | Garren Smith <garren.smith@gmail.com> | 2018-08-14 15:43:01 +0200 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2018-10-03 15:41:41 +0100 |
commit | 7202452a94c46450112be13646bad82b62722b0b (patch) | |
tree | fec46777f5c723288d94c247d1182862119a8539 | |
parent | 43a4bae5ec3b07368682df965391cbd6a9f6104d (diff) | |
download | couchdb-7202452a94c46450112be13646bad82b62722b0b.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. |