diff mbox series

[ovs-dev] ci: Update jobs to use numbers instead of test flags

Message ID 20221102143513.274198-1-amusil@redhat.com
State Accepted
Headers show
Series [ovs-dev] ci: Update jobs to use numbers instead of test flags | expand

Checks

Context Check Description
ovsrobot/apply-robot warning apply and check: warning
ovsrobot/github-robot-_Build_and_Test success github build: passed
ovsrobot/github-robot-_ovn-kubernetes success github build: passed

Commit Message

Ales Musil Nov. 2, 2022, 2:35 p.m. UTC
To prevent some jobs not running after CI scripts updates
use numbers instead of the test flags. This still allows us
to use parallelization, but without worrying about skipping
some tests by mistake.

For "test" suites use 3 parts, with 1500 tests in mind.
That should give as additional space for future tests.
Currently, there is ~1200 tests. For sanitizers use 5 parts
instead, as they are slower in general.

For "system-test" use 3 parts, with 300 tests in mind.
Currently, there is ~200 tests.

In the end this patch reduces the number of jobs by 8 to 20,
which is ok as there is a limit of 20 running in parallel [0].

[0] https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits
Signed-off-by: Ales Musil <amusil@redhat.com>
---
 .ci/linux-build.sh         |  9 ++------
 .github/workflows/test.yml | 44 ++++++++++++++++----------------------
 2 files changed, 20 insertions(+), 33 deletions(-)

Comments

0-day Robot Nov. 2, 2022, 2:39 p.m. UTC | #1
Bleep bloop.  Greetings Ales Musil, I am a robot and I have tried out your patch.
Thanks for your contribution.

I encountered some error that I wasn't expecting.  See the details below.


checkpatch:
WARNING: Line is 86 characters long (recommended limit is 79)
#46 FILE: .ci/linux-build.sh:54:
        if ! sudo make -j4 check-kernel TESTSUITEFLAGS="$TEST_RANGE" RECHECK=yes; then

WARNING: Line is 90 characters long (recommended limit is 79)
#104 FILE: .github/workflows/test.yml:42:
        - { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "-300" }

WARNING: Line is 93 characters long (recommended limit is 79)
#105 FILE: .github/workflows/test.yml:43:
        - { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "301-600" }

WARNING: Line is 93 characters long (recommended limit is 79)
#106 FILE: .github/workflows/test.yml:44:
        - { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "601-900" }

WARNING: Line is 94 characters long (recommended limit is 79)
#107 FILE: .github/workflows/test.yml:45:
        - { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "901-1200" }

WARNING: Line is 91 characters long (recommended limit is 79)
#108 FILE: .github/workflows/test.yml:46:
        - { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "1201-" }

WARNING: Line is 82 characters long (recommended limit is 79)
#109 FILE: .github/workflows/test.yml:47:
        - { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "-500" }

WARNING: Line is 86 characters long (recommended limit is 79)
#110 FILE: .github/workflows/test.yml:48:
        - { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "501-1000" }

WARNING: Line is 83 characters long (recommended limit is 79)
#111 FILE: .github/workflows/test.yml:49:
        - { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "1001-" }

WARNING: Line is 84 characters long (recommended limit is 79)
#112 FILE: .github/workflows/test.yml:50:
        - { compiler: clang, testsuite: test, libs: -ljemalloc, test_range: "-500" }

WARNING: Line is 88 characters long (recommended limit is 79)
#113 FILE: .github/workflows/test.yml:51:
        - { compiler: clang, testsuite: test, libs: -ljemalloc, test_range: "501-1000" }

WARNING: Line is 85 characters long (recommended limit is 79)
#114 FILE: .github/workflows/test.yml:52:
        - { compiler: clang, testsuite: test, libs: -ljemalloc, test_range: "1001-" }

Lines checked: 124, Warnings: 12, Errors: 0


Please check this out.  If you feel there has been an error, please email aconole@redhat.com

Thanks,
0-day Robot
Dumitru Ceara Nov. 2, 2022, 2:46 p.m. UTC | #2
On 11/2/22 15:35, Ales Musil wrote:
> To prevent some jobs not running after CI scripts updates
> use numbers instead of the test flags. This still allows us
> to use parallelization, but without worrying about skipping
> some tests by mistake.
> 
> For "test" suites use 3 parts, with 1500 tests in mind.
> That should give as additional space for future tests.
> Currently, there is ~1200 tests. For sanitizers use 5 parts
> instead, as they are slower in general.
> 
> For "system-test" use 3 parts, with 300 tests in mind.
> Currently, there is ~200 tests.
> 
> In the end this patch reduces the number of jobs by 8 to 20,
> which is ok as there is a limit of 20 running in parallel [0].
> 
> [0] https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits
> Signed-off-by: Ales Musil <amusil@redhat.com>
> ---

Thanks, Ales, for the patch!

It makes it harder to skip tests by accident in CI which is great.

But there's still the downside that maintainers need to pay a bit more
attention so that the last run "1001-" or "201-" doesn't take way longer
than the rest.

I'm OK with that but I wonder what Han, Mark and Numan think about this.

If people are OK with it I can apply and backport the patch (assuming
the CI is green [0]).

Regards,
Dumitru

[0] https://github.com/ovsrobot/ovn/actions/runs/3378478500
Han Zhou Nov. 4, 2022, 9:45 p.m. UTC | #3
On Wed, Nov 2, 2022 at 7:46 AM Dumitru Ceara <dceara@redhat.com> wrote:
>
> On 11/2/22 15:35, Ales Musil wrote:
> > To prevent some jobs not running after CI scripts updates
> > use numbers instead of the test flags. This still allows us
> > to use parallelization, but without worrying about skipping
> > some tests by mistake.
> >
> > For "test" suites use 3 parts, with 1500 tests in mind.
> > That should give as additional space for future tests.
> > Currently, there is ~1200 tests. For sanitizers use 5 parts
> > instead, as they are slower in general.
> >
> > For "system-test" use 3 parts, with 300 tests in mind.
> > Currently, there is ~200 tests.
> >
> > In the end this patch reduces the number of jobs by 8 to 20,
> > which is ok as there is a limit of 20 running in parallel [0].
> >
> > [0]
https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits
> > Signed-off-by: Ales Musil <amusil@redhat.com>
> > ---
>
> Thanks, Ales, for the patch!
>
> It makes it harder to skip tests by accident in CI which is great.
>
> But there's still the downside that maintainers need to pay a bit more
> attention so that the last run "1001-" or "201-" doesn't take way longer
> than the rest.

I agree with this, but maybe not a big deal. So I am ok with it, too.
>
> I'm OK with that but I wonder what Han, Mark and Numan think about this.
>
> If people are OK with it I can apply and backport the patch (assuming
> the CI is green [0]).

Backporting may be a problem if the older branch doesn't have test 1200-.
Otherwise should be good.

Thanks,
Han

>
> Regards,
> Dumitru
>
> [0] https://github.com/ovsrobot/ovn/actions/runs/3378478500
>
Dumitru Ceara Nov. 4, 2022, 10:23 p.m. UTC | #4
On 11/4/22 22:45, Han Zhou wrote:
> On Wed, Nov 2, 2022 at 7:46 AM Dumitru Ceara <dceara@redhat.com> wrote:
>>
>> On 11/2/22 15:35, Ales Musil wrote:
>>> To prevent some jobs not running after CI scripts updates
>>> use numbers instead of the test flags. This still allows us
>>> to use parallelization, but without worrying about skipping
>>> some tests by mistake.
>>>
>>> For "test" suites use 3 parts, with 1500 tests in mind.
>>> That should give as additional space for future tests.
>>> Currently, there is ~1200 tests. For sanitizers use 5 parts
>>> instead, as they are slower in general.
>>>
>>> For "system-test" use 3 parts, with 300 tests in mind.
>>> Currently, there is ~200 tests.
>>>
>>> In the end this patch reduces the number of jobs by 8 to 20,
>>> which is ok as there is a limit of 20 running in parallel [0].
>>>
>>> [0]
> https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits
>>> Signed-off-by: Ales Musil <amusil@redhat.com>
>>> ---
>>
>> Thanks, Ales, for the patch!
>>
>> It makes it harder to skip tests by accident in CI which is great.
>>
>> But there's still the downside that maintainers need to pay a bit more
>> attention so that the last run "1001-" or "201-" doesn't take way longer
>> than the rest.
> 
> I agree with this, but maybe not a big deal. So I am ok with it, too.

Actually, I have already missed this. :)

Branches 22.03 and 22.06 have 2000+ tests because the test matrix
depended on dp-groups being enabled/disabled too.  That's not the case
since >= 22.09.

I still don't think it's a big deal in the end though.

>>
>> I'm OK with that but I wonder what Han, Mark and Numan think about this.
>>
>> If people are OK with it I can apply and backport the patch (assuming
>> the CI is green [0]).
> 
> Backporting may be a problem if the older branch doesn't have test 1200-.
> Otherwise should be good.
> 

I pushed this to the main branch and only backported to branch-22.09 for
now.  We have ~1300 tests there so we're ok.  I'll wait with backporting
to 22.06 and 22.03 for now.

Thanks,
Dumitru

> Thanks,
> Han
> 
>>
>> Regards,
>> Dumitru
>>
>> [0] https://github.com/ovsrobot/ovn/actions/runs/3378478500
>>
>
diff mbox series

Patch

diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index 2b0782aea..dc1ca5240 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -47,15 +47,10 @@  else
 fi
 
 if [ "$TESTSUITE" ]; then
-    TESTSUITEFLAGS=""
-    if [[ ! -z $TESTSUITE_KW ]]; then
-        TESTSUITEFLAGS="-k $TESTSUITE_KW"
-    fi
-
     if [ "$TESTSUITE" = "system-test" ]; then
         configure_ovn $OPTS
         make -j4 || { cat config.log; exit 1; }
-        if ! sudo make -j4 check-kernel TESTSUITEFLAGS="$TESTSUITEFLAGS" RECHECK=yes; then
+        if ! sudo make -j4 check-kernel TESTSUITEFLAGS="$TEST_RANGE" RECHECK=yes; then
             # system-kmod-testsuite.log is necessary for debugging.
             cat tests/system-kmod-testsuite.log
             exit 1
@@ -67,7 +62,7 @@  if [ "$TESTSUITE" ]; then
 
         export DISTCHECK_CONFIGURE_FLAGS="$OPTS"
         if ! make distcheck CFLAGS="${COMMON_CFLAGS} ${OVN_CFLAGS}" -j4 \
-            TESTSUITEFLAGS="$TESTSUITEFLAGS -j4" RECHECK=yes
+            TESTSUITEFLAGS="-j4 $TEST_RANGE" RECHECK=yes
         then
             # testsuite.log is necessary for debugging.
             cat */_build/sub/tests/testsuite.log
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 7a59cd478..88c48dd2c 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -24,7 +24,7 @@  jobs:
       M32:         ${{ matrix.cfg.m32 }}
       OPTS:        ${{ matrix.cfg.opts }}
       TESTSUITE:   ${{ matrix.cfg.testsuite }}
-      TESTSUITE_KW:   ${{ matrix.cfg.testsuite_kw }}
+      TEST_RANGE:  ${{ matrix.cfg.test_range }}
       SANITIZERS:  ${{ matrix.cfg.sanitizers }}
 
     name: linux ${{ join(matrix.cfg.*, ' ') }}
@@ -36,31 +36,23 @@  jobs:
         cfg:
         - { compiler: gcc, opts: --disable-ssl }
         - { compiler: clang, opts: --disable-ssl }
-        - { compiler: gcc, testsuite: test, testsuite_kw: "parallelization=yes,ovn_monitor_all=yes" }
-        - { compiler: gcc, testsuite: test, testsuite_kw: "parallelization=yes,ovn_monitor_all=no" }
-        - { compiler: gcc, testsuite: test, testsuite_kw: "parallelization=no,ovn_monitor_all=yes" }
-        - { compiler: gcc, testsuite: test, testsuite_kw: "parallelization=no,ovn_monitor_all=no" }
-        - { compiler: gcc, testsuite: test, testsuite_kw: "!ovn-northd" }
-        - { compiler: clang, testsuite: test, sanitizers: sanitizers, testsuite_kw: "parallelization=yes,ovn_monitor_all=yes" }
-        - { compiler: clang, testsuite: test, sanitizers: sanitizers, testsuite_kw: "parallelization=yes,ovn_monitor_all=no" }
-        - { compiler: clang, testsuite: test, sanitizers: sanitizers, testsuite_kw: "parallelization=no,ovn_monitor_all=yes" }
-        - { compiler: clang, testsuite: test, sanitizers: sanitizers, testsuite_kw: "parallelization=no,ovn_monitor_all=no" }
-        - { compiler: clang, testsuite: test, sanitizers: sanitizers, testsuite_kw: "!ovn-northd" }
-        - { compiler: gcc, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=yes,ovn_monitor_all=yes" }
-        - { compiler: gcc, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=yes,ovn_monitor_all=no" }
-        - { compiler: gcc, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=no,ovn_monitor_all=yes" }
-        - { compiler: gcc, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=no,ovn_monitor_all=no" }
-        - { compiler: gcc, testsuite: test, libs: -ljemalloc, testsuite_kw: "!ovn-northd" }
-        - { compiler: clang, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=yes,ovn_monitor_all=yes" }
-        - { compiler: clang, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=yes,ovn_monitor_all=no" }
-        - { compiler: clang, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=no,ovn_monitor_all=yes" }
-        - { compiler: clang, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=no,ovn_monitor_all=no" }
-        - { compiler: clang, testsuite: test, libs: -ljemalloc, testsuite_kw: "!ovn-northd" }
-        - { compiler: gcc, testsuite: system-test, testsuite_kw: "parallelization=yes,ovn_monitor_all=yes" }
-        - { compiler: gcc, testsuite: system-test, testsuite_kw: "parallelization=yes,ovn_monitor_all=no" }
-        - { compiler: gcc, testsuite: system-test, testsuite_kw: "parallelization=no,ovn_monitor_all=yes" }
-        - { compiler: gcc, testsuite: system-test, testsuite_kw: "parallelization=no,ovn_monitor_all=no" }
-        - { compiler: gcc, testsuite: system-test, testsuite_kw: "!ovn-northd" }
+        - { compiler: gcc, testsuite: test, test_range: "-500" }
+        - { compiler: gcc, testsuite: test, test_range: "501-1000" }
+        - { compiler: gcc, testsuite: test, test_range: "1001-" }
+        - { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "-300" }
+        - { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "301-600" }
+        - { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "601-900" }
+        - { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "901-1200" }
+        - { compiler: clang, testsuite: test, sanitizers: sanitizers, test_range: "1201-" }
+        - { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "-500" }
+        - { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "501-1000" }
+        - { compiler: gcc, testsuite: test, libs: -ljemalloc, test_range: "1001-" }
+        - { compiler: clang, testsuite: test, libs: -ljemalloc, test_range: "-500" }
+        - { compiler: clang, testsuite: test, libs: -ljemalloc, test_range: "501-1000" }
+        - { compiler: clang, testsuite: test, libs: -ljemalloc, test_range: "1001-" }
+        - { compiler: gcc, testsuite: system-test, test_range: "-100" }
+        - { compiler: gcc, testsuite: system-test, test_range: "101-200" }
+        - { compiler: gcc, testsuite: system-test, test_range: "201-" }
         - { compiler: gcc,  m32: m32, opts: --disable-ssl}
 
     steps: