| # Copyright 2018 - The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| """Tests for list.""" |
| import unittest |
| |
| import mock |
| |
| from acloud import errors |
| from acloud.internal.lib import driver_test_lib |
| from acloud.list import list as list_instance |
| |
| |
| class InstanceObject(object): |
| """Mock to store data of instance.""" |
| |
| def __init__(self, name): |
| self.name = name |
| |
| |
| class ListTest(driver_test_lib.BaseDriverTest): |
| """Test list.""" |
| |
| def testGetInstancesFromInstanceNames(self): |
| """test get instances from instance names.""" |
| cfg = mock.MagicMock() |
| instance_names = ["alive_instance1", "alive_local_instance"] |
| |
| alive_instance1 = InstanceObject("alive_instance1") |
| alive_instance2 = InstanceObject("alive_instance2") |
| alive_local_instance = InstanceObject("alive_local_instance") |
| |
| instance_alive = [alive_instance1, alive_instance2, alive_local_instance] |
| self.Patch(list_instance, "GetInstances", return_value=instance_alive) |
| instances_list = list_instance.GetInstancesFromInstanceNames(cfg, instance_names) |
| instances_name_in_list = [instance_object.name for instance_object in instances_list] |
| self.assertEqual(instances_name_in_list.sort(), instance_names.sort()) |
| |
| instance_names = ["alive_instance1", "alive_local_instance", "alive_local_instance"] |
| instances_list = list_instance.GetInstancesFromInstanceNames(cfg, instance_names) |
| instances_name_in_list = [instance_object.name for instance_object in instances_list] |
| self.assertEqual(instances_name_in_list.sort(), instance_names.sort()) |
| |
| # test get instance from instance name error with invalid input. |
| instance_names = ["miss2_local_instance", "alive_instance1"] |
| miss_instance_names = ["miss2_local_instance"] |
| self.assertRaisesRegexp( |
| errors.NoInstancesFound, |
| "Did not find the following instances: %s" % ' '.join(miss_instance_names), |
| list_instance.GetInstancesFromInstanceNames, |
| cfg=cfg, |
| instance_names=instance_names) |
| |
| |
| if __name__ == "__main__": |
| unittest.main() |