experiment_file_unittest.py revision 98a53692fb946a8eac46e3e82257f540d1350c18
1#!/usr/bin/python 2 3# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 4# Use of this source code is governed by a BSD-style license that can be 5# found in the LICENSE file. 6 7import StringIO 8import unittest 9from experiment_file import ExperimentFile 10 11EXPERIMENT_FILE_1 = """ 12 board: x86-alex 13 remote: chromeos-alex3 14 perf_args: record -a -e cycles 15 benchmark: PageCycler { 16 iterations: 3 17 } 18 19 image1 { 20 chromeos_image: /usr/local/google/cros_image1.bin 21 } 22 23 image2 { 24 remote: chromeos-lumpy1 25 chromeos_image: /usr/local/google/cros_image2.bin 26 } 27 """ 28 29EXPERIMENT_FILE_2 = """ 30 board: x86-alex 31 remote: chromeos-alex3 32 iterations: 3 33 34 benchmark: PageCycler { 35 } 36 37 benchmark: AndroidBench { 38 iterations: 2 39 } 40 41 image1 { 42 chromeos_image:/usr/local/google/cros_image1.bin 43 } 44 45 image2 { 46 chromeos_image: /usr/local/google/cros_image2.bin 47 } 48 """ 49 50EXPERIMENT_FILE_3 = """ 51 board: x86-alex 52 remote: chromeos-alex3 53 iterations: 3 54 55 benchmark: PageCycler { 56 } 57 58 image1 { 59 chromeos_image:/usr/local/google/cros_image1.bin 60 } 61 62 image1 { 63 chromeos_image: /usr/local/google/cros_image2.bin 64 } 65 """ 66 67 68class ExperimentFileTest(unittest.TestCase): 69 def testLoadExperimentFile1(self): 70 input_file = StringIO.StringIO(EXPERIMENT_FILE_1) 71 experiment_file = ExperimentFile(input_file) 72 global_settings = experiment_file.GetGlobalSettings() 73 self.assertEqual(global_settings.GetField("remote"), ["chromeos-alex3"]) 74 self.assertEqual(global_settings.GetField("perf_args"), 75 "record -a -e cycles") 76 benchmark_settings = experiment_file.GetSettings("benchmark") 77 self.assertEqual(len(benchmark_settings), 1) 78 self.assertEqual(benchmark_settings[0].name, "PageCycler") 79 self.assertEqual(benchmark_settings[0].GetField("iterations"), 3) 80 81 label_settings = experiment_file.GetSettings("label") 82 self.assertEqual(len(label_settings), 2) 83 self.assertEqual(label_settings[0].name, "image1") 84 self.assertEqual(label_settings[0].GetField("chromeos_image"), 85 "/usr/local/google/cros_image1.bin") 86 self.assertEqual(label_settings[1].GetField("remote"), ["chromeos-lumpy1"]) 87 self.assertEqual(label_settings[0].GetField("remote"), ["chromeos-alex3"]) 88 89 def testOverrideSetting(self): 90 input_file = StringIO.StringIO(EXPERIMENT_FILE_2) 91 experiment_file = ExperimentFile(input_file) 92 global_settings = experiment_file.GetGlobalSettings() 93 self.assertEqual(global_settings.GetField("remote"), ["chromeos-alex3"]) 94 95 benchmark_settings = experiment_file.GetSettings("benchmark") 96 self.assertEqual(len(benchmark_settings), 2) 97 self.assertEqual(benchmark_settings[0].name, "PageCycler") 98 self.assertEqual(benchmark_settings[0].GetField("iterations"), 3) 99 self.assertEqual(benchmark_settings[1].name, "AndroidBench") 100 self.assertEqual(benchmark_settings[1].GetField("iterations"), 2) 101 102 def testDuplicateLabel(self): 103 input_file = StringIO.StringIO(EXPERIMENT_FILE_3) 104 self.assertRaises(Exception, ExperimentFile, input_file) 105 106 107if __name__ == "__main__": 108 unittest.main() 109