You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ph...@apache.org on 2019/08/27 12:27:37 UTC

[nifi-minifi-cpp] branch master updated: MINIFICPP-1017 - Improve logging of docker tests

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

phrocker pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git


The following commit(s) were added to refs/heads/master by this push:
     new c607f35  MINIFICPP-1017 - Improve logging of docker tests
     new 5c6fb1c  Merge pull request #634 from arpadboda/MINIFICPP-1017
c607f35 is described below

commit c607f35ca23c6dbad03861a0bcc31184be440a0c
Author: Arpad Boda <ab...@apache.org>
AuthorDate: Mon Aug 26 17:13:29 2019 +0200

    MINIFICPP-1017 - Improve logging of docker tests
---
 docker/DockerBuild.sh                           |  3 +++
 docker/test/integration/minifi/test/__init__.py | 29 +++++++++++++------------
 2 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/docker/DockerBuild.sh b/docker/DockerBuild.sh
index 20c5070..6217a82 100755
--- a/docker/DockerBuild.sh
+++ b/docker/DockerBuild.sh
@@ -34,6 +34,9 @@ echo "MiNiFi Package: $MINIFI_SOURCE_CODE"
 mkdir -p $CMAKE_SOURCE_DIR/docker/minificppsource
 rsync -avr \
       --exclude '/*build*' \
+      --exclude '/*_repository*' \
+      --exclude '/logs' \
+      --exclude '/cmake' \
       --exclude '/docker' \
       --exclude '.git' \
       --exclude '/extensions/expression-language/Parser.cpp' \
diff --git a/docker/test/integration/minifi/test/__init__.py b/docker/test/integration/minifi/test/__init__.py
index d25e538..c93f168 100644
--- a/docker/test/integration/minifi/test/__init__.py
+++ b/docker/test/integration/minifi/test/__init__.py
@@ -118,27 +118,28 @@ class DockerTestCluster(SingleNodeDockerCluster):
 
         for container in self.containers:
             container = self.client.containers.get(container.id)
-            logging.info('Container logs for container \'%s\':\n%s', container.name, container.logs())
+            logging.info('Container logs for container \'%s\':\n%s', container.name, container.logs().decode("utf-8"))
             if b'Segmentation fault' in container.logs():
+                logging.warn('Container segfaulted: %s', container.name)
                 self.segfault=True
             if container.status == 'running':
-                minifi_app_logs = container.exec_run('/bin/sh -c \'test -f ' + self.minifi_root + '/logs/minifi-app.log '
-                                                                                                '&& cat ' +
-                                                     self.minifi_root + '/logs/minifi-app.log\'')
-                if len(minifi_app_logs) > 0:
-                    logging.info('MiNiFi app logs for container \'%s\':\n%s', container.name, minifi_app_logs)
-
-                nifi_app_logs = container.exec_run('/bin/sh -c \'test -f ' + self.nifi_root + '/logs/nifi-app.log '
-                                                                                            '&& cat ' +
-                                                   self.nifi_root + '/logs/nifi-app.log\'')
-                if len(nifi_app_logs) > 0:
-                    logging.info('NiFi app logs for container \'%s\':\n%s', container.name, nifi_app_logs)
+                apps = [("MiNiFi", self.minifi_root + '/logs/minifi-app.log'), ("NiFi", self.nifi_root + '/logs/nifi-app.log')]
+                for app in apps:
+                    app_log_status, app_log = container.exec_run('/bin/sh -c \'cat ' + app[1] + '\'')
+                    if app_log_status == 0:
+                        logging.info('%s app logs for container \'%s\':\n', app[0], container.name)
+                        for line in app_log.decode("utf-8").splitlines():
+                            logging.info(line)
+                        break
+                else:
+                    logging.warning("The container is running, but none of %s logs were found", " or ".join([x[0] for x in apps]))
+
             else:
                 logging.info(container.status)
                 logging.info('Could not cat app logs for container \'%s\' because it is not running',
                              container.name)
-            stats = container.stats(decode=True, stream=True)
-            logging.info('Container stats:\n%s', repr(stats))
+            stats = container.stats(stream=False)
+            logging.info('Container stats:\n%s', stats)
 
     def check_output(self, timeout=5):
         """