diff mbox series

[ovs-dev] OVN-CI: ovn unit tests run in parallel jobs.

Message ID 20220804153250.379510-1-mheib@redhat.com
State Accepted
Headers show
Series [ovs-dev] OVN-CI: ovn unit tests run in parallel jobs. | 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

Mohammad Heib Aug. 4, 2022, 3:32 p.m. UTC
Ovn unit tests supported matrix size has been increased
after adding support to monitor_all and northd_parallelization
options recently, and that increased the execution time of the ovn-ci jobs.

This patch aims to reduce the execution time of those jobs by splitting
them into smaller jobs that runs in parallel and each one will execute
a subset of unit test.

Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2114862
Signed-off-by: Mohammad Heib <mheib@redhat.com>
---
 .ci/linux-build.sh         |  9 +++++++--
 .github/workflows/test.yml | 26 +++++++++++++++++++++-----
 2 files changed, 28 insertions(+), 7 deletions(-)

Comments

0-day Robot Aug. 4, 2022, 3:50 p.m. UTC | #1
Bleep bloop.  Greetings Mohammad Heib, 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 90 characters long (recommended limit is 79)
#38 FILE: .ci/linux-build.sh:58:
        if ! sudo make -j4 check-kernel TESTSUITEFLAGS="$TESTSUITEFLAGS" RECHECK=yes; then

WARNING: Line is 101 characters long (recommended limit is 79)
#72 FILE: .github/workflows/test.yml:39:
        - { compiler: gcc, testsuite: test, testsuite_kw: "parallelization=yes,ovn_monitor_all=yes" }

WARNING: Line is 100 characters long (recommended limit is 79)
#73 FILE: .github/workflows/test.yml:40:
        - { compiler: gcc, testsuite: test, testsuite_kw: "parallelization=yes,ovn_monitor_all=no" }

WARNING: Line is 100 characters long (recommended limit is 79)
#74 FILE: .github/workflows/test.yml:41:
        - { compiler: gcc, testsuite: test, testsuite_kw: "parallelization=no,ovn_monitor_all=yes" }

WARNING: Line is 99 characters long (recommended limit is 79)
#75 FILE: .github/workflows/test.yml:42:
        - { compiler: gcc, testsuite: test, testsuite_kw: "parallelization=no,ovn_monitor_all=no" }

WARNING: Line is 127 characters long (recommended limit is 79)
#76 FILE: .github/workflows/test.yml:43:
        - { compiler: clang, testsuite: test, sanitizers: sanitizers, testsuite_kw: "parallelization=yes,ovn_monitor_all=yes" }

WARNING: Line is 126 characters long (recommended limit is 79)
#77 FILE: .github/workflows/test.yml:44:
        - { compiler: clang, testsuite: test, sanitizers: sanitizers, testsuite_kw: "parallelization=yes,ovn_monitor_all=no" }

WARNING: Line is 126 characters long (recommended limit is 79)
#78 FILE: .github/workflows/test.yml:45:
        - { compiler: clang, testsuite: test, sanitizers: sanitizers, testsuite_kw: "parallelization=no,ovn_monitor_all=yes" }

WARNING: Line is 125 characters long (recommended limit is 79)
#79 FILE: .github/workflows/test.yml:46:
        - { compiler: clang, testsuite: test, sanitizers: sanitizers, testsuite_kw: "parallelization=no,ovn_monitor_all=no" }

WARNING: Line is 119 characters long (recommended limit is 79)
#80 FILE: .github/workflows/test.yml:47:
        - { compiler: gcc, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=yes,ovn_monitor_all=yes" }

WARNING: Line is 118 characters long (recommended limit is 79)
#81 FILE: .github/workflows/test.yml:48:
        - { compiler: gcc, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=yes,ovn_monitor_all=no" }

WARNING: Line is 118 characters long (recommended limit is 79)
#82 FILE: .github/workflows/test.yml:49:
        - { compiler: gcc, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=no,ovn_monitor_all=yes" }

WARNING: Line is 117 characters long (recommended limit is 79)
#83 FILE: .github/workflows/test.yml:50:
        - { compiler: gcc, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=no,ovn_monitor_all=no" }

WARNING: Line is 121 characters long (recommended limit is 79)
#84 FILE: .github/workflows/test.yml:51:
        - { compiler: clang, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=yes,ovn_monitor_all=yes" }

WARNING: Line is 120 characters long (recommended limit is 79)
#85 FILE: .github/workflows/test.yml:52:
        - { compiler: clang, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=yes,ovn_monitor_all=no" }

WARNING: Line is 120 characters long (recommended limit is 79)
#86 FILE: .github/workflows/test.yml:53:
        - { compiler: clang, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=no,ovn_monitor_all=yes" }

WARNING: Line is 119 characters long (recommended limit is 79)
#87 FILE: .github/workflows/test.yml:54:
        - { compiler: clang, testsuite: test, libs: -ljemalloc, testsuite_kw: "parallelization=no,ovn_monitor_all=no" }

WARNING: Line is 108 characters long (recommended limit is 79)
#88 FILE: .github/workflows/test.yml:55:
        - { compiler: gcc, testsuite: system-test, testsuite_kw: "parallelization=yes,ovn_monitor_all=yes" }

WARNING: Line is 107 characters long (recommended limit is 79)
#89 FILE: .github/workflows/test.yml:56:
        - { compiler: gcc, testsuite: system-test, testsuite_kw: "parallelization=yes,ovn_monitor_all=no" }

WARNING: Line is 107 characters long (recommended limit is 79)
#90 FILE: .github/workflows/test.yml:57:
        - { compiler: gcc, testsuite: system-test, testsuite_kw: "parallelization=no,ovn_monitor_all=yes" }

WARNING: Line is 106 characters long (recommended limit is 79)
#91 FILE: .github/workflows/test.yml:58:
        - { compiler: gcc, testsuite: system-test, testsuite_kw: "parallelization=no,ovn_monitor_all=no" }

Lines checked: 97, Warnings: 21, 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 Aug. 5, 2022, 11:18 a.m. UTC | #2
On 8/4/22 17:32, Mohammad Heib wrote:
> Ovn unit tests supported matrix size has been increased
> after adding support to monitor_all and northd_parallelization
> options recently, and that increased the execution time of the ovn-ci jobs.
> 
> This patch aims to reduce the execution time of those jobs by splitting
> them into smaller jobs that runs in parallel and each one will execute
> a subset of unit test.
> 
> Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2114862
> Signed-off-by: Mohammad Heib <mheib@redhat.com>
> ---

Looks good to me!

And the ovsrobot run only took 26 minutes:
https://github.com/ovsrobot/ovn/actions/runs/2797911234

vs the last run on the main branch that took 48 minutes:
https://github.com/ovn-org/ovn/actions/runs/2792485947

Acked-by: Dumitru Ceara <dceara@redhat.com>

Thanks,
Dumitru
Numan Siddique Aug. 8, 2022, 1:34 a.m. UTC | #3
On Fri, Aug 5, 2022 at 9:18 PM Dumitru Ceara <dceara@redhat.com> wrote:
>
> On 8/4/22 17:32, Mohammad Heib wrote:
> > Ovn unit tests supported matrix size has been increased
> > after adding support to monitor_all and northd_parallelization
> > options recently, and that increased the execution time of the ovn-ci jobs.
> >
> > This patch aims to reduce the execution time of those jobs by splitting
> > them into smaller jobs that runs in parallel and each one will execute
> > a subset of unit test.
> >
> > Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2114862
> > Signed-off-by: Mohammad Heib <mheib@redhat.com>
> > ---
>
> Looks good to me!
>
> And the ovsrobot run only took 26 minutes:
> https://github.com/ovsrobot/ovn/actions/runs/2797911234
>
> vs the last run on the main branch that took 48 minutes:
> https://github.com/ovn-org/ovn/actions/runs/2792485947
>
> Acked-by: Dumitru Ceara <dceara@redhat.com>

Thanks.  I applied the patch to the main branch.

Numan

>
> Thanks,
> Dumitru
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
diff mbox series

Patch

diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index dc32564fa..2b0782aea 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -47,10 +47,15 @@  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 RECHECK=yes; then
+        if ! sudo make -j4 check-kernel TESTSUITEFLAGS="$TESTSUITEFLAGS" RECHECK=yes; then
             # system-kmod-testsuite.log is necessary for debugging.
             cat tests/system-kmod-testsuite.log
             exit 1
@@ -62,7 +67,7 @@  if [ "$TESTSUITE" ]; then
 
         export DISTCHECK_CONFIGURE_FLAGS="$OPTS"
         if ! make distcheck CFLAGS="${COMMON_CFLAGS} ${OVN_CFLAGS}" -j4 \
-            TESTSUITEFLAGS="-j4" RECHECK=yes
+            TESTSUITEFLAGS="$TESTSUITEFLAGS -j4" 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 3b7283229..83d7c2386 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -24,6 +24,7 @@  jobs:
       M32:         ${{ matrix.cfg.m32 }}
       OPTS:        ${{ matrix.cfg.opts }}
       TESTSUITE:   ${{ matrix.cfg.testsuite }}
+      TESTSUITE_KW:   ${{ matrix.cfg.testsuite_kw }}
       SANITIZERS:  ${{ matrix.cfg.sanitizers }}
 
     name: linux ${{ join(matrix.cfg.*, ' ') }}
@@ -35,11 +36,26 @@  jobs:
         cfg:
         - { compiler: gcc, opts: --disable-ssl }
         - { compiler: clang, opts: --disable-ssl }
-        - { compiler: gcc, testsuite: test }
-        - { compiler: gcc, testsuite: system-test }
-        - { compiler: clang, testsuite: test, sanitizers: sanitizers }
-        - { compiler: gcc, testsuite: test, libs: -ljemalloc }
-        - { compiler: clang, testsuite: test, libs: -ljemalloc }
+        - { 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: 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: 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: 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: 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,  m32: m32, opts: --disable-ssl}
 
     steps: