diff options
Diffstat (limited to 'src/fabric/test/eunit/fabric_db_info_tests.erl')
-rw-r--r-- | src/fabric/test/eunit/fabric_db_info_tests.erl | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/fabric/test/eunit/fabric_db_info_tests.erl b/src/fabric/test/eunit/fabric_db_info_tests.erl new file mode 100644 index 000000000..ccdafe3ae --- /dev/null +++ b/src/fabric/test/eunit/fabric_db_info_tests.erl @@ -0,0 +1,68 @@ +% 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(fabric_db_info_tests). + + +-include_lib("couch/include/couch_eunit.hrl"). +-include_lib("couch/include/couch_db.hrl"). +-include_lib("mem3/include/mem3.hrl"). + + +-define(TDEF(A), {atom_to_list(A), fun A/0}). + + +main_test_() -> + { + setup, + fun setup/0, + fun teardown/1, + [ + ?TDEF(t_update_seq_has_uuids) + ] + }. + + +setup() -> + test_util:start_couch([fabric]). + + +teardown(Ctx) -> + meck:unload(), + test_util:stop_couch(Ctx). + + +t_update_seq_has_uuids() -> + DbName = ?tempdb(), + ok = fabric:create_db(DbName, [{q, 1}, {n, 1}]), + + {ok, Info} = fabric:get_db_info(DbName), + UpdateSeq = couch_util:get_value(update_seq, Info), + UnpackedSeq = fabric_view_changes:decode_seq(UpdateSeq), + + ?assertMatch([{_, _, _}], UnpackedSeq), + [{Node, Range, Seq}] = UnpackedSeq, + ?assert(is_atom(Node)), + ?assertMatch([_, _], Range), + ?assertMatch({_, _, _}, Seq), + {SeqNum, SeqUuid, EpochNode} = Seq, + ?assert(is_integer(SeqNum)), + ?assert(is_binary(SeqUuid)), + ?assert(is_atom(EpochNode)), + + {ok, UuidMap} = fabric:db_uuids(DbName), + PrefixLen = fabric_util:get_uuid_prefix_len(), + Uuids = [binary:part(Uuid, {0, PrefixLen}) || Uuid <- maps:keys(UuidMap)], + [UuidFromShard] = Uuids, + ?assertEqual(UuidFromShard, SeqUuid), + + ok = fabric:delete_db(DbName, []). |