cmtice | 6367e17 | 2014-06-17 16:30:45 -0700 | [diff] [blame] | 1 | #!/usr/bin/python |
| 2 | # |
| 3 | # Copyright 2014 Google Inc. All Rights Reserved. |
| 4 | |
| 5 | """Unittest for crosperf.""" |
| 6 | import atexit |
| 7 | import os |
| 8 | import optparse |
| 9 | import StringIO |
| 10 | |
| 11 | |
| 12 | import mock |
| 13 | import unittest |
| 14 | |
| 15 | import crosperf |
| 16 | import settings_factory |
| 17 | import experiment_file |
| 18 | import experiment_runner |
| 19 | |
| 20 | from help import Help |
| 21 | |
Caroline Tice | 7057cf6 | 2015-12-10 12:09:40 -0800 | [diff] [blame^] | 22 | from cros_utils import command_executer |
| 23 | from cros_utils import logger |
cmtice | 6367e17 | 2014-06-17 16:30:45 -0700 | [diff] [blame] | 24 | |
| 25 | EXPERIMENT_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 | |
| 43 | class 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 Tice | 7057cf6 | 2015-12-10 12:09:40 -0800 | [diff] [blame^] | 63 | self.assertEqual(len(options_after), 29) |
cmtice | 6367e17 | 2014-06-17 16:30:45 -0700 | [diff] [blame] | 64 | |
| 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 Tice | 7057cf6 | 2015-12-10 12:09:40 -0800 | [diff] [blame^] | 81 | self.assertEqual(len(settings.fields), 25) |
cmtice | 6367e17 | 2014-06-17 16:30:45 -0700 | [diff] [blame] | 82 | 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 | |
| 89 | if __name__ == "__main__": |
| 90 | unittest.main() |