summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjiangphcn <jiangph@cn.ibm.com>2017-05-03 16:40:33 +0800
committerEric Avdey <eiri@eiri.ca>2017-06-09 09:06:51 -0300
commitf6321df8ad231451181845b7523ba791780dc747 (patch)
tree6943f4350901e7df3a4d5f46ac46bf9e3f1f688d
parentb45ed88e7a7860744236d3a59deb04a24d64c39c (diff)
downloadcouchdb-f6321df8ad231451181845b7523ba791780dc747.tar.gz
Fix broken eunit test in changes_since_test_ test suite
COUCHDB-3360/FB 85485
-rw-r--r--src/couch_mrview/src/couch_mrview_test_util.erl33
-rw-r--r--src/couch_mrview/src/couch_mrview_util.erl6
-rw-r--r--src/couch_mrview/test/couch_mrview_changes_since_tests.erl140
3 files changed, 112 insertions, 67 deletions
diff --git a/src/couch_mrview/src/couch_mrview_test_util.erl b/src/couch_mrview/src/couch_mrview_test_util.erl
index 2e0cb794e..b07b07679 100644
--- a/src/couch_mrview/src/couch_mrview_test_util.erl
+++ b/src/couch_mrview/src/couch_mrview_test_util.erl
@@ -49,26 +49,27 @@ make_docs(local, Count) ->
make_docs(_, Count) ->
[doc(I) || I <- lists:seq(1, Count)].
-ddoc(changes) ->
+ddoc({changes, Opts}) ->
+ ViewOpts = case Opts of
+ seq_indexed ->
+ [{<<"seq_indexed">>, true}];
+ keyseq_indexed ->
+ [{<<"keyseq_indexed">>, true}];
+ seq_indexed_keyseq_indexed ->
+ [
+ {<<"seq_indexed">>, true},
+ {<<"keyseq_indexed">>, true}
+ ]
+ end,
couch_doc:from_json_obj({[
{<<"_id">>, <<"_design/bar">>},
- {<<"options">>, {[
- {<<"seq_indexed">>, true}
- ]}},
+ {<<"options">>, {ViewOpts}},
{<<"views">>, {[
{<<"baz">>, {[
- {<<"map">>, <<"function(doc) {emit(doc.val, doc.val);}">>}
- ]}},
- {<<"bing">>, {[
- {<<"map">>, <<"function(doc) {}">>}
- ]}},
- {<<"zing">>, {[
- {<<"map">>, <<
- "function(doc) {\n"
- " if(doc.foo !== undefined)\n"
- " emit(doc.foo, 0);\n"
- "}"
- >>}
+ {
+ <<"map">>,
+ <<"function(doc) {emit(doc.val.toString(), doc.val);}">>
+ }
]}}
]}}
]});
diff --git a/src/couch_mrview/src/couch_mrview_util.erl b/src/couch_mrview/src/couch_mrview_util.erl
index 6bb8d07cf..a8462a2d8 100644
--- a/src/couch_mrview/src/couch_mrview_util.erl
+++ b/src/couch_mrview/src/couch_mrview_util.erl
@@ -366,7 +366,7 @@ get_view_changes_count(View) ->
{ok, 0};
{#btree{}, nil} ->
couch_btree:fold_reduce(SBtree, CountFun, 0, []);
- {nil, #btree{}} ->
+ {_, #btree{}} ->
couch_btree:fold_reduce(KSBtree, CountFun, 0, [])
end,
case {SBtree, KSBtree} of
@@ -836,9 +836,9 @@ changes_expand_dups([{{[Key, Seq], DocId}, {dups, Vals}} | Rest], Acc) ->
changes_expand_dups([{{Seq, Key}, {DocId, {dups, Vals}}} | Rest], Acc) ->
Expanded = [{{Seq, Key, DocId}, Val} || Val <- Vals],
changes_expand_dups(Rest, Expanded ++ Acc);
-changes_expand_dups([{{[Key, Seq], DocId}, Val} | Rest], Acc) ->
+changes_expand_dups([{{[Key, Seq], DocId}, {Val, _}} | Rest], Acc) ->
changes_expand_dups(Rest, [{{Seq, Key, DocId}, Val} | Acc]);
-changes_expand_dups([{{Seq, Key}, {DocId, Val}} | Rest], Acc) ->
+changes_expand_dups([{{Seq, Key}, {DocId, Val, _}} | Rest], Acc) ->
changes_expand_dups(Rest, [{{Seq, Key, DocId}, Val} | Acc]).
maybe_load_doc(_Db, _DI, #mrargs{include_docs=false}) ->
diff --git a/src/couch_mrview/test/couch_mrview_changes_since_tests.erl b/src/couch_mrview/test/couch_mrview_changes_since_tests.erl
index 8b11e3dd0..1e31b3968 100644
--- a/src/couch_mrview/test/couch_mrview_changes_since_tests.erl
+++ b/src/couch_mrview/test/couch_mrview_changes_since_tests.erl
@@ -17,19 +17,12 @@
-define(TIMEOUT, 1000).
-
-
-setup() ->
- {ok, Db} = couch_mrview_test_util:init_db(?tempdb(), changes),
- Db.
-
teardown(Db) ->
couch_db:close(Db),
couch_server:delete(Db#db.name, [?ADMIN_CTX]),
ok.
-
-changes_since_test() ->
+changes_since_basic_test_() ->
{
"changes_since tests",
{
@@ -37,17 +30,62 @@ changes_since_test() ->
fun test_util:start_couch/0, fun test_util:stop_couch/1,
{
foreach,
- fun setup/0, fun teardown/1,
+ fun() ->
+ Type = {changes, seq_indexed},
+ {ok, Db} = couch_mrview_test_util:init_db(?tempdb(), Type),
+ Db
+ end,
+ fun teardown/1,
[
fun test_basic/1,
- fun test_range/1,
fun test_basic_since/1,
- fun test_range_since/1,
fun test_basic_count/1,
- fun test_range_count/1,
fun test_basic_count_since/1,
+ fun test_compact/1
+ ]
+ }
+ }
+ }.
+
+changes_since_range_test_() ->
+ {
+ "changes_since_range tests",
+ {
+ setup,
+ fun test_util:start_couch/0, fun test_util:stop_couch/1,
+ {
+ foreach,
+ fun() ->
+ Type = {changes, keyseq_indexed},
+ {ok, Db} = couch_mrview_test_util:init_db(?tempdb(), Type),
+ Db
+ end,
+ fun teardown/1,
+ [
+ fun test_range/1,
+ fun test_range_since/1
+ ]
+ }
+ }
+ }.
+
+changes_since_range_count_test_() ->
+ {
+ "changes_since_range_count tests",
+ {
+ setup,
+ fun test_util:start_couch/0, fun test_util:stop_couch/1,
+ {
+ foreach,
+ fun() ->
+ Type = {changes, seq_indexed_keyseq_indexed},
+ {ok, Db} = couch_mrview_test_util:init_db(?tempdb(), Type),
+ Db
+ end,
+ fun teardown/1,
+ [
+ fun test_range_count/1,
fun test_range_count_since/1,
- fun test_compact/1,
fun test_remove_key/1
]
}
@@ -57,46 +95,48 @@ changes_since_test() ->
test_basic(Db) ->
Result = run_query(Db, 0, []),
Expect = {ok, [
- {{2, 1, <<"1">>}, 1},
- {{3, 10, <<"10">>}, 10},
- {{4, 2, <<"2">>}, 2},
- {{5, 3, <<"3">>}, 3},
- {{6, 4, <<"4">>}, 4},
- {{7, 5, <<"5">>}, 5},
- {{8, 6, <<"6">>}, 6},
- {{9, 7, <<"7">>}, 7},
- {{10, 8, <<"8">>}, 8},
- {{11, 9, <<"9">>}, 9}
+ {{2, <<"1">>, <<"1">>}, 1},
+ {{3, <<"10">>, <<"10">>}, 10},
+ {{4, <<"2">>, <<"2">>}, 2},
+ {{5, <<"3">>, <<"3">>}, 3},
+ {{6, <<"4">>, <<"4">>}, 4},
+ {{7, <<"5">>, <<"5">>}, 5},
+ {{8, <<"6">>, <<"6">>}, 6},
+ {{9, <<"7">>, <<"7">>}, 7},
+ {{10, <<"8">>, <<"8">>}, 8},
+ {{11, <<"9">>, <<"9">>}, 9}
]},
?_assertEqual(Result, Expect).
test_range(Db) ->
- Result = run_query(Db, 0, [{start_key, 3}, {end_key, 5}]),
+ Range = [{start_key, <<"3">>}, {end_key, <<"5">>}],
+ Result = run_query(Db, 0, Range),
Expect = {ok, [
- {{5, 3, <<"3">>}, 3},
- {{6, 4, <<"4">>}, 4},
- {{7, 5, <<"5">>}, 5}
+ {{5, <<"3">>, <<"3">>}, 3},
+ {{6, <<"4">>, <<"4">>}, 4},
+ {{7, <<"5">>, <<"5">>}, 5}
]},
?_assertEqual(Result, Expect).
test_basic_since(Db) ->
Result = run_query(Db, 5, []),
Expect = {ok, [
- {{6, 4, <<"4">>}, 4},
- {{7, 5, <<"5">>}, 5},
- {{8, 6, <<"6">>}, 6},
- {{9, 7, <<"7">>}, 7},
- {{10, 8, <<"8">>}, 8},
- {{11, 9, <<"9">>}, 9}
+ {{6, <<"4">>, <<"4">>}, 4},
+ {{7, <<"5">>, <<"5">>}, 5},
+ {{8, <<"6">>, <<"6">>}, 6},
+ {{9, <<"7">>, <<"7">>}, 7},
+ {{10, <<"8">>, <<"8">>}, 8},
+ {{11, <<"9">>, <<"9">>}, 9}
]},
?_assertEqual(Result, Expect).
test_range_since(Db) ->
- Result = run_query(Db, 5, [{start_key, 3}, {end_key, 5}]),
+ Range = [{start_key, <<"3">>}, {end_key, <<"5">>}],
+ Result = run_query(Db, 5, Range),
Expect = {ok, [
- {{6, 4, <<"4">>}, 4},
- {{7, 5, <<"5">>}, 5}
+ {{6, <<"4">>, <<"4">>}, 4},
+ {{7, <<"5">>, <<"5">>}, 5}
]},
?_assertEqual(Result, Expect).
@@ -105,7 +145,8 @@ test_basic_count(Db) ->
?_assertEqual(Result, 10).
test_range_count(Db) ->
- Result = run_count_query(Db, 0, [{start_key, 3}, {end_key, 5}]),
+ Range = [{start_key, <<"3">>}, {end_key, <<"5">>}],
+ Result = run_count_query(Db, 0, Range),
?_assertEqual(Result, 3).
test_basic_count_since(Db) ->
@@ -113,14 +154,14 @@ test_basic_count_since(Db) ->
?_assertEqual(Result, 6).
test_range_count_since(Db) ->
- Result = run_count_query(Db, 5, [{start_key, 3}, {end_key, 5}]),
+ Range = [{start_key, <<"3">>}, {end_key, <<"5">>}],
+ Result = run_count_query(Db, 5, Range),
?_assertEqual(Result, 2).
test_compact(Db) ->
Result = couch_mrview:compact(Db, <<"_design/bar">>),
- ?_assertEqual(Result, ok),
Count = run_count_query(Db, 0, []),
- ?_assertEqual(Count, 10).
+ [?_assertEqual(Result, ok), ?_assertEqual(Count, 10)].
test_remove_key(Db) ->
%% add new doc
@@ -130,13 +171,12 @@ test_remove_key(Db) ->
{ok, _} = couch_db:ensure_full_commit(Db),
{ok, Db1} = couch_db:reopen(Db),
Result = run_count_query(Db1, 0, []),
- ?_assertEqual(Result, 11),
%% check new view key
- Result1 = run_query(Db1, 0, [{start_key, 11}, {end_key, 11}]),
+ Range = [{start_key, <<"11">>}, {end_key, <<"11">>}],
+ Result1 = run_query(Db1, 0, Range),
Expect = {ok, [
- {{12, 11, <<"11">>}, 11}
+ {{12, <<"11">>, <<"11">>}, 11}
]},
- ?_assertEqual(Result1, Expect),
%% delete doc
Doc2 = couch_doc:from_json_obj({[
@@ -147,13 +187,17 @@ test_remove_key(Db) ->
{ok, _} = couch_db:update_doc(Db1, Doc2, []),
{ok, Db2} = couch_db:reopen(Db1),
Result2 = run_count_query(Db2, 0, []),
- ?_assertEqual(Result2, 11),
%% check new view key
- Result3 = run_query(Db2, 0, [{start_key, 11}, {end_key, 11}]),
+ Result3 = run_query(Db2, 0, Range),
Expect2 = {ok, [
- {{13, 11, <<"11">>}, {[{<<"_removed">>, true}]}}
+ {{13, <<"11">>, <<"11">>}, removed}
]},
- ?_assertEqual(Result3, Expect2).
+ [
+ ?_assertEqual(Result, 11),
+ ?_assertEqual(Result1, Expect),
+ ?_assertEqual(Result2, 11),
+ ?_assertEqual(Result3, Expect2)
+ ].
run_query(Db, Since, Opts) ->
Fun = fun(KV, Acc) -> {ok, [KV | Acc]} end,