1# pylint: disable-msg=C0111 2#!/usr/bin/python 3# 4# Copyright 2008 Google Inc. All Rights Reserved. 5 6"""Tests for label.""" 7 8import unittest 9 10import common 11from autotest_lib.cli import cli_mock 12 13 14class label_list_unittest(cli_mock.cli_unittest): 15 values = [{u'id': 180, # Valid label 16 u'platform': False, 17 u'name': u'label0', 18 u'invalid': False, 19 u'kernel_config': u'', 20 u'only_if_needed': False}, 21 {u'id': 338, # Valid label 22 u'platform': False, 23 u'name': u'label1', 24 u'invalid': False, 25 u'kernel_config': u'', 26 u'only_if_needed': False}, 27 {u'id': 340, # Invalid label 28 u'platform': False, 29 u'name': u'label2', 30 u'invalid': True, 31 u'kernel_config': u'', 32 u'only_if_needed': False}, 33 {u'id': 350, # Valid platform 34 u'platform': True, 35 u'name': u'plat0', 36 u'invalid': False, 37 u'kernel_config': u'', 38 u'only_if_needed': False}, 39 {u'id': 420, # Invalid platform 40 u'platform': True, 41 u'name': u'plat1', 42 u'invalid': True, 43 u'kernel_config': u'', 44 u'only_if_needed': False}] 45 46 47 def test_label_list_labels_only(self): 48 self.run_cmd(argv=['atest', 'label', 'list', '--ignore_site_file'], 49 rpcs=[('get_labels', {}, True, self.values)], 50 out_words_ok=['label0', 'label1', 'label2'], 51 out_words_no=['plat0', 'plat1']) 52 53 54 def test_label_list_labels_only_valid(self): 55 self.run_cmd(argv=['atest', 'label', 'list', '-d', 56 '--ignore_site_file'], 57 rpcs=[('get_labels', {}, True, self.values)], 58 out_words_ok=['label0', 'label1'], 59 out_words_no=['label2', 'plat0', 'plat1']) 60 61 62 def test_label_list_labels_and_platforms(self): 63 self.run_cmd(argv=['atest', 'label', 'list', '--all', 64 '--ignore_site_file'], 65 rpcs=[('get_labels', {}, True, self.values)], 66 out_words_ok=['label0', 'label1', 'label2', 67 'plat0', 'plat1']) 68 69 70 def test_label_list_platforms_only(self): 71 self.run_cmd(argv=['atest', 'label', 'list', '-t', 72 '--ignore_site_file'], 73 rpcs=[('get_labels', {}, True, self.values)], 74 out_words_ok=['plat0', 'plat1'], 75 out_words_no=['label0', 'label1', 'label2']) 76 77 78 def test_label_list_platforms_only_valid(self): 79 self.run_cmd(argv=['atest', 'label', 'list', 80 '-t', '--valid-only', '--ignore_site_file'], 81 rpcs=[('get_labels', {}, True, self.values)], 82 out_words_ok=['plat0'], 83 out_words_no=['label0', 'label1', 'label2', 84 'plat1']) 85 86 87class label_create_unittest(cli_mock.cli_unittest): 88 def test_execute_create_two_labels(self): 89 self.run_cmd(argv=['atest', 'label', 'create', 'label0', 'label1', 90 '--ignore_site_file'], 91 rpcs=[('add_label', 92 {'name': 'label0', 'platform': False, 93 'only_if_needed': False}, 94 True, 42), 95 ('add_label', 96 {'name': 'label1', 'platform': False, 97 'only_if_needed': False}, 98 True, 43)], 99 out_words_ok=['Created', 'label0', 'label1']) 100 101 102 def test_execute_create_two_labels_bad(self): 103 self.run_cmd(argv=['atest', 'label', 'create', 'label0', 'label1', 104 '--ignore_site_file'], 105 rpcs=[('add_label', 106 {'name': 'label0', 'platform': False, 107 'only_if_needed': False}, 108 True, 3), 109 ('add_label', 110 {'name': 'label1', 'platform': False, 111 'only_if_needed': False}, 112 False, 113 '''ValidationError: {'name': 114 'This value must be unique (label0)'}''')], 115 out_words_ok=['Created', 'label0'], 116 out_words_no=['label1'], 117 err_words_ok=['label1', 'ValidationError']) 118 119 120 121class label_delete_unittest(cli_mock.cli_unittest): 122 def test_execute_delete_labels(self): 123 self.run_cmd(argv=['atest', 'label', 'delete', 'label0', 'label1', 124 '--ignore_site_file', '--no-confirmation'], 125 rpcs=[('delete_label', {'id': 'label0'}, True, None), 126 ('delete_label', {'id': 'label1'}, True, None)], 127 out_words_ok=['Deleted', 'label0', 'label1']) 128 129 130class label_add_unittest(cli_mock.cli_unittest): 131 def test_execute_add_labels_to_hosts(self): 132 self.run_cmd(argv=['atest', 'label', 'add', 'label0', 133 '--machine', 'host0,host1', '--ignore_site_file'], 134 rpcs=[('label_add_hosts', {'id': 'label0', 135 'hosts': ['host1', 'host0']}, 136 True, None)], 137 out_words_ok=['Added', 'label0', 'host0', 'host1']) 138 139 140class label_remove_unittest(cli_mock.cli_unittest): 141 def test_execute_remove_labels_from_hosts(self): 142 self.run_cmd(argv=['atest', 'label', 'remove', 'label0', 143 '--machine', 'host0,host1', '--ignore_site_file'], 144 rpcs=[('label_remove_hosts', {'id': 'label0', 145 'hosts': ['host1', 'host0']}, 146 True, None)], 147 out_words_ok=['Removed', 'label0', 'host0', 'host1']) 148 149 150if __name__ == '__main__': 151 unittest.main() 152