blob: 082d8a6c2af1c5699450c79b62592c5b24fc353c [file] [log] [blame]
cmtice6367e172014-06-17 16:30:45 -07001#!/usr/bin/python
2#
3# Copyright 2014 Google Inc. All Rights Reserved.
4
5"""Unittest for crosperf."""
6import atexit
7import os
8import optparse
9import StringIO
10
11
12import mock
13import unittest
14
15import crosperf
16import settings_factory
17import experiment_file
18import experiment_runner
19
20from help import Help
21
Caroline Tice7057cf62015-12-10 12:09:40 -080022from cros_utils import command_executer
23from cros_utils import logger
cmtice6367e172014-06-17 16:30:45 -070024
25EXPERIMENT_FILE_1 = """
26 board: x86-alex
27 remote: chromeos-alex3
28 perf_args: record -a -e cycles
29 benchmark: PageCycler {
30 iterations: 3
31 }
32
33 image1 {
34 chromeos_image: /usr/local/google/cros_image1.bin
35 }
36
37 image2 {
38 remote: chromeos-lumpy1
39 chromeos_image: /usr/local/google/cros_image2.bin
40 }
41 """
42
43class CrosperfTest(unittest.TestCase):
44
45 def setUp(self):
46 input_file = StringIO.StringIO(EXPERIMENT_FILE_1)
47 self.exp_file = experiment_file.ExperimentFile(input_file)
48
49 def test_setup_parser_options(self):
50
51 parser = optparse.OptionParser(usage=Help().GetUsage(),
52 description=Help().GetHelp(),
53 formatter=crosperf.MyIndentedHelpFormatter(),
54 version="%prog 3.0")
55 parser.add_option("-l", "--log_dir",
56 dest="log_dir",
57 default="",
58 help="The log_dir, default is under <crosperf_logs>/logs")
59 options_before = parser._get_all_options()
60 self.assertEqual(len(options_before), 3)
61 crosperf.SetupParserOptions(parser)
62 options_after = parser._get_all_options()
Caroline Tice7057cf62015-12-10 12:09:40 -080063 self.assertEqual(len(options_after), 29)
cmtice6367e172014-06-17 16:30:45 -070064
65
66 def test_convert_options_to_settings(self):
67 parser = optparse.OptionParser(usage=Help().GetUsage(),
68 description=Help().GetHelp(),
69 formatter=crosperf.MyIndentedHelpFormatter(),
70 version="%prog 3.0")
71 parser.add_option("-l", "--log_dir",
72 dest="log_dir",
73 default="",
74 help="The log_dir, default is under <crosperf_logs>/logs")
75 crosperf.SetupParserOptions(parser)
76 argv = ['crosperf/crosperf.py', 'temp.exp', '--rerun=True']
77 options, args = parser.parse_args(argv)
78 settings = crosperf.ConvertOptionsToSettings(options)
79 self.assertIsNotNone(settings)
80 self.assertIsInstance(settings, settings_factory.GlobalSettings)
Caroline Tice7057cf62015-12-10 12:09:40 -080081 self.assertEqual(len(settings.fields), 25)
cmtice6367e172014-06-17 16:30:45 -070082 self.assertTrue(settings.GetField('rerun'))
83 argv = ['crosperf/crosperf.py', 'temp.exp']
84 options, args = parser.parse_args(argv)
85 settings = crosperf.ConvertOptionsToSettings(options)
86 self.assertFalse(settings.GetField('rerun'))
87
88
89if __name__ == "__main__":
90 unittest.main()