Allow skipping arm and arm64 if cnf-conformance 26/70926/1
authorCédric Ollivier <cedric.ollivier@orange.com>
Fri, 4 Sep 2020 19:24:55 +0000 (21:24 +0200)
committerCédric Ollivier <cedric.ollivier@orange.com>
Fri, 4 Sep 2020 20:47:55 +0000 (22:47 +0200)
cnf-conformance doesn't support this architectures.
It also improve cleaning to publish artifacts [1].

[1] https://build.opnfv.org/ci/job/functest-kubernetes-opnfv-functest-kubernetes-cnf-latest-cnf_conformance-run/2/console

Change-Id: Ie64e4a1b8b496a050a1798eaf4e5ef6397c011d0
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
(cherry picked from commit 2cf6903c9a805b9c1b7702292bdf33b9485be319)

docker/cnf/Dockerfile
functest_kubernetes/cnf_conformance/conformance.py

index 46c97c5..1cd74ab 100644 (file)
@@ -7,9 +7,11 @@ RUN apk --no-cache add --update wget curl libc6-compat && \
     case $(uname -m) in armv7l) ARCH=arm;; aarch64) ARCH=arm64;; x86_64) ARCH=amd64;; esac && \
     curl https://storage.googleapis.com/kubernetes-release/release/$K8S_TAG/bin/linux/$ARCH/kubectl \
         -s --output /usr/local/bin/kubectl && \
-    curl https://github.com/cncf/cnf-conformance/releases/download/$CNF_CONFORMANCE_TAG/cnf-conformance-$(echo $CNF_CONFORMANCE_TAG |cut -d\- -f 1)-$ARCH-static \
-        -Ls --output /usr/local/bin/cnf-conformance && \
-    chmod +x /usr/local/bin/kubectl /usr/local/bin/cnf-conformance && \
+    case $(uname -m) in x86_64) \
+        curl https://github.com/cncf/cnf-conformance/releases/download/$CNF_CONFORMANCE_TAG/cnf-conformance-$(echo $CNF_CONFORMANCE_TAG |cut -d\- -f 1)-$ARCH-static \
+            -Ls --output /usr/local/bin/cnf-conformance && \
+            chmod +x /usr/local/bin/cnf-conformance ;; esac && \
+    chmod +x /usr/local/bin/kubectl && \
     mkdir -p /src/cnf-conformance && \
     curl -Ls https://raw.githubusercontent.com/cncf/cnf-conformance/$CNF_CONFORMANCE_TAG/example-cnfs/coredns/cnf-conformance.yml \
         -s --output /src/cnf-conformance/cnf-conformance.yml && \
index 1f80f15..5aff8aa 100644 (file)
@@ -42,10 +42,19 @@ class CNFConformance(testcase.TestCase):
 
     __logger = logging.getLogger(__name__)
 
+    def check_requirements(self):
+        """Check if cnf-conformance is in $PATH"""
+        if not os.path.exists(os.path.join(self.bin_dir, 'cnf-conformance')):
+            self.__logger.warning(
+                "cnf-conformance is not compiled for arm and arm64 for the "
+                "time being")
+            self.is_skipped = True
+
     def setup(self):
         """Implement initialization and pre-reqs steps"""
-        os.makedirs(self.res_dir, exist_ok=True)
-
+        if os.path.exists(self.res_dir):
+            shutil.rmtree(self.res_dir)
+        os.makedirs(self.res_dir)
         shutil.copy2(os.path.join(self.src_dir, 'points.yml'), self.res_dir)
         shutil.copy2(
             os.path.join(self.src_dir, 'cnf-conformance.yml'), self.res_dir)
@@ -101,4 +110,8 @@ class CNFConformance(testcase.TestCase):
                'cnf-config=cnf-conformance.yml']
         output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
         self.__logger.info("%s\n%s", " ".join(cmd), output.decode("utf-8"))
-        shutil.rmtree(self.res_dir)
+        shutil.rmtree(os.path.join(self.res_dir, 'tools'), ignore_errors=True)
+        shutil.rmtree(os.path.join(self.res_dir, 'cnfs'), ignore_errors=True)
+        for lfile in os.listdir(self.res_dir):
+            if not fnmatch.fnmatch(lfile, 'cnf-conformance-results-*.yml'):
+                os.remove(os.path.join(self.res_dir, lfile))