diff options
Diffstat (limited to 'deprecated/weekly_report.py')
-rwxr-xr-x | deprecated/weekly_report.py | 258 |
1 files changed, 0 insertions, 258 deletions
diff --git a/deprecated/weekly_report.py b/deprecated/weekly_report.py deleted file mode 100755 index 476b9f0d..00000000 --- a/deprecated/weekly_report.py +++ /dev/null @@ -1,258 +0,0 @@ -#!/usr/bin/env python2 -# -*- coding: utf-8 -*- -# -# Copyright Google Inc. 2014 - -"""Module to generate the 7-day crosperf reports.""" - -from __future__ import print_function - -import argparse -import datetime -import os -import sys - -from cros_utils import constants -from cros_utils import command_executer - -WEEKDAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] -DATA_ROOT_DIR = os.path.join(constants.CROSTC_WORKSPACE, 'weekly_test_data') -EXPERIMENT_FILE = os.path.join(DATA_ROOT_DIR, 'weekly_report') -MAIL_PROGRAM = '~/var/bin/mail-sheriff' - - -def Generate_Vanilla_Report_File(vanilla_image_paths, board, remote, - chromeos_root, cmd_executer): - - experiment_header = """ -name: weekly_vanilla_report -cache_only: True -same_specs: False -board: %s -remote: %s -""" % (board, remote) - - experiment_tests = """ -benchmark: all_toolchain_perf { - suite: telemetry_Crosperf - iterations: 3 -} -""" - - filename = '%s_%s_vanilla.exp' % (EXPERIMENT_FILE, board) - if os.path.exists(filename): - cmd = 'rm %s' % filename - cmd_executer.RunCommand(cmd) - - with open(filename, 'w') as f: - f.write(experiment_header) - f.write(experiment_tests) - - # Add each vanilla image - for test_path in vanilla_image_paths: - pieces = test_path.split('/') - test_name = pieces[-1] - test_image = """ -%s { - chromeos_root: %s - chromeos_image: %s -} -""" % (test_name, chromeos_root, - os.path.join(test_path, 'chromiumos_test_image.bin')) - f.write(test_image) - - return filename - - -def Generate_Test_File(test_image_paths, vanilla_image_path, board, remote, - chromeos_root, cmd_executer): - - experiment_header = """ -name: weekly_report -cache_only: True -same_specs: False -board: %s -remote: %s -""" % (board, remote) - - experiment_tests = """ -benchmark: all_toolchain_perf { - suite: telemetry_Crosperf - iterations: 3 -} -""" - - filename = '%s_%s.exp' % (EXPERIMENT_FILE, board) - if os.path.exists(filename): - cmd = 'rm %s' % filename - cmd_executer.RunCommand(cmd) - - with open(filename, 'w') as f: - f.write(experiment_header) - f.write(experiment_tests) - - # Add vanilla image (first) - vanilla_image = """ -%s { - chromeos_root: %s - chromeos_image: %s -} -""" % (vanilla_image_path.split('/')[-1], chromeos_root, - os.path.join(vanilla_image_path, 'chromiumos_test_image.bin')) - - f.write(vanilla_image) - - # Add each test image - for test_path in test_image_paths: - pieces = test_path.split('/') - test_name = pieces[-1] - test_image = """ -%s { - chromeos_root: %s - chromeos_image: %s -} -""" % (test_name, chromeos_root, - os.path.join(test_path, 'chromiumos_test_image.bin')) - f.write(test_image) - - return filename - - -def Main(argv): - - parser = argparse.ArgumentParser() - parser.add_argument('-b', '--board', dest='board', help='Target board.') - parser.add_argument('-r', '--remote', dest='remote', help='Target device.') - parser.add_argument( - '-v', - '--vanilla_only', - dest='vanilla_only', - action='store_true', - default=False, - help='Generate a report comparing only the vanilla ' - 'images.') - - options = parser.parse_args(argv[1:]) - - if not options.board: - print('Must specify a board.') - return 1 - - if not options.remote: - print('Must specify at least one remote.') - return 1 - - cmd_executer = command_executer.GetCommandExecuter(log_level='average') - - # Find starting index, for cycling through days of week, generating - # reports starting 6 days ago from today. Generate list of indices for - # order in which to look at weekdays for report: - todays_index = datetime.datetime.today().isoweekday() - indices = [] - start = todays_index + 1 - end = start + 7 - for i in range(start, end): - indices.append(i % 7) - # E.g. if today is Sunday, then start report with last Monday, so - # indices = [1, 2, 3, 4, 5, 6, 0]. - - # Find all the test image tar files, untar them and add them to - # the list. Also find and untar vanilla image tar files, and keep - # track of the first vanilla image. - report_image_paths = [] - vanilla_image_paths = [] - first_vanilla_image = None - for i in indices: - day = WEEKDAYS[i] - data_path = os.path.join(DATA_ROOT_DIR, options.board, day) - if os.path.exists(data_path): - # First, untar the test image. - tar_file_name = '%s_test_image.tar' % day - tar_file_path = os.path.join(data_path, tar_file_name) - image_dir = '%s_test_image' % day - image_path = os.path.join(data_path, image_dir) - if os.path.exists(tar_file_path): - if not os.path.exists(image_path): - os.makedirs(image_path) - cmd = ('cd %s; tar -xvf %s -C %s --strip-components 1' % - (data_path, tar_file_path, image_path)) - ret = cmd_executer.RunCommand(cmd) - if not ret: - report_image_paths.append(image_path) - # Next, untar the vanilla image. - vanilla_file = '%s_vanilla_image.tar' % day - v_file_path = os.path.join(data_path, vanilla_file) - image_dir = '%s_vanilla_image' % day - image_path = os.path.join(data_path, image_dir) - if os.path.exists(v_file_path): - if not os.path.exists(image_path): - os.makedirs(image_path) - cmd = ('cd %s; tar -xvf %s -C %s --strip-components 1' % - (data_path, v_file_path, image_path)) - ret = cmd_executer.RunCommand(cmd) - if not ret: - vanilla_image_paths.append(image_path) - if not first_vanilla_image: - first_vanilla_image = image_path - - # Find a chroot we can use. Look for a directory containing both - # an experiment file and a chromeos directory (the experiment file will - # only be created if both images built successfully, i.e. the chroot is - # good). - chromeos_root = None - timestamp = datetime.datetime.strftime(datetime.datetime.now(), - '%Y-%m-%d_%H:%M:%S') - results_dir = os.path.join( - os.path.expanduser('~/nightly_test_reports'), - '%s.%s' % (timestamp, options.board), 'weekly_tests') - - for day in WEEKDAYS: - startdir = os.path.join(constants.CROSTC_WORKSPACE, 'nightly-tests', day) - num_dirs = os.listdir(startdir) - for d in num_dirs: - exp_file = os.path.join(startdir, d, 'toolchain_experiment.txt') - chroot = os.path.join(startdir, d, 'chromeos') - if os.path.exists(chroot) and os.path.exists(exp_file): - chromeos_root = chroot - if chromeos_root: - break - if chromeos_root: - break - - if not chromeos_root: - print('Unable to locate a usable chroot. Exiting without report.') - return 1 - - # Create the Crosperf experiment file for generating the weekly report. - if not options.vanilla_only: - filename = Generate_Test_File(report_image_paths, first_vanilla_image, - options.board, options.remote, chromeos_root, - cmd_executer) - else: - filename = Generate_Vanilla_Report_File(vanilla_image_paths, options.board, - options.remote, chromeos_root, - cmd_executer) - - # Run Crosperf on the file to generate the weekly report. - cmd = ('%s/toolchain-utils/crosperf/crosperf ' - '%s --no_email=True --results_dir=%s' % (constants.CROSTC_WORKSPACE, - filename, results_dir)) - retv = cmd_executer.RunCommand(cmd) - if retv == 0: - # Send the email, if the crosperf command worked. - filename = os.path.join(results_dir, 'msg_body.html') - if (os.path.exists(filename) and - os.path.exists(os.path.expanduser(MAIL_PROGRAM))): - vanilla_string = ' ' - if options.vanilla_only: - vanilla_string = ' Vanilla ' - command = ('cat %s | %s -s "Weekly%sReport results, %s" -team -html' % - (filename, MAIL_PROGRAM, vanilla_string, options.board)) - retv = cmd_executer.RunCommand(command) - - return retv - - -if __name__ == '__main__': - retval = Main(sys.argv) - sys.exit(retval) |