diff options
author | Garren Smith <garren.smith@gmail.com> | 2018-08-14 15:43:01 +0200 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2018-09-05 11:51:31 +0100 |
commit | 2eb67b5dfe09926ed91f0671a85d1d67701c2e7e (patch) | |
tree | 9c9d31dfbd354f324381c1478ec967e0c8074a4c | |
parent | 28777c5834b5b73c1368825903712566cdd91213 (diff) | |
download | couchdb-2eb67b5dfe09926ed91f0671a85d1d67701c2e7e.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. |