You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2021/09/09 15:28:08 UTC

[couchdb] 02/02: Separate bad_config_test into multiple tests

This is an automated email from the ASF dual-hosted git repository.

jaydoane pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 436886d9b1b4da8c68e6cb0dd452fbeb1c571f90
Author: Jay Doane <ja...@apache.org>
AuthorDate: Wed Sep 8 19:43:44 2021 -0700

    Separate bad_config_test into multiple 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*
---
 src/couch_views/src/couch_views_batch_impl.erl | 19 ++++++++++---------
 1 file 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 1bc6014..8588528 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() ->