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 <mh...@redhat.com>
---
 .ci/linux-build.sh         |  9 +++++++--
 .github/workflows/test.yml | 26 +++++++++++++++++++++-----
 2 files changed, 28 insertions(+), 7 deletions(-)

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:
-- 
2.34.1

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to