You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ko...@apache.org on 2019/07/29 01:23:45 UTC
[couchdb] 01/05: Extend timeouts for all reshard API tests
This is an automated email from the ASF dual-hosted git repository.
kocolosk pushed a commit to branch fix-eunit-timeouts
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 3229a1ed23e3291366e3c3bfe692617215d14657
Author: Adam Kocoloski <ko...@apache.org>
AuthorDate: Sun Jul 28 09:42:14 2019 -0400
Extend timeouts for all reshard API tests
We're observing timeouts on various tests in this suite so let's keep
it consistent and increase timeouts across the board.
---
src/mem3/test/mem3_reshard_api_test.erl | 117 ++++++++++++++++----------------
1 file changed, 59 insertions(+), 58 deletions(-)
diff --git a/src/mem3/test/mem3_reshard_api_test.erl b/src/mem3/test/mem3_reshard_api_test.erl
index 982fed1..2c941fd 100644
--- a/src/mem3/test/mem3_reshard_api_test.erl
+++ b/src/mem3/test/mem3_reshard_api_test.erl
@@ -27,6 +27,7 @@
-define(STATE, "_reshard/state").
-define(ID, <<"id">>).
-define(OK, <<"ok">>).
+-define(TIMEOUT, 60). % seconds
setup() ->
@@ -110,7 +111,7 @@ mem3_reshard_api_test_() ->
basics({Top, _}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
% GET /_reshard
?assertMatch({200, #{
<<"state">> := <<"running">>,
@@ -137,11 +138,11 @@ basics({Top, _}) ->
?assertMatch({404, _}, req(get, Top ++ ?RESHARD ++ "/invalidpath")),
?assertMatch({405, _}, req(put, Top ++ ?RESHARD, #{dont => thinkso})),
?assertMatch({405, _}, req(post, Top ++ ?RESHARD, #{nope => nope}))
- end).
+ end)}.
create_job_basic({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
% POST /_reshard/jobs
{C1, R1} = req(post, Top ++ ?JOBS, #{type => split, db => Db1}),
?assertEqual(201, C1),
@@ -192,11 +193,11 @@ create_job_basic({Top, {Db1, _, _}}) ->
% DELETE /_reshard/jobs/$jobid should be a 404 as well
?assertMatch({404, #{}}, req(delete, Top ++ ?JOBS ++ ?b2l(Id)))
- end).
+ end)}.
create_two_jobs({Top, {Db1, Db2, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
Jobs = Top ++ ?JOBS,
?assertMatch({201, [#{?OK := true}]},
@@ -218,20 +219,20 @@ create_two_jobs({Top, {Db1, Db2, _}}) ->
?assertMatch({200, #{<<"total">> := 1}}, req(get, Top ++ ?RESHARD)),
{200, #{?OK := true}} = req(delete, Jobs ++ ?b2l(Id2)),
?assertMatch({200, #{<<"total">> := 0}}, req(get, Top ++ ?RESHARD))
- end).
+ end)}.
create_multiple_jobs_from_one_post({Top, {_, _, Db3}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
Jobs = Top ++ ?JOBS,
{C1, R1} = req(post, Jobs, #{type => split, db => Db3}),
?assertMatch({201, [#{?OK := true}, #{?OK := true}]}, {C1, R1}),
?assertMatch({200, #{<<"total">> := 2}}, req(get, Top ++ ?RESHARD))
- end).
+ end)}.
start_stop_cluster_basic({Top, _}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
Url = Top ++ ?STATE,
?assertMatch({200, #{
@@ -261,11 +262,11 @@ start_stop_cluster_basic({Top, _}) ->
}}, req(get, Top ++ ?RESHARD)),
?assertMatch({200, _}, req(put, Url, #{state => running})),
?assertMatch({200, #{<<"state">> := <<"running">>}}, req(get, Url))
- end).
+ end)}.
test_disabled({Top, _}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
application:set_env(mem3, reshard_disabled, true),
?assertMatch({501, _}, req(get, Top ++ ?RESHARD)),
?assertMatch({501, _}, req(put, Top ++ ?STATE, #{state => running})),
@@ -273,11 +274,11 @@ test_disabled({Top, _}) ->
application:unset_env(mem3, reshard_disabled),
?assertMatch({200, _}, req(get, Top ++ ?RESHARD)),
?assertMatch({200, _}, req(put, Top ++ ?STATE, #{state => running}))
- end).
+ end)}.
start_stop_cluster_with_a_job({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
Url = Top ++ ?STATE,
?assertMatch({200, _}, req(put, Url, #{state => stopped})),
@@ -316,11 +317,11 @@ start_stop_cluster_with_a_job({Top, {Db1, _, _}}) ->
?assertMatch({200, _}, req(put, Url, #{state => running})),
?assertMatch({200, #{?ID := Id2, <<"job_state">> := JSt}}
when JSt =/= <<"stopped">>, req(get, Top ++ ?JOBS ++ ?b2l(Id2)))
- end).
+ end)}.
individual_job_start_stop({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
intercept_state(topoff1),
Body = #{type => split, db => Db1},
@@ -352,11 +353,11 @@ individual_job_start_stop({Top, {Db1, _, _}}) ->
% Let it continue running and it should complete eventually
JobPid2 ! continue,
wait_state(StUrl, <<"completed">>)
- end).
+ end)}.
individual_job_stop_when_cluster_stopped({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
intercept_state(topoff1),
Body = #{type => split, db => Db1},
@@ -397,11 +398,11 @@ individual_job_stop_when_cluster_stopped({Top, {Db1, _, _}}) ->
% Let it continue running and it should complete eventually
JobPid2 ! continue,
wait_state(StUrl, <<"completed">>)
- end).
+ end)}.
create_job_with_invalid_arguments({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
Jobs = Top ++ ?JOBS,
% Nothing in the body
@@ -434,11 +435,11 @@ create_job_with_invalid_arguments({Top, {Db1, _, _}}) ->
% Can't have both db and shard
?assertMatch({400, _}, req(post, Jobs, #{type => split, db => Db1,
shard => <<"blah">>}))
- end).
+ end)}.
create_job_with_db({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
Jobs = Top ++ ?JOBS,
Body1 = #{type => split, db => Db1},
@@ -465,11 +466,11 @@ create_job_with_db({Top, {Db1, _, _}}) ->
[16#80000000, 16#bfffffff],
[16#c0000000, 16#ffffffff]
], [mem3:range(S) || S <- lists:sort(mem3:shards(Db1))])
- end).
+ end)}.
create_job_with_shard_name({Top, {_, _, Db3}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
Jobs = Top ++ ?JOBS,
[S1, S2] = [mem3:name(S) || S <- lists:sort(mem3:shards(Db3))],
@@ -490,11 +491,11 @@ create_job_with_shard_name({Top, {_, _, Db3}}) ->
[16#80000000, 16#bfffffff],
[16#c0000000, 16#ffffffff]
], [mem3:range(S) || S <- lists:sort(mem3:shards(Db3))])
- end).
+ end)}.
completed_job_handling({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
Jobs = Top ++ ?JOBS,
% Run job to completion
@@ -542,105 +543,105 @@ completed_job_handling({Top, {Db1, _, _}}) ->
?assertMatch({200, #{<<"state">> := <<"completed">>}}, req(get, StUrl)),
?assertMatch({200, #{?OK := true}}, req(delete, JobUrl))
- end).
+ end)}.
handle_db_deletion_in_topoff1({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = delete_source_in_state(Top, Db1, topoff1),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"failed">>)
- end).
+ end)}.
handle_db_deletion_in_initial_copy({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = delete_source_in_state(Top, Db1, initial_copy),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"failed">>)
- end).
+ end)}.
handle_db_deletion_in_copy_local_docs({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = delete_source_in_state(Top, Db1, copy_local_docs),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"failed">>)
- end).
+ end)}.
handle_db_deletion_in_build_indices({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = delete_source_in_state(Top, Db1, build_indices),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"failed">>)
- end).
+ end)}.
handle_db_deletion_in_update_shard_map({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = delete_source_in_state(Top, Db1, update_shardmap),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"failed">>)
- end).
+ end)}.
handle_db_deletion_in_wait_source_close({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = delete_source_in_state(Top, Db1, wait_source_close),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"failed">>)
- end).
+ end)}.
recover_in_topoff1({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = recover_in_state(Top, Db1, topoff1),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"completed">>)
- end).
+ end)}.
recover_in_initial_copy({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = recover_in_state(Top, Db1, initial_copy),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"completed">>)
- end).
+ end)}.
recover_in_copy_local_docs({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = recover_in_state(Top, Db1, copy_local_docs),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"completed">>)
- end).
+ end)}.
recover_in_build_indices({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = recover_in_state(Top, Db1, build_indices),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"completed">>)
- end).
+ end)}.
recover_in_update_shard_map({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = recover_in_state(Top, Db1, update_shardmap),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"completed">>)
- end).
+ end)}.
recover_in_wait_source_close({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = recover_in_state(Top, Db1, wait_source_close),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"completed">>)
- end).
+ end)}.
recover_in_topoff3({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = recover_in_state(Top, Db1, topoff3),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"completed">>)
- end).
+ end)}.
recover_in_source_delete({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
JobId = recover_in_state(Top, Db1, source_delete),
wait_state(Top ++ ?JOBS ++ ?b2l(JobId) ++ "/state", <<"completed">>)
- end).
+ end)}.
check_max_jobs({Top, {Db1, Db2, _}}) ->
@@ -682,7 +683,7 @@ check_max_jobs({Top, {Db1, Db2, _}}) ->
check_node_and_range_required_params({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
Jobs = Top ++ ?JOBS,
Node = atom_to_binary(node(), utf8),
@@ -704,18 +705,18 @@ check_node_and_range_required_params({Top, {Db1, _, _}}) ->
{C3, R3} = req(post, Jobs, Body),
?assertMatch({201, [#{?OK := true}]}, {C3, R3}),
wait_to_complete_then_cleanup(Top, R3)
- end).
+ end)}.
cleanup_completed_jobs({Top, {Db1, _, _}}) ->
- ?_test(begin
+ {timeout, ?TIMEOUT, ?_test(begin
Body = #{type => split, db => Db1},
{201, [#{?ID := Id}]} = req(post, Top ++ ?JOBS, Body),
JobUrl = Top ++ ?JOBS ++ ?b2l(Id),
wait_state(JobUrl ++ "/state", <<"completed">>),
delete_db(Top, Db1),
wait_for_http_code(JobUrl, 404)
- end).
+ end)}.
% Test help functions