diff options
Diffstat (limited to 'src/couch_replicator/test/eunit/couch_replicator_large_atts_tests.erl')
-rw-r--r-- | src/couch_replicator/test/eunit/couch_replicator_large_atts_tests.erl | 123 |
1 files changed, 47 insertions, 76 deletions
diff --git a/src/couch_replicator/test/eunit/couch_replicator_large_atts_tests.erl b/src/couch_replicator/test/eunit/couch_replicator_large_atts_tests.erl index 27c89a0cd..fcbdf229f 100644 --- a/src/couch_replicator/test/eunit/couch_replicator_large_atts_tests.erl +++ b/src/couch_replicator/test/eunit/couch_replicator_large_atts_tests.erl @@ -14,12 +14,8 @@ -include_lib("couch/include/couch_eunit.hrl"). -include_lib("couch/include/couch_db.hrl"). +-include_lib("fabric/test/fabric2_test.hrl"). --import(couch_replicator_test_helper, [ - db_url/1, - replicate/2, - compare_dbs/2 -]). -define(ATT_SIZE_1, 2 * 1024 * 1024). -define(ATT_SIZE_2, round(6.6 * 1024 * 1024)). @@ -27,90 +23,65 @@ -define(TIMEOUT_EUNIT, 120). -setup() -> - DbName = ?tempdb(), - {ok, Db} = couch_db:create(DbName, [?ADMIN_CTX]), - ok = couch_db:close(Db), - DbName. - -setup(remote) -> - {remote, setup()}; -setup({A, B}) -> - Ctx = test_util:start_couch([couch_replicator]), - config:set("attachments", "compressible_types", "text/*", false), - Source = setup(A), - Target = setup(B), - {Ctx, {Source, Target}}. - -teardown({remote, DbName}) -> - teardown(DbName); -teardown(DbName) -> - ok = couch_server:delete(DbName, [?ADMIN_CTX]), - ok. - -teardown(_, {Ctx, {Source, Target}}) -> - teardown(Source), - teardown(Target), - - ok = application:stop(couch_replicator), - ok = test_util:stop_couch(Ctx). - large_atts_test_() -> - Pairs = [{remote, remote}], { - "Replicate docs with large attachments", + "Large attachment replication test", { - foreachx, - fun setup/1, fun teardown/2, - [{Pair, fun should_populate_replicate_compact/2} - || Pair <- Pairs] + setup, + fun couch_replicator_test_helper:start_couch/0, + fun couch_replicator_test_helper:stop_couch/1, + { + foreach, + fun setup/0, + fun teardown/1, + [ + ?TDEF_FE(should_replicate_attachments, 120) + ] + } } }. -should_populate_replicate_compact({From, To}, {_Ctx, {Source, Target}}) -> - {lists:flatten(io_lib:format("~p -> ~p", [From, To])), - {inorder, [should_populate_source(Source), - should_replicate(Source, Target), - should_compare_databases(Source, Target)]}}. +setup() -> + AttCfg = config:get("attachments", "compressible_types"), + config:set("attachments", "compressible_types", "text/*", false), + Source = couch_replicator_test_helper:create_db(), + ok = populate_db(Source, ?DOCS_COUNT), + Target = couch_replicator_test_helper:create_db(), + {AttCfg, Source, Target}. + -should_populate_source({remote, Source}) -> - should_populate_source(Source); -should_populate_source(Source) -> - {timeout, ?TIMEOUT_EUNIT, ?_test(populate_db(Source, ?DOCS_COUNT))}. +teardown({AttCfg, Source, Target}) -> + couch_replicator_test_helper:delete_db(Source), + couch_replicator_test_helper:delete_db(Target), + case AttCfg of + undefined -> + config:delete("attachments", "compressible_types", false); + _ -> + config:set("attachments", "compressible_types", AttCfg) + end. -should_replicate({remote, Source}, Target) -> - should_replicate(db_url(Source), Target); -should_replicate(Source, {remote, Target}) -> - should_replicate(Source, db_url(Target)); -should_replicate(Source, Target) -> - {timeout, ?TIMEOUT_EUNIT, ?_test(replicate(Source, Target))}. -should_compare_databases({remote, Source}, Target) -> - should_compare_databases(Source, Target); -should_compare_databases(Source, {remote, Target}) -> - should_compare_databases(Source, Target); -should_compare_databases(Source, Target) -> - {timeout, ?TIMEOUT_EUNIT, ?_test(compare_dbs(Source, Target))}. +should_replicate_attachments({_AttCfg, Source, Target}) -> + ?assertMatch({ok, _}, + couch_replicator_test_helper:replicate(Source, Target)), + ?assertEqual(ok, couch_replicator_test_helper:compare_dbs(Source, Target)). populate_db(DbName, DocCount) -> - {ok, Db} = couch_db:open_int(DbName, []), - Docs = lists:foldl( - fun(DocIdCounter, Acc) -> - Doc = #doc{ - id = iolist_to_binary(["doc", integer_to_list(DocIdCounter)]), - body = {[]}, - atts = [ - att(<<"att1">>, ?ATT_SIZE_1, <<"text/plain">>), - att(<<"att2">>, ?ATT_SIZE_2, <<"app/binary">>) - ] - }, - [Doc | Acc] - end, - [], lists:seq(1, DocCount)), - {ok, _} = couch_db:update_docs(Db, Docs, []), - couch_db:close(Db). + Docs = lists:foldl(fun(DocIdCounter, Acc) -> + Doc = #doc{ + id = iolist_to_binary(["doc", integer_to_list(DocIdCounter)]), + body = {[]}, + atts = [ + att(<<"att1">>, ?ATT_SIZE_1, <<"text/plain">>), + att(<<"att2">>, ?ATT_SIZE_2, <<"app/binary">>) + ] + }, + [Doc | Acc] + end, [], lists:seq(1, DocCount)), + couch_replicator_test_helper:create_docs(DbName, Docs). + att(Name, Size, Type) -> couch_att:new([ |