# pylint: disable-msg=C0111 #!/usr/bin/python # # Copyright 2008 Google Inc. All Rights Reserved. """Tests for label.""" import unittest import common from autotest_lib.cli import cli_mock class label_list_unittest(cli_mock.cli_unittest): values = [{u'id': 180, # Valid label u'platform': False, u'name': u'label0', u'invalid': False, u'kernel_config': u'', u'only_if_needed': False}, {u'id': 338, # Valid label u'platform': False, u'name': u'label1', u'invalid': False, u'kernel_config': u'', u'only_if_needed': False}, {u'id': 340, # Invalid label u'platform': False, u'name': u'label2', u'invalid': True, u'kernel_config': u'', u'only_if_needed': False}, {u'id': 350, # Valid platform u'platform': True, u'name': u'plat0', u'invalid': False, u'kernel_config': u'', u'only_if_needed': False}, {u'id': 420, # Invalid platform u'platform': True, u'name': u'plat1', u'invalid': True, u'kernel_config': u'', u'only_if_needed': False}] def test_label_list_labels_only(self): self.run_cmd(argv=['atest', 'label', 'list', '--ignore_site_file'], rpcs=[('get_labels', {}, True, self.values)], out_words_ok=['label0', 'label1', 'label2'], out_words_no=['plat0', 'plat1']) def test_label_list_labels_only_valid(self): self.run_cmd(argv=['atest', 'label', 'list', '-d', '--ignore_site_file'], rpcs=[('get_labels', {}, True, self.values)], out_words_ok=['label0', 'label1'], out_words_no=['label2', 'plat0', 'plat1']) def test_label_list_labels_and_platforms(self): self.run_cmd(argv=['atest', 'label', 'list', '--all', '--ignore_site_file'], rpcs=[('get_labels', {}, True, self.values)], out_words_ok=['label0', 'label1', 'label2', 'plat0', 'plat1']) def test_label_list_platforms_only(self): self.run_cmd(argv=['atest', 'label', 'list', '-t', '--ignore_site_file'], rpcs=[('get_labels', {}, True, self.values)], out_words_ok=['plat0', 'plat1'], out_words_no=['label0', 'label1', 'label2']) def test_label_list_platforms_only_valid(self): self.run_cmd(argv=['atest', 'label', 'list', '-t', '--valid-only', '--ignore_site_file'], rpcs=[('get_labels', {}, True, self.values)], out_words_ok=['plat0'], out_words_no=['label0', 'label1', 'label2', 'plat1']) class label_create_unittest(cli_mock.cli_unittest): def test_execute_create_two_labels(self): self.run_cmd(argv=['atest', 'label', 'create', 'label0', 'label1', '--ignore_site_file'], rpcs=[('add_label', {'name': 'label0', 'platform': False, 'only_if_needed': False}, True, 42), ('add_label', {'name': 'label1', 'platform': False, 'only_if_needed': False}, True, 43)], out_words_ok=['Created', 'label0', 'label1']) def test_execute_create_two_labels_bad(self): self.run_cmd(argv=['atest', 'label', 'create', 'label0', 'label1', '--ignore_site_file'], rpcs=[('add_label', {'name': 'label0', 'platform': False, 'only_if_needed': False}, True, 3), ('add_label', {'name': 'label1', 'platform': False, 'only_if_needed': False}, False, '''ValidationError: {'name': 'This value must be unique (label0)'}''')], out_words_ok=['Created', 'label0'], out_words_no=['label1'], err_words_ok=['label1', 'ValidationError']) class label_delete_unittest(cli_mock.cli_unittest): def test_execute_delete_labels(self): self.run_cmd(argv=['atest', 'label', 'delete', 'label0', 'label1', '--ignore_site_file', '--no-confirmation'], rpcs=[('delete_label', {'id': 'label0'}, True, None), ('delete_label', {'id': 'label1'}, True, None)], out_words_ok=['Deleted', 'label0', 'label1']) class label_add_unittest(cli_mock.cli_unittest): def test_execute_add_labels_to_hosts(self): self.run_cmd(argv=['atest', 'label', 'add', 'label0', '--machine', 'host0,host1', '--ignore_site_file'], rpcs=[('label_add_hosts', {'id': 'label0', 'hosts': ['host1', 'host0']}, True, None)], out_words_ok=['Added', 'label0', 'host0', 'host1']) class label_remove_unittest(cli_mock.cli_unittest): def test_execute_remove_labels_from_hosts(self): self.run_cmd(argv=['atest', 'label', 'remove', 'label0', '--machine', 'host0,host1', '--ignore_site_file'], rpcs=[('label_remove_hosts', {'id': 'label0', 'hosts': ['host1', 'host0']}, True, None)], out_words_ok=['Removed', 'label0', 'host0', 'host1']) if __name__ == '__main__': unittest.main()