Print env vars and env_file
authorCédric Ollivier <cedric.ollivier@orange.com>
Sat, 24 Feb 2018 10:41:33 +0000 (11:41 +0100)
committerCédric Ollivier <cedric.ollivier@orange.com>
Sat, 24 Feb 2018 14:28:54 +0000 (15:28 +0100)
It simply eases detecting wrong inputs [1].

[1] https://build.opnfv.org/ci/view/functest/job/functest-apex-baremetal-daily-master/796/console

Change-Id: I0784c29265c69a6ba4a049226196bcdd70b0a572
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
functest/ci/run_tests.py
functest/tests/unit/ci/test_run_tests.py
functest/utils/env.py

index 0b98030..651a385 100644 (file)
@@ -101,7 +101,6 @@ class Runner(object):
             LOGGER.debug("No env file %s found", rc_file)
             return
         with open(rc_file, "r") as rcfd:
-            LOGGER.info("Sourcing env file %s", rc_file)
             for line in rcfd:
                 var = (line.rstrip('"\n').replace('export ', '').split(
                     "=") if re.search(r'(.*)=(.*)', line) else None)
@@ -112,6 +111,8 @@ class Runner(object):
                     key = re.sub(r'^["\' ]*|[ \'"]*$', '', var[0])
                     value = re.sub(r'^["\' ]*|[ \'"]*$', '', "".join(var[1:]))
                     os.environ[key] = value
+            rcfd.seek(0, 0)
+            LOGGER.info("Sourcing env file %s\n\n%s", rc_file, rcfd.read())
 
     @staticmethod
     def get_dict_by_test(testname):
@@ -228,10 +229,9 @@ class Runner(object):
         if 'report' in kwargs:
             self.report_flag = kwargs['report']
         try:
+            LOGGER.info("Deployment description:\n\n%s\n", env.string())
+            self.source_envfile()
             if 'test' in kwargs:
-                LOGGER.debug("Sourcing the credential file...")
-                self.source_envfile()
-
                 LOGGER.debug("Test args: %s", kwargs['test'])
                 if self.tiers.get_tier(kwargs['test']):
                     self.run_tier(self.tiers.get_tier(kwargs['test']))
@@ -266,13 +266,6 @@ class Runner(object):
 
     def summary(self, tier=None):
         """To generate functest report showing the overall results"""
-        msg = prettytable.PrettyTable(
-            header_style='upper', padding_width=5,
-            field_names=['env var', 'value'])
-        for env_var in ['INSTALLER_TYPE', 'DEPLOY_SCENARIO', 'BUILD_TAG',
-                        'CI_LOOP']:
-            msg.add_row([env_var, env.get(env_var)])
-        LOGGER.info("Deployment description:\n\n%s\n", msg)
         msg = prettytable.PrettyTable(
             header_style='upper', padding_width=5,
             field_names=['test case', 'project', 'tier',
index bc96774..b8dca20 100644 (file)
@@ -91,8 +91,7 @@ class RunTestsTesting(unittest.TestCase):
             pass
         envfile = 'rc_file'
         with mock.patch('six.moves.builtins.open',
-                        mock.mock_open(read_data=msg),
-                        create=True) as mock_method,\
+                        mock.mock_open(read_data=msg)) as mock_method,\
                 mock.patch('os.path.isfile', return_value=True):
             mock_method.return_value.__iter__ = lambda self: iter(
                 self.readline, '')
index ed09d9f..5ad870e 100644 (file)
@@ -11,6 +11,8 @@
 
 import os
 
+import prettytable
+
 INPUTS = {
     'EXTERNAL_NETWORK': None,
     'CI_LOOP': 'daily',
@@ -31,3 +33,12 @@ def get(env_var):
     if env_var not in INPUTS.keys():
         return os.environ.get(env_var, None)
     return os.environ.get(env_var, INPUTS[env_var])
+
+
+def string():
+    msg = prettytable.PrettyTable(
+        header_style='upper', padding_width=5,
+        field_names=['env var', 'value'])
+    for env_var in INPUTS:
+        msg.add_row([env_var, get(env_var) if get(env_var) else ''])
+    return msg