diff options
Diffstat (limited to 'src/couch_pse_tests/src/cpse_test_fold_purge_infos.erl')
-rw-r--r-- | src/couch_pse_tests/src/cpse_test_fold_purge_infos.erl | 86 |
1 files changed, 49 insertions, 37 deletions
diff --git a/src/couch_pse_tests/src/cpse_test_fold_purge_infos.erl b/src/couch_pse_tests/src/cpse_test_fold_purge_infos.erl index 4826c5d9c..6225cbdb0 100644 --- a/src/couch_pse_tests/src/cpse_test_fold_purge_infos.erl +++ b/src/couch_pse_tests/src/cpse_test_fold_purge_infos.erl @@ -14,54 +14,60 @@ -compile(export_all). -compile(nowarn_export_all). - -include_lib("eunit/include/eunit.hrl"). -include_lib("couch/include/couch_db.hrl"). - -define(NUM_DOCS, 100). - setup_each() -> {ok, Db} = cpse_util:create_db(), Db. - teardown_each(Db) -> ok = couch_server:delete(couch_db:name(Db), []). - cpse_empty_purged_docs(Db) -> - ?assertEqual({ok, []}, couch_db_engine:fold_purge_infos( - Db, 0, fun fold_fun/2, [], [])). - + ?assertEqual( + {ok, []}, + couch_db_engine:fold_purge_infos( + Db, 0, fun fold_fun/2, [], [] + ) + ). cpse_all_purged_docs(Db1) -> - {RActions, RIds} = lists:foldl(fun(Id, {CActions, CIds}) -> - Id1 = docid(Id), - Action = {create, {Id1, {[{<<"int">>, Id}]}}}, - {[Action| CActions], [Id1| CIds]} - end, {[], []}, lists:seq(1, ?NUM_DOCS)), + {RActions, RIds} = lists:foldl( + fun(Id, {CActions, CIds}) -> + Id1 = docid(Id), + Action = {create, {Id1, {[{<<"int">>, Id}]}}}, + {[Action | CActions], [Id1 | CIds]} + end, + {[], []}, + lists:seq(1, ?NUM_DOCS) + ), Actions = lists:reverse(RActions), Ids = lists:reverse(RIds), {ok, Db2} = cpse_util:apply_batch(Db1, Actions), FDIs = couch_db_engine:open_docs(Db2, Ids), - {RevActions2, RevIdRevs} = lists:foldl(fun(FDI, {CActions, CIdRevs}) -> - Id = FDI#full_doc_info.id, - PrevRev = cpse_util:prev_rev(FDI), - Rev = PrevRev#rev_info.rev, - Action = {purge, {Id, Rev}}, - {[Action| CActions], [{Id, [Rev]}| CIdRevs]} - end, {[], []}, FDIs), + {RevActions2, RevIdRevs} = lists:foldl( + fun(FDI, {CActions, CIdRevs}) -> + Id = FDI#full_doc_info.id, + PrevRev = cpse_util:prev_rev(FDI), + Rev = PrevRev#rev_info.rev, + Action = {purge, {Id, Rev}}, + {[Action | CActions], [{Id, [Rev]} | CIdRevs]} + end, + {[], []}, + FDIs + ), {Actions2, IdsRevs} = {lists:reverse(RevActions2), lists:reverse(RevIdRevs)}, {ok, Db3} = cpse_util:apply_batch(Db2, Actions2), {ok, PurgedIdRevs} = couch_db_engine:fold_purge_infos( - Db3, 0, fun fold_fun/2, [], []), + Db3, 0, fun fold_fun/2, [], [] + ), ?assertEqual(IdsRevs, lists:reverse(PurgedIdRevs)). - cpse_start_seq(Db1) -> Actions1 = [ {create, {docid(1), {[{<<"int">>, 1}]}}}, @@ -74,22 +80,26 @@ cpse_start_seq(Db1) -> {ok, Db2} = cpse_util:apply_actions(Db1, Actions1), FDIs = couch_db_engine:open_docs(Db2, Ids), - {RActions2, RIdRevs} = lists:foldl(fun(FDI, {CActions, CIdRevs}) -> - Id = FDI#full_doc_info.id, - PrevRev = cpse_util:prev_rev(FDI), - Rev = PrevRev#rev_info.rev, - Action = {purge, {Id, Rev}}, - {[Action| CActions], [{Id, [Rev]}| CIdRevs]} - end, {[], []}, FDIs), + {RActions2, RIdRevs} = lists:foldl( + fun(FDI, {CActions, CIdRevs}) -> + Id = FDI#full_doc_info.id, + PrevRev = cpse_util:prev_rev(FDI), + Rev = PrevRev#rev_info.rev, + Action = {purge, {Id, Rev}}, + {[Action | CActions], [{Id, [Rev]} | CIdRevs]} + end, + {[], []}, + FDIs + ), {ok, Db3} = cpse_util:apply_actions(Db2, lists:reverse(RActions2)), StartSeq = 3, StartSeqIdRevs = lists:nthtail(StartSeq, lists:reverse(RIdRevs)), {ok, PurgedIdRevs} = couch_db_engine:fold_purge_infos( - Db3, StartSeq, fun fold_fun/2, [], []), + Db3, StartSeq, fun fold_fun/2, [], [] + ), ?assertEqual(StartSeqIdRevs, lists:reverse(PurgedIdRevs)). - cpse_id_rev_repeated(Db1) -> Actions1 = [ {create, {<<"foo">>, {[{<<"vsn">>, 1}]}}}, @@ -106,7 +116,8 @@ cpse_id_rev_repeated(Db1) -> {ok, Db3} = cpse_util:apply_actions(Db2, Actions2), {ok, PurgedIdRevs1} = couch_db_engine:fold_purge_infos( - Db3, 0, fun fold_fun/2, [], []), + Db3, 0, fun fold_fun/2, [], [] + ), ExpectedPurgedIdRevs1 = [ {<<"foo">>, [Rev1]} ], @@ -117,7 +128,8 @@ cpse_id_rev_repeated(Db1) -> % purge the same Id,Rev when the doc still exists {ok, Db4} = cpse_util:apply_actions(Db3, Actions2), {ok, PurgedIdRevs2} = couch_db_engine:fold_purge_infos( - Db4, 0, fun fold_fun/2, [], []), + Db4, 0, fun fold_fun/2, [], [] + ), ExpectedPurgedIdRevs2 = [ {<<"foo">>, [Rev1]}, {<<"foo">>, [Rev1]} @@ -134,7 +146,8 @@ cpse_id_rev_repeated(Db1) -> {ok, Db5} = cpse_util:apply_actions(Db4, Actions3), {ok, PurgedIdRevs3} = couch_db_engine:fold_purge_infos( - Db5, 0, fun fold_fun/2, [], []), + Db5, 0, fun fold_fun/2, [], [] + ), ExpectedPurgedIdRevs3 = [ {<<"foo">>, [Rev1]}, {<<"foo">>, [Rev1]}, @@ -147,7 +160,8 @@ cpse_id_rev_repeated(Db1) -> {ok, Db6} = cpse_util:apply_actions(Db5, Actions3), {ok, PurgedIdRevs4} = couch_db_engine:fold_purge_infos( - Db6, 0, fun fold_fun/2, [], []), + Db6, 0, fun fold_fun/2, [], [] + ), ExpectedPurgedIdRevs4 = [ {<<"foo">>, [Rev1]}, {<<"foo">>, [Rev1]}, @@ -157,11 +171,9 @@ cpse_id_rev_repeated(Db1) -> ?assertEqual(ExpectedPurgedIdRevs4, lists:reverse(PurgedIdRevs4)), ?assertEqual(4, couch_db_engine:get_purge_seq(Db6)). - fold_fun({_PSeq, _UUID, Id, Revs}, Acc) -> {ok, [{Id, Revs} | Acc]}. - docid(I) -> Str = io_lib:format("~4..0b", [I]), iolist_to_binary(Str). |