| % Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| % use this file except in compliance with the License. You may obtain a copy of |
| % the License at |
| % |
| % http://www.apache.org/licenses/LICENSE-2.0 |
| % |
| % Unless required by applicable law or agreed to in writing, software |
| % distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| % WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| % License for the specific language governing permissions and limitations under |
| % the License. |
| |
| -module(couch_views_batch_test). |
| |
| -include_lib("eunit/include/eunit.hrl"). |
| -include_lib("fabric/test/fabric2_test.hrl"). |
| -include_lib("couch_views/include/couch_views.hrl"). |
| |
| batch_test_() -> |
| { |
| "Test view batch sizing", |
| { |
| setup, |
| fun setup/0, |
| fun cleanup/1, |
| with([ |
| ?TDEF(basic), |
| ?TDEF(search_success), |
| ?TDEF(sense_success), |
| ?TDEF(failure), |
| ?TDEF(failure_switches_to_sense) |
| ]) |
| } |
| }. |
| |
| setup() -> |
| test_util:start_couch(). |
| |
| cleanup(Ctx) -> |
| test_util:stop_couch(Ctx). |
| |
| basic(_) -> |
| erase(couch_views_batch), |
| ?assertEqual(100, couch_views_batch:start(#mrst{})). |
| |
| search_success(_) -> |
| erase(couch_views_batch), |
| couch_views_batch:start(#mrst{}), |
| couch_views_batch:success(#mrst{}, ustats(0, 0, 0)), |
| ?assertEqual(600, couch_views_batch:start(#mrst{})). |
| |
| sense_success(_) -> |
| erase(couch_views_batch), |
| couch_views_batch:start(#mrst{}), |
| % Exceeding our threshold switches from search to sense |
| couch_views_batch:success(#mrst{}, ustats(5000, 10000000, 10000)), |
| ?assertEqual(80, couch_views_batch:start(#mrst{})), |
| couch_views_batch:success(#mrst{}, ustats(0, 0, 0)), |
| ?assertEqual(180, couch_views_batch:start(#mrst{})). |
| |
| failure(_) -> |
| erase(couch_views_batch), |
| couch_views_batch:start(#mrst{}), |
| couch_views_batch:failure(#mrst{}), |
| ?assertEqual(50, couch_views_batch:start(#mrst{})). |
| |
| failure_switches_to_sense(_) -> |
| erase(couch_views_batch), |
| couch_views_batch:start(#mrst{}), |
| couch_views_batch:failure(#mrst{}), |
| couch_views_batch:start(#mrst{}), |
| couch_views_batch:success(#mrst{}, ustats(0, 0, 0)), |
| ?assertEqual(150, couch_views_batch:start(#mrst{})). |
| |
| ustats(DocsRead, TxSize, TotalKVs) -> |
| #{ |
| docs_read => DocsRead, |
| tx_size => TxSize, |
| total_kvs => TotalKVs |
| }. |