diff options
Diffstat (limited to 'src/fabric/test/eunit/fabric_bench_test.erl')
-rw-r--r-- | src/fabric/test/eunit/fabric_bench_test.erl | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/fabric/test/eunit/fabric_bench_test.erl b/src/fabric/test/eunit/fabric_bench_test.erl new file mode 100644 index 000000000..95d0dc41c --- /dev/null +++ b/src/fabric/test/eunit/fabric_bench_test.erl @@ -0,0 +1,79 @@ +% 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_bench_test). + +-include_lib("couch/include/couch_eunit.hrl"). + +fabric_bench_test_() -> + { + setup, + fun setup/0, + fun teardown/1, + with([ + ?TDEF(t_default_doc_size, 15), + ?TDEF(t_small_doc_size, 15), + ?TDEF(t_large_doc_size, 15), + ?TDEF(t_old_db_deletion_works), + ?TDEF(t_newer_db_deletion_doesnt_work), + ?TDEF(t_db_deletion_ignores_other_dbs) + ]) + }. + +setup() -> + test_util:start_couch([fabric]). + +teardown(Ctx) -> + test_util:stop_couch(Ctx). + +t_default_doc_size(_Ctx) -> + Opts = #{docs => 100, individual_docs => 5}, + % The goal is to just have it not crash + ?assertEqual(ok, fabric_bench:go(Opts)). + +t_small_doc_size(_Ctx) -> + Opts = #{q => 4, docs => 100, doc_size => small, individual_docs => 5}, + % The goal is to just have it not crash + ?assertEqual(ok, fabric_bench:go(Opts)). + +t_large_doc_size(_Ctx) -> + Opts = #{q => 1, docs => 5, doc_size => large, individual_docs => 1}, + % The goal is to just have it not crash + ?assertEqual(ok, fabric_bench:go(Opts)). + +t_old_db_deletion_works(_Ctx) -> + NineHoursAgoUsec = os:system_time(microsecond) - (9 * 60 * 60 * 1000000), + Suffix = integer_to_binary(NineHoursAgoUsec), + Db = <<"fabricbenchdb-", Suffix/binary>>, + ok = fabric:create_db(Db, [{q, 1}, {n, 1}]), + fabric_bench:delete_old_dbs(), + ?assertError(database_does_not_exist, fabric:get_doc_count(Db)). + +t_newer_db_deletion_doesnt_work(_Ctx) -> + SevenHoursAgoUsec = os:system_time(microsecond) - (7 * 60 * 60 * 1000000), + Suffix = integer_to_binary(SevenHoursAgoUsec), + Db = <<"fabricbenchdb-", Suffix/binary>>, + ok = fabric:create_db(Db, [{q, 1}, {n, 1}]), + fabric_bench:delete_old_dbs(), + ?assertEqual({ok, 0}, fabric:get_doc_count(Db)). + +t_db_deletion_ignores_other_dbs(_Ctx) -> + Db1 = <<"fabricbenchdb-">>, + Db2 = <<"fabricbenchdb">>, + Db3 = <<"fabricbenchdb-xyz">>, + ok = fabric:create_db(Db1, [{q, 1}, {n, 1}]), + ok = fabric:create_db(Db2, [{q, 1}, {n, 1}]), + ok = fabric:create_db(Db3, [{q, 1}, {n, 1}]), + fabric_bench:delete_old_dbs(), + ?assertEqual({ok, 0}, fabric:get_doc_count(Db1)), + ?assertEqual({ok, 0}, fabric:get_doc_count(Db2)), + ?assertEqual({ok, 0}, fabric:get_doc_count(Db3)). |