aboutsummaryrefslogtreecommitdiff
path: root/crosperf/crosperf_unittest.py
blob: 3af3507f60405f77f613c346cb4377f0ed428e59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/python
#
# Copyright 2014 Google Inc. All Rights Reserved.

"""Unittest for crosperf."""
import atexit
import os
import optparse
import StringIO


import mock
import unittest

import crosperf
import settings_factory
import experiment_file
import experiment_runner

from help import Help

from utils import command_executer
from utils import logger

EXPERIMENT_FILE_1 = """
  board: x86-alex
  remote: chromeos-alex3
  perf_args: record -a -e cycles
  benchmark: PageCycler {
    iterations: 3
  }

  image1 {
    chromeos_image: /usr/local/google/cros_image1.bin
  }

  image2 {
    remote: chromeos-lumpy1
    chromeos_image: /usr/local/google/cros_image2.bin
  }
  """

class CrosperfTest(unittest.TestCase):

  def setUp(self):
    input_file = StringIO.StringIO(EXPERIMENT_FILE_1)
    self.exp_file = experiment_file.ExperimentFile(input_file)

  def test_setup_parser_options(self):

    parser = optparse.OptionParser(usage=Help().GetUsage(),
                                   description=Help().GetHelp(),
                                   formatter=crosperf.MyIndentedHelpFormatter(),
                                   version="%prog 3.0")
    parser.add_option("-l", "--log_dir",
                      dest="log_dir",
                      default="",
                      help="The log_dir, default is under <crosperf_logs>/logs")
    options_before = parser._get_all_options()
    self.assertEqual(len(options_before), 3)
    crosperf.SetupParserOptions(parser)
    options_after = parser._get_all_options()
    self.assertEqual(len(options_after), 26)


  def test_convert_options_to_settings(self):
    parser = optparse.OptionParser(usage=Help().GetUsage(),
                                   description=Help().GetHelp(),
                                   formatter=crosperf.MyIndentedHelpFormatter(),
                                   version="%prog 3.0")
    parser.add_option("-l", "--log_dir",
                      dest="log_dir",
                      default="",
                      help="The log_dir, default is under <crosperf_logs>/logs")
    crosperf.SetupParserOptions(parser)
    argv = ['crosperf/crosperf.py', 'temp.exp', '--rerun=True']
    options, args = parser.parse_args(argv)
    settings = crosperf.ConvertOptionsToSettings(options)
    self.assertIsNotNone(settings)
    self.assertIsInstance(settings, settings_factory.GlobalSettings)
    self.assertEqual(len(settings.fields), 22)
    self.assertTrue(settings.GetField('rerun'))
    argv = ['crosperf/crosperf.py', 'temp.exp']
    options, args = parser.parse_args(argv)
    settings = crosperf.ConvertOptionsToSettings(options)
    self.assertFalse(settings.GetField('rerun'))


if __name__ == "__main__":
  unittest.main()