diff --git a/test/runner/lib/cloud/__init__.py b/test/runner/lib/cloud/__init__.py index 97935f599a..1ed059bb16 100644 --- a/test/runner/lib/cloud/__init__.py +++ b/test/runner/lib/cloud/__init__.py @@ -3,6 +3,9 @@ from __future__ import absolute_import, print_function import abc import atexit +import datetime +import json +import time import os import platform import random @@ -128,9 +131,30 @@ def cloud_init(args, targets): args.metadata.cloud_config = {} + results = {} + for provider in get_cloud_providers(args, targets): args.metadata.cloud_config[provider.platform] = {} + + start_time = time.time() provider.setup() + end_time = time.time() + + results[provider.platform] = dict( + platform=provider.platform, + setup_seconds=int(end_time - start_time), + targets=[t.name for t in targets], + ) + + if not args.explain and results: + results_path = 'test/results/data/%s-%s.json' % (args.command, re.sub(r'[^0-9]', '-', str(datetime.datetime.utcnow().replace(microsecond=0)))) + + data = dict( + clouds=results, + ) + + with open(results_path, 'w') as results_fd: + results_fd.write(json.dumps(data, sort_keys=True, indent=4)) class CloudBase(ABC): diff --git a/test/runner/lib/executor.py b/test/runner/lib/executor.py index 83c017ff8c..dab3d73098 100644 --- a/test/runner/lib/executor.py +++ b/test/runner/lib/executor.py @@ -777,7 +777,12 @@ def command_integration_filtered(args, targets, all_targets): display.warning('Retrying test target "%s" with maximum verbosity.' % target.name) display.verbosity = args.verbosity = 6 + start_time = time.time() original_environment.validate(target.name, throw=True) + end_time = time.time() + + results[target.name]['validation_seconds'] = int(end_time - start_time) + passed.append(target) except Exception as ex: failed.append(target)