You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2020/02/15 18:44:08 UTC
[couchdb] 03/05: Test coverage: get_full_doc_info
This is an automated email from the ASF dual-hosted git repository.
davisp pushed a commit to branch prototype/fdb-layer-test-coverage
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit e43c72a2b2a629beb75de8ec4e0e3db785912c8d
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Fri Feb 14 11:17:52 2020 -0600
Test coverage: get_full_doc_info
---
src/fabric/test/fabric2_db_misc_tests.erl | 87 +++++++++++++++++++++++++++++++
1 file changed, 87 insertions(+)
diff --git a/src/fabric/test/fabric2_db_misc_tests.erl b/src/fabric/test/fabric2_db_misc_tests.erl
index 12fc3e5..f1ee8a8 100644
--- a/src/fabric/test/fabric2_db_misc_tests.erl
+++ b/src/fabric/test/fabric2_db_misc_tests.erl
@@ -33,6 +33,11 @@ misc_test_() ->
?TDEF(set_revs_limit),
?TDEF(set_security),
?TDEF(is_system_db),
+ ?TDEF(get_doc_info),
+ ?TDEF(get_doc_info_not_found),
+ ?TDEF(get_full_doc_info),
+ ?TDEF(get_full_doc_info_not_found),
+ ?TDEF(get_full_doc_infos),
?TDEF(ensure_full_commit),
?TDEF(metadata_bump),
?TDEF(db_version_bump)
@@ -109,6 +114,88 @@ is_system_db({DbName, Db, _}) ->
?assertEqual(false, fabric2_db:is_system_db_name(<<"foo/bar">>)).
+get_doc_info({_, Db, _}) ->
+ DocId = couch_uuids:random(),
+ InsertDoc = #doc{
+ id = DocId,
+ body = {[{<<"foo">>, true}]}
+ },
+ {ok, {Pos, Rev}} = fabric2_db:update_doc(Db, InsertDoc, []),
+
+ DI = fabric2_db:get_doc_info(Db, DocId),
+ ?assert(is_record(DI, doc_info)),
+ #doc_info{
+ id = DIDocId,
+ high_seq = HighSeq,
+ revs = Revs
+ } = DI,
+
+ ?assertEqual(DocId, DIDocId),
+ ?assert(is_binary(HighSeq)),
+ ?assertMatch([#rev_info{}], Revs),
+
+ [#rev_info{
+ rev = DIRev,
+ seq = Seq,
+ deleted = Deleted,
+ body_sp = BodySp
+ }] = Revs,
+
+ ?assertEqual({Pos, Rev}, DIRev),
+ ?assert(is_binary(Seq)),
+ ?assert(not Deleted),
+ ?assertMatch(undefined, BodySp).
+
+
+get_doc_info_not_found({_, Db, _}) ->
+ DocId = couch_uuids:random(),
+ ?assertEqual(not_found, fabric2_db:get_doc_info(Db, DocId)).
+
+
+get_full_doc_info({_, Db, _}) ->
+ DocId = couch_uuids:random(),
+ InsertDoc = #doc{
+ id = DocId,
+ body = {[{<<"foo">>, true}]}
+ },
+ {ok, {Pos, Rev}} = fabric2_db:update_doc(Db, InsertDoc, []),
+ FDI = fabric2_db:get_full_doc_info(Db, DocId),
+
+ ?assert(is_record(FDI, full_doc_info)),
+ #full_doc_info{
+ id = FDIDocId,
+ update_seq = UpdateSeq,
+ deleted = Deleted,
+ rev_tree = RevTree,
+ sizes = SizeInfo
+ } = FDI,
+
+ ?assertEqual(DocId, FDIDocId),
+ ?assert(is_binary(UpdateSeq)),
+ ?assert(not Deleted),
+ ?assertMatch([{Pos, {Rev, _, []}}], RevTree),
+ ?assertEqual(#size_info{}, SizeInfo).
+
+
+get_full_doc_info_not_found({_, Db, _}) ->
+ DocId = couch_uuids:random(),
+ ?assertEqual(not_found, fabric2_db:get_full_doc_info(Db, DocId)).
+
+
+get_full_doc_infos({_, Db, _}) ->
+ DocIds = lists:map(fun(_) ->
+ DocId = couch_uuids:random(),
+ Doc = #doc{id = DocId},
+ {ok, _} = fabric2_db:update_doc(Db, Doc, []),
+ DocId
+ end, lists:seq(1, 5)),
+
+ FDIs = fabric2_db:get_full_doc_infos(Db, DocIds),
+ lists:zipwith(fun(DocId, FDI) ->
+ ?assertEqual(DocId, FDI#full_doc_info.id)
+ end, DocIds, FDIs).
+
+
ensure_full_commit({_, Db, _}) ->
?assertEqual({ok, 0}, fabric2_db:ensure_full_commit(Db)),
?assertEqual({ok, 0}, fabric2_db:ensure_full_commit(Db, 5)).