summaryrefslogtreecommitdiff
path: root/src/couch_pse_tests/src/cpse_test_fold_purge_infos.erl
diff options
context:
space:
mode:
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.erl167
1 files changed, 0 insertions, 167 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
deleted file mode 100644
index 4826c5d9c..000000000
--- a/src/couch_pse_tests/src/cpse_test_fold_purge_infos.erl
+++ /dev/null
@@ -1,167 +0,0 @@
-% 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(cpse_test_fold_purge_infos).
--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, [], [])).
-
-
-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)),
- 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),
- {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, [], []),
- ?assertEqual(IdsRevs, lists:reverse(PurgedIdRevs)).
-
-
-cpse_start_seq(Db1) ->
- Actions1 = [
- {create, {docid(1), {[{<<"int">>, 1}]}}},
- {create, {docid(2), {[{<<"int">>, 2}]}}},
- {create, {docid(3), {[{<<"int">>, 3}]}}},
- {create, {docid(4), {[{<<"int">>, 4}]}}},
- {create, {docid(5), {[{<<"int">>, 5}]}}}
- ],
- Ids = [docid(1), docid(2), docid(3), docid(4), docid(5)],
- {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),
- {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, [], []),
- ?assertEqual(StartSeqIdRevs, lists:reverse(PurgedIdRevs)).
-
-
-cpse_id_rev_repeated(Db1) ->
- Actions1 = [
- {create, {<<"foo">>, {[{<<"vsn">>, 1}]}}},
- {conflict, {<<"foo">>, {[{<<"vsn">>, 2}]}}}
- ],
- {ok, Db2} = cpse_util:apply_actions(Db1, Actions1),
-
- [FDI1] = couch_db_engine:open_docs(Db2, [<<"foo">>]),
- PrevRev1 = cpse_util:prev_rev(FDI1),
- Rev1 = PrevRev1#rev_info.rev,
- Actions2 = [
- {purge, {<<"foo">>, Rev1}}
- ],
-
- {ok, Db3} = cpse_util:apply_actions(Db2, Actions2),
- {ok, PurgedIdRevs1} = couch_db_engine:fold_purge_infos(
- Db3, 0, fun fold_fun/2, [], []),
- ExpectedPurgedIdRevs1 = [
- {<<"foo">>, [Rev1]}
- ],
-
- ?assertEqual(ExpectedPurgedIdRevs1, lists:reverse(PurgedIdRevs1)),
- ?assertEqual(1, couch_db_engine:get_purge_seq(Db3)),
-
- % 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, [], []),
- ExpectedPurgedIdRevs2 = [
- {<<"foo">>, [Rev1]},
- {<<"foo">>, [Rev1]}
- ],
- ?assertEqual(ExpectedPurgedIdRevs2, lists:reverse(PurgedIdRevs2)),
- ?assertEqual(2, couch_db_engine:get_purge_seq(Db4)),
-
- [FDI2] = couch_db_engine:open_docs(Db4, [<<"foo">>]),
- PrevRev2 = cpse_util:prev_rev(FDI2),
- Rev2 = PrevRev2#rev_info.rev,
- Actions3 = [
- {purge, {<<"foo">>, Rev2}}
- ],
- {ok, Db5} = cpse_util:apply_actions(Db4, Actions3),
-
- {ok, PurgedIdRevs3} = couch_db_engine:fold_purge_infos(
- Db5, 0, fun fold_fun/2, [], []),
- ExpectedPurgedIdRevs3 = [
- {<<"foo">>, [Rev1]},
- {<<"foo">>, [Rev1]},
- {<<"foo">>, [Rev2]}
- ],
- ?assertEqual(ExpectedPurgedIdRevs3, lists:reverse(PurgedIdRevs3)),
- ?assertEqual(3, couch_db_engine:get_purge_seq(Db5)),
-
- % purge the same Id,Rev when the doc was completely purged
- {ok, Db6} = cpse_util:apply_actions(Db5, Actions3),
-
- {ok, PurgedIdRevs4} = couch_db_engine:fold_purge_infos(
- Db6, 0, fun fold_fun/2, [], []),
- ExpectedPurgedIdRevs4 = [
- {<<"foo">>, [Rev1]},
- {<<"foo">>, [Rev1]},
- {<<"foo">>, [Rev2]},
- {<<"foo">>, [Rev2]}
- ],
- ?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).