| #!/usr/bin/env vpython3 |
| # Copyright 2024 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os |
| import sys |
| import unittest |
| |
| from unittest.mock import patch, mock_open |
| |
| sys.path.append( |
| os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..'))) |
| from pylib.local.emulator import avd |
| from pylib.local.emulator.proto import avd_pb2 |
| |
| |
| def CreateAvdSettings(): |
| # python generated codes are simplified since Protobuf v3.20.0 and cause |
| # pylint error: https://github.com/protocolbuffers/protobuf/issues/9730 |
| # pylint: disable=no-member |
| return avd_pb2.AvdSettings() |
| |
| |
| class DebugTagsTest(unittest.TestCase): |
| |
| def testOrdering(self): |
| self.assertEqual(['a', 'b', 'c'], avd.ProcessDebugTags('c,b,a')) |
| self.assertEqual(['a', 'd', '-b', '-c'], avd.ProcessDebugTags('-c,-b,d,a')) |
| |
| def testOrderingWithDefaultTags(self): |
| default_debug_tags = ['a', '-d', '-c'] |
| tags = avd.ProcessDebugTags('c,b,-e', default_debug_tags=default_debug_tags) |
| self.assertEqual(['a', 'b', 'c', '-c', '-d', '-e'], tags) |
| |
| |
| class AvdCreateTest(unittest.TestCase): |
| |
| _CONFIG = """ |
| avd_settings { |
| screen { |
| density: 480 |
| height: 1920 |
| width: 1080 |
| } |
| } |
| """ |
| |
| def setUp(self): |
| with patch('builtins.open', mock_open(read_data=self._CONFIG)): |
| self.avd_config = avd.AvdConfig('/path/to/creation.textpb') |
| |
| def testGetAvdSettingsWithoutVariants(self): |
| avd_settings = self.avd_config.GetAvdSettings() |
| self.assertEqual(avd_settings.screen.density, 480) |
| self.assertEqual(avd_settings.screen.height, 1920) |
| self.assertEqual(avd_settings.screen.width, 1080) |
| |
| with self.assertRaises(avd.AvdException): |
| self.avd_config.GetAvdSettings('baz') |
| |
| def testGetAvdSettingsWithVariants(self): |
| avd_settings = CreateAvdSettings() |
| avd_settings.avd_properties['disk.dataPartition.size'] = '4G' |
| self.avd_config.avd_variants['foo'].CopyFrom(avd_settings) |
| avd_settings.avd_properties['disk.dataPartition.size'] = '8G' |
| self.avd_config.avd_variants['bar'].CopyFrom(avd_settings) |
| |
| avd_settings_foo = self.avd_config.GetAvdSettings('foo') |
| avd_settings_bar = self.avd_config.GetAvdSettings('bar') |
| |
| # The value of screen should be the same. |
| self.assertEqual(avd_settings_foo.screen.density, 480) |
| self.assertEqual(avd_settings_foo.screen.height, 1920) |
| self.assertEqual(avd_settings_foo.screen.width, 1080) |
| |
| self.assertEqual(avd_settings_bar.screen.density, 480) |
| self.assertEqual(avd_settings_bar.screen.height, 1920) |
| self.assertEqual(avd_settings_bar.screen.width, 1080) |
| |
| # The values of the avd_properties should be different. |
| self.assertEqual(avd_settings_foo.avd_properties['disk.dataPartition.size'], |
| '4G') |
| self.assertEqual(avd_settings_bar.avd_properties['disk.dataPartition.size'], |
| '8G') |
| |
| # The base avd_settings should not be changed. |
| self.assertEqual(self.avd_config.avd_settings.screen.density, 480) |
| self.assertEqual(self.avd_config.avd_settings.screen.height, 1920) |
| self.assertEqual(self.avd_config.avd_settings.screen.width, 1080) |
| self.assertNotIn('disk.dataPartition.size', |
| self.avd_config.avd_settings.avd_properties) |
| |
| # Non-exist variant |
| with self.assertRaises(avd.AvdException): |
| self.avd_config.GetAvdSettings('baz') |
| |
| def testGetMetadataWithoutVariants(self): |
| metadata = self.avd_config.GetMetadata() |
| self.assertIn('avd_proto_path', metadata) |
| self.assertIn('is_available', metadata) |
| self.assertNotIn('avd_variants', metadata) |
| |
| def testGetMetadataWithVariants(self): |
| avd_settings = CreateAvdSettings() |
| avd_settings.avd_properties['disk.dataPartition.size'] = '4G' |
| self.avd_config.avd_variants['foo'].CopyFrom(avd_settings) |
| avd_settings.avd_properties['disk.dataPartition.size'] = '8G' |
| self.avd_config.avd_variants['bar'].CopyFrom(avd_settings) |
| |
| metadata = self.avd_config.GetMetadata() |
| self.assertIn('avd_proto_path', metadata) |
| self.assertIn('is_available', metadata) |
| self.assertIn('avd_variants', metadata) |
| self.assertEqual(['bar', 'foo'], metadata['avd_variants']) |
| |
| |
| if __name__ == "__main__": |
| unittest.main() |