summaryrefslogtreecommitdiff
path: root/src/couch/src/test_engine_fold_changes.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/couch/src/test_engine_fold_changes.erl')
-rw-r--r--src/couch/src/test_engine_fold_changes.erl132
1 files changed, 69 insertions, 63 deletions
diff --git a/src/couch/src/test_engine_fold_changes.erl b/src/couch/src/test_engine_fold_changes.erl
index 6e97fda9b..561471374 100644
--- a/src/couch/src/test_engine_fold_changes.erl
+++ b/src/couch/src/test_engine_fold_changes.erl
@@ -22,143 +22,149 @@
cet_empty_changes() ->
- {ok, Engine, St} = test_engine_util:init_engine(),
-
- ?assertEqual(0, Engine:count_changes_since(St, 0)),
- ?assertEqual({ok, []}, Engine:fold_changes(St, 0, fun fold_fun/2, [], [])).
+ {ok, Db} = test_engine_util:create_db(),
+ ?assertEqual(0, couch_db_engine:count_changes_since(Db, 0)),
+ ?assertEqual({ok, []},
+ couch_db_engine:fold_changes(Db, 0, fun fold_fun/2, [], [])).
cet_single_change() ->
- {ok, Engine, St1} = test_engine_util:init_engine(),
- Actions = [{create, {<<"a">>, []}}],
- {ok, St2} = test_engine_util:apply_actions(Engine, St1, Actions),
+ {ok, Db1} = test_engine_util:create_db(),
+ Actions = [{create, {<<"a">>, {[]}}}],
+ {ok, Db2} = test_engine_util:apply_actions(Db1, Actions),
- ?assertEqual(1, Engine:count_changes_since(St2, 0)),
+ ?assertEqual(1, couch_db_engine:count_changes_since(Db2, 0)),
?assertEqual({ok, [{<<"a">>, 1}]},
- Engine:fold_changes(St2, 0, fun fold_fun/2, [], [])).
+ couch_db_engine:fold_changes(Db2, 0, fun fold_fun/2, [], [])).
cet_two_changes() ->
- {ok, Engine, St1} = test_engine_util:init_engine(),
+ {ok, Db1} = test_engine_util:create_db(),
Actions = [
- {create, {<<"a">>, []}},
- {create, {<<"b">>, []}}
+ {create, {<<"a">>, {[]}}},
+ {create, {<<"b">>, {[]}}}
],
- {ok, St2} = test_engine_util:apply_actions(Engine, St1, Actions),
+ {ok, Db2} = test_engine_util:apply_actions(Db1, Actions),
- ?assertEqual(2, Engine:count_changes_since(St2, 0)),
- {ok, Changes} = Engine:fold_changes(St2, 0, fun fold_fun/2, [], []),
+ ?assertEqual(2, couch_db_engine:count_changes_since(Db2, 0)),
+ {ok, Changes} =
+ couch_db_engine:fold_changes(Db2, 0, fun fold_fun/2, [], []),
?assertEqual([{<<"a">>, 1}, {<<"b">>, 2}], lists:reverse(Changes)).
cet_two_changes_batch() ->
- {ok, Engine, St1} = test_engine_util:init_engine(),
+ {ok, Db1} = test_engine_util:create_db(),
Actions1 = [
{batch, [
- {create, {<<"a">>, []}},
- {create, {<<"b">>, []}}
+ {create, {<<"a">>, {[]}}},
+ {create, {<<"b">>, {[]}}}
]}
],
- {ok, St2} = test_engine_util:apply_actions(Engine, St1, Actions1),
+ {ok, Db2} = test_engine_util:apply_actions(Db1, Actions1),
- ?assertEqual(2, Engine:count_changes_since(St2, 0)),
- {ok, Changes1} = Engine:fold_changes(St2, 0, fun fold_fun/2, [], []),
+ ?assertEqual(2, couch_db_engine:count_changes_since(Db2, 0)),
+ {ok, Changes1} =
+ couch_db_engine:fold_changes(Db2, 0, fun fold_fun/2, [], []),
?assertEqual([{<<"a">>, 1}, {<<"b">>, 2}], lists:reverse(Changes1)),
- {ok, Engine, St3} = test_engine_util:init_engine(),
+ {ok, Db3} = test_engine_util:create_db(),
Actions2 = [
{batch, [
- {create, {<<"b">>, []}},
- {create, {<<"a">>, []}}
+ {create, {<<"b">>, {[]}}},
+ {create, {<<"a">>, {[]}}}
]}
],
- {ok, St4} = test_engine_util:apply_actions(Engine, St3, Actions2),
+ {ok, Db4} = test_engine_util:apply_actions(Db3, Actions2),
- ?assertEqual(2, Engine:count_changes_since(St4, 0)),
- {ok, Changes2} = Engine:fold_changes(St4, 0, fun fold_fun/2, [], []),
- ?assertEqual([{<<"b">>, 1}, {<<"a">>, 2}], lists:reverse(Changes2)).
+ ?assertEqual(2, couch_db_engine:count_changes_since(Db4, 0)),
+ {ok, Changes2} =
+ couch_db_engine:fold_changes(Db4, 0, fun fold_fun/2, [], []),
+ ?assertEqual([{<<"a">>, 1}, {<<"b">>, 2}], lists:reverse(Changes2)).
cet_update_one() ->
- {ok, Engine, St1} = test_engine_util:init_engine(),
+ {ok, Db1} = test_engine_util:create_db(),
Actions = [
- {create, {<<"a">>, []}},
- {update, {<<"a">>, []}}
+ {create, {<<"a">>, {[]}}},
+ {update, {<<"a">>, {[]}}}
],
- {ok, St2} = test_engine_util:apply_actions(Engine, St1, Actions),
+ {ok, Db2} = test_engine_util:apply_actions(Db1, Actions),
- ?assertEqual(1, Engine:count_changes_since(St2, 0)),
+ ?assertEqual(1, couch_db_engine:count_changes_since(Db2, 0)),
?assertEqual({ok, [{<<"a">>, 2}]},
- Engine:fold_changes(St2, 0, fun fold_fun/2, [], [])).
+ couch_db_engine:fold_changes(Db2, 0, fun fold_fun/2, [], [])).
cet_update_first_of_two() ->
- {ok, Engine, St1} = test_engine_util:init_engine(),
+ {ok, Db1} = test_engine_util:create_db(),
Actions = [
- {create, {<<"a">>, []}},
- {create, {<<"b">>, []}},
- {update, {<<"a">>, []}}
+ {create, {<<"a">>, {[]}}},
+ {create, {<<"b">>, {[]}}},
+ {update, {<<"a">>, {[]}}}
],
- {ok, St2} = test_engine_util:apply_actions(Engine, St1, Actions),
+ {ok, Db2} = test_engine_util:apply_actions(Db1, Actions),
- ?assertEqual(2, Engine:count_changes_since(St2, 0)),
- {ok, Changes} = Engine:fold_changes(St2, 0, fun fold_fun/2, [], []),
+ ?assertEqual(2, couch_db_engine:count_changes_since(Db2, 0)),
+ {ok, Changes} =
+ couch_db_engine:fold_changes(Db2, 0, fun fold_fun/2, [], []),
?assertEqual([{<<"b">>, 2}, {<<"a">>, 3}], lists:reverse(Changes)).
cet_update_second_of_two() ->
- {ok, Engine, St1} = test_engine_util:init_engine(),
+ {ok, Db1} = test_engine_util:create_db(),
Actions = [
- {create, {<<"a">>, []}},
- {create, {<<"b">>, []}},
- {update, {<<"b">>, []}}
+ {create, {<<"a">>, {[]}}},
+ {create, {<<"b">>, {[]}}},
+ {update, {<<"b">>, {[]}}}
],
- {ok, St2} = test_engine_util:apply_actions(Engine, St1, Actions),
+ {ok, Db2} = test_engine_util:apply_actions(Db1, Actions),
- ?assertEqual(2, Engine:count_changes_since(St2, 0)),
- {ok, Changes} = Engine:fold_changes(St2, 0, fun fold_fun/2, [], []),
+ ?assertEqual(2, couch_db_engine:count_changes_since(Db2, 0)),
+ {ok, Changes} =
+ couch_db_engine:fold_changes(Db2, 0, fun fold_fun/2, [], []),
?assertEqual([{<<"a">>, 1}, {<<"b">>, 3}], lists:reverse(Changes)).
cet_check_mutation_ordering() ->
Actions = shuffle(lists:map(fun(Seq) ->
- {create, {docid(Seq), []}}
+ {create, {docid(Seq), {[]}}}
end, lists:seq(1, ?NUM_DOCS))),
DocIdOrder = [DocId || {_, {DocId, _}} <- Actions],
DocSeqs = lists:zip(DocIdOrder, lists:seq(1, ?NUM_DOCS)),
- {ok, Engine, St1} = test_engine_util:init_engine(),
- {ok, St2} = test_engine_util:apply_actions(Engine, St1, Actions),
+ {ok, Db1} = test_engine_util:create_db(),
+ {ok, Db2} = test_engine_util:apply_batch(Db1, Actions),
% First lets see that we can get the correct
% suffix/prefix starting at every update sequence
lists:foreach(fun(Seq) ->
- {ok, Suffix} = Engine:fold_changes(St2, Seq, fun fold_fun/2, [], []),
+ {ok, Suffix} =
+ couch_db_engine:fold_changes(Db2, Seq, fun fold_fun/2, [], []),
?assertEqual(lists:nthtail(Seq, DocSeqs), lists:reverse(Suffix)),
- {ok, Prefix} = Engine:fold_changes(St2, Seq, fun fold_fun/2, [], [
- {dir, rev}
- ]),
+ {ok, Prefix} = couch_db_engine:fold_changes(
+ Db2, Seq, fun fold_fun/2, [], [{dir, rev}]),
?assertEqual(lists:sublist(DocSeqs, Seq + 1), Prefix)
end, lists:seq(0, ?NUM_DOCS)),
- ok = do_mutation_ordering(Engine, St2, ?NUM_DOCS + 1, DocSeqs, []).
+ ok = do_mutation_ordering(Db2, ?NUM_DOCS + 1, DocSeqs, []).
-do_mutation_ordering(Engine, St, _Seq, [], FinalDocSeqs) ->
- {ok, RevOrder} = Engine:fold_changes(St, 0, fun fold_fun/2, [], []),
+do_mutation_ordering(Db, _Seq, [], FinalDocSeqs) ->
+ {ok, RevOrder} = couch_db_engine:fold_changes(Db, 0, fun fold_fun/2, [], []),
?assertEqual(FinalDocSeqs, lists:reverse(RevOrder)),
ok;
-do_mutation_ordering(Engine, St, Seq, [{DocId, _OldSeq} | Rest], DocSeqAcc) ->
- Actions = [{update, {DocId, []}}],
- {ok, NewSt} = test_engine_util:apply_actions(Engine, St, Actions),
+do_mutation_ordering(Db, Seq, [{DocId, _OldSeq} | Rest], DocSeqAcc) ->
+ Actions = [{update, {DocId, {[]}}}],
+ {ok, NewDb} = test_engine_util:apply_actions(Db, Actions),
NewAcc = DocSeqAcc ++ [{DocId, Seq}],
Expected = Rest ++ NewAcc,
- {ok, RevOrder} = Engine:fold_changes(NewSt, 0, fun fold_fun/2, [], []),
+ {ok, RevOrder} =
+ couch_db_engine:fold_changes(NewDb, 0, fun fold_fun/2, [], []),
?assertEqual(Expected, lists:reverse(RevOrder)),
- do_mutation_ordering(Engine, NewSt, Seq + 1, Rest, NewAcc).
+ do_mutation_ordering(NewDb, Seq + 1, Rest, NewAcc).
shuffle(List) ->