blob: 7e47508a283e3eba689ffdab07c7b3ce30fd761e [file] [log] [blame]
Xixuan Wu51bb7102019-03-18 14:51:44 -07001# Copyright 2018 The Chromium OS Authors. All rights reserved.
Xixuan Wuabbaa4c2017-08-23 17:31:49 -07002# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
Xixuan Wu51bb7102019-03-18 14:51:44 -07005"""Module for task config reader unittests."""
Xixuan Wu5ff0fac2019-01-07 10:06:35 -08006# pylint: disable=g-missing-super-call
Xixuan Wuabbaa4c2017-08-23 17:31:49 -07007
8import unittest
9
10import config_reader
Xixuan Wu244e0ec2018-05-23 14:49:55 -070011
Xixuan Wuabbaa4c2017-08-23 17:31:49 -070012
13class LabReaderTestCase(unittest.TestCase):
14
15 def setUp(self):
16 self.config = config_reader.ConfigReader(None)
Xixuan Wu26d06e02017-09-20 14:50:28 -070017 self.config.add_section(config_reader.ANDROID_SETTINGS)
Xixuan Wu6fb16272017-10-19 13:16:00 -070018 self.config.add_section(config_reader.CROS_SETTINGS)
Xixuan Wuabbaa4c2017-08-23 17:31:49 -070019 self.config.add_section(config_reader.RELEASED_RO_BUILDS)
20
21 def testGetAndroidBoardList(self):
22 """Ensure android board list can be correctly fetched."""
Xixuan Wu26d06e02017-09-20 14:50:28 -070023 self.config.set(config_reader.ANDROID_SETTINGS, 'board_list',
24 '\nabox_edge,\nandroid-angler-1,\nangler-6')
Xixuan Wuabbaa4c2017-08-23 17:31:49 -070025 lab_config = config_reader.LabConfig(self.config)
26 self.assertEqual(lab_config.get_android_board_list(),
27 set(['abox_edge', 'android-angler', 'angler']))
28
29 def testGetInvalidAndroidBoardListEntry(self):
30 """Ensure ValueError is raised if no valid board list entry."""
Xixuan Wu26d06e02017-09-20 14:50:28 -070031 self.config.set(config_reader.ANDROID_SETTINGS, 'invalid_board_list',
32 '\nabox_edge,\nandroid-angler-1,\nangler-6')
Xixuan Wuabbaa4c2017-08-23 17:31:49 -070033 lab_config = config_reader.LabConfig(self.config)
34 self.assertRaises(ValueError, lab_config.get_android_board_list)
35
36 def testGetEmptyAndroidBoardListEntry(self):
37 """Ensure ValueError is raised if no android board list is found."""
38 lab_config = config_reader.LabConfig(self.config)
39 self.assertRaises(ValueError, lab_config.get_android_board_list)
40
Xixuan Wu6fb16272017-10-19 13:16:00 -070041 def testGetCrOSBoardList(self):
42 """Ensure android board list can be correctly fetched."""
43 self.config.set(config_reader.CROS_SETTINGS, 'board_list',
44 '\nlink,\nandroid-angler-1,\nangler-6')
45 self.config.set(config_reader.ANDROID_SETTINGS, 'board_list',
46 '\nandroid-angler-1,\nangler-6')
47 lab_config = config_reader.LabConfig(self.config)
48 self.assertEqual(lab_config.get_cros_board_list(),
49 set(['link']))
50
Xixuan Wuabbaa4c2017-08-23 17:31:49 -070051 def testGetFirmwareROBuildList(self):
52 """Ensure firmware ro build can be successfully found."""
53 self.config.set(config_reader.RELEASED_RO_BUILDS, 'link', 'firmware')
54 lab_config = config_reader.LabConfig(self.config)
55 self.assertEqual(lab_config.get_firmware_ro_build_list('link'),
56 'firmware')
57
58 def testGetEmptyFirmwareROBuildList(self):
59 """Ensure ValueError is raised if no firmware ro build is found."""
60 lab_config = config_reader.LabConfig(self.config)
61 self.assertRaises(ValueError,
62 lab_config.get_firmware_ro_build_list, 'link')
63
C Shapiro7f24a002017-12-05 14:25:09 -070064 def testGetCrOSModelMap(self):
65 """Ensure cros_model_map can be correctly fetched."""
66 self.config.set(config_reader.CROS_SETTINGS, 'model_list',
67 '\ncoral_astronaut,\ncoral_robo360')
68 lab_config = config_reader.LabConfig(self.config)
69 result = lab_config.get_cros_model_map()
70 self.assertEqual(len(result), 1)
71 self.assertEqual(result['coral'], ['astronaut', 'robo360'])
72
Xixuan Wuf4a4c882019-03-15 14:48:26 -070073 def testGetEmptyCrOSModelMap(self):
74 """Ensure cros_model_map can be correctly fetched."""
75 lab_config = config_reader.LabConfig(self.config)
76 self.assertEqual(lab_config.get_cros_model_map(), {})
77
78
79class MigrationReaderTestCase(unittest.TestCase):
80
81 def setUp(self):
82 self.config = config_reader.ConfigReader(None)
83 self.config.add_section(config_reader.SKYLAB_SETTINGS)
84
Xixuan Wubb74a372018-08-21 17:37:08 -070085 def testGetSkylabBoardList(self):
86 """Ensure skylab_board_list can be correctly fetched."""
Xixuan Wuf4a4c882019-03-15 14:48:26 -070087 self.config.set(config_reader.SKYLAB_SETTINGS, 'board_list',
Xixuan Wubb74a372018-08-21 17:37:08 -070088 '\nnyan_blaze,\nreef')
Xixuan Wuf4a4c882019-03-15 14:48:26 -070089 lab_config = config_reader.MigrationConfig(self.config)
Xixuan Wubb74a372018-08-21 17:37:08 -070090 result = lab_config.get_skylab_board_list()
91 self.assertEqual(len(result), 2)
92 self.assertIn('nyan_blaze', result)
93 self.assertIn('reef', result)
94
Xixuan Wu446b8ad2018-08-23 11:25:43 -070095 def testGetSkylabSuiteList(self):
96 """Ensure skylab_suite_list can be correctly fetched."""
Xixuan Wuf4a4c882019-03-15 14:48:26 -070097 self.config.set(config_reader.SKYLAB_SETTINGS, 'suite_list',
Xixuan Wu446b8ad2018-08-23 11:25:43 -070098 '\nent-nightly,\nent-perbuild')
Xixuan Wuf4a4c882019-03-15 14:48:26 -070099 lab_config = config_reader.MigrationConfig(self.config)
Xixuan Wu446b8ad2018-08-23 11:25:43 -0700100 result = lab_config.get_skylab_suite_list()
101 self.assertEqual(len(result), 2)
102 self.assertIn('ent-nightly', result)
103 self.assertIn('ent-perbuild', result)
104
Xixuan Wu5ff0fac2019-01-07 10:06:35 -0800105 def testGetSkylabModelMap(self):
106 """Ensure skylab_board_list can be correctly fetched."""
Xixuan Wuf4a4c882019-03-15 14:48:26 -0700107 self.config.set(config_reader.SKYLAB_SETTINGS, 'model_list',
Xixuan Wu5ff0fac2019-01-07 10:06:35 -0800108 '\ncoral_lava,\ncoral_santa')
Xixuan Wuf4a4c882019-03-15 14:48:26 -0700109 lab_config = config_reader.MigrationConfig(self.config)
Xixuan Wu5ff0fac2019-01-07 10:06:35 -0800110 result = lab_config.get_skylab_model_map()
111 self.assertEqual(len(result), 1)
112 self.assertEqual(result['coral'], ['lava', 'santa'])
113
Xixuan Wuabbaa4c2017-08-23 17:31:49 -0700114
115if __name__ == '__main__':
116 unittest.main()