summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Doane <jaydoane@apache.org>2021-09-08 19:43:44 -0700
committerJay Doane <jaydoane@apache.org>2021-09-08 22:32:48 -0700
commit1e1b0cb67bd1c25d17889b71e4b2b4ea408e6755 (patch)
tree39de0cb9b01e054b58db40f3e9d66a4ca77a3b61
parent64323256a34f77f88180b050b0f21a6f2bf86d75 (diff)
downloadcouchdb-improve-views-tests.tar.gz
Separate bad_config_test into multiple testsimprove-views-tests
Instead of running as a single test, separate each corresponding field and error into its own test, with its own timeout. A typical run now looks like: make eunit apps=couch_views suites=couch_views_batch_impl tests=bad_config_test_ ======================== EUnit ======================== couch_views_batch_impl:186: bad_config_test_ (batch_initial_size)...[0.104 s] ok couch_views_batch_impl:186: bad_config_test_ (batch_search_increment)...[0.077 s] ok couch_views_batch_impl:186: bad_config_test_ (batch_sense_increment)...[0.074 s] ok couch_views_batch_impl:186: bad_config_test_ (batch_max_tx_size_bytes)...[0.077 s] ok couch_views_batch_impl:186: bad_config_test_ (batch_max_tx_time_msec)...[0.076 s] ok couch_views_batch_impl:186: bad_config_test_ (batch_threshold_penalty)...[0.074 s] ok ======================================================= All 6 tests passed. Previously, these tests were timing out when CI became resource constrained. Examples of multiple runs show how prone to timing out after 5 seconds the old monolithic bad_config_test was: couch_views_batch_impl: good_config_test...[0.217 s] ok couch_views_batch_impl: bad_config_test...[1.347 s] ok couch_views_batch_impl: good_config_test...[0.393 s] ok couch_views_batch_impl: bad_config_test...[2.332 s] ok couch_views_batch_impl: good_config_test...[0.358 s] ok couch_views_batch_impl: bad_config_test...[2.211 s] ok couch_views_batch_impl: good_config_test...[0.942 s] ok couch_views_batch_impl: bad_config_test...*timed out* couch_views_batch_impl: good_config_test...[1.179 s] ok couch_views_batch_impl: bad_config_test...*timed out* couch_views_batch_impl: good_config_test...[0.497 s] ok couch_views_batch_impl: bad_config_test...*timed out*
-rw-r--r--src/couch_views/src/couch_views_batch_impl.erl19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/couch_views/src/couch_views_batch_impl.erl b/src/couch_views/src/couch_views_batch_impl.erl
index 1bc6014f3..858852843 100644
--- a/src/couch_views/src/couch_views_batch_impl.erl
+++ b/src/couch_views/src/couch_views_batch_impl.erl
@@ -150,8 +150,8 @@ good_config_test() ->
)
end).
-bad_config_test() ->
- Fields = [
+bad_config_test_() ->
+ FieldErrors = [
{batch_initial_size, invalid_non_neg_integer},
{batch_search_increment, invalid_non_neg_integer},
{batch_sense_increment, invalid_non_neg_integer},
@@ -159,16 +159,17 @@ bad_config_test() ->
{batch_max_tx_time_msec, invalid_non_neg_integer},
{batch_threshold_penalty, invalid_float}
],
- lists:foreach(
+ lists:map(
fun({Field, Error}) ->
- with_bad_config(atom_to_list(Field), fun() ->
- ?assertError(
- {Error, {couch_views, Field, _}},
+ FieldName = atom_to_list(Field),
+ {FieldName, ?_assertError(
+ {Error, {couch_views, Field, _}},
+ with_bad_config(FieldName, fun() ->
start(#mrst{}, undefined)
- )
- end)
+ end))
+ }
end,
- Fields
+ FieldErrors
).
float_range_test() ->