aboutsummaryrefslogtreecommitdiff
path: root/deprecated/weekly_report.py
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated/weekly_report.py')
-rwxr-xr-xdeprecated/weekly_report.py258
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)