blob: 817a340e1299492aa22b20ed449dfb087bab84cf [file] [log] [blame]
mblighbe630eb2008-08-01 16:41:48 +00001#!/usr/bin/python
2#
3# Copyright 2008 Google Inc. All Rights Reserved.
4
5"""Tests for label."""
6
7import unittest, sys, os
8
9import common
10from autotest_lib.cli import cli_mock, topic_common
11
12
13class label_list_unittest(cli_mock.cli_unittest):
14 values = [{u'id': 180, # Valid label
mbligh0887d402009-01-30 00:50:29 +000015 u'platform': False,
mblighbe630eb2008-08-01 16:41:48 +000016 u'name': u'label0',
mbligh0887d402009-01-30 00:50:29 +000017 u'invalid': False,
showard989f25d2008-10-01 11:38:11 +000018 u'kernel_config': u'',
mbligh0887d402009-01-30 00:50:29 +000019 u'only_if_needed': False},
mblighbe630eb2008-08-01 16:41:48 +000020 {u'id': 338, # Valid label
mbligh0887d402009-01-30 00:50:29 +000021 u'platform': False,
mblighbe630eb2008-08-01 16:41:48 +000022 u'name': u'label1',
mbligh0887d402009-01-30 00:50:29 +000023 u'invalid': False,
showard989f25d2008-10-01 11:38:11 +000024 u'kernel_config': u'',
mbligh0887d402009-01-30 00:50:29 +000025 u'only_if_needed': False},
mblighbe630eb2008-08-01 16:41:48 +000026 {u'id': 340, # Invalid label
mbligh0887d402009-01-30 00:50:29 +000027 u'platform': False,
mblighbe630eb2008-08-01 16:41:48 +000028 u'name': u'label2',
mbligh0887d402009-01-30 00:50:29 +000029 u'invalid': True,
showard989f25d2008-10-01 11:38:11 +000030 u'kernel_config': u'',
mbligh0887d402009-01-30 00:50:29 +000031 u'only_if_needed': False},
mblighbe630eb2008-08-01 16:41:48 +000032 {u'id': 350, # Valid platform
mbligh0887d402009-01-30 00:50:29 +000033 u'platform': True,
mblighbe630eb2008-08-01 16:41:48 +000034 u'name': u'plat0',
mbligh0887d402009-01-30 00:50:29 +000035 u'invalid': False,
showard989f25d2008-10-01 11:38:11 +000036 u'kernel_config': u'',
mbligh0887d402009-01-30 00:50:29 +000037 u'only_if_needed': False},
mblighbe630eb2008-08-01 16:41:48 +000038 {u'id': 420, # Invalid platform
mbligh0887d402009-01-30 00:50:29 +000039 u'platform': True,
mblighbe630eb2008-08-01 16:41:48 +000040 u'name': u'plat1',
mbligh0887d402009-01-30 00:50:29 +000041 u'invalid': True,
showard989f25d2008-10-01 11:38:11 +000042 u'kernel_config': u'',
mbligh0887d402009-01-30 00:50:29 +000043 u'only_if_needed': False}]
mblighbe630eb2008-08-01 16:41:48 +000044
45
46 def test_label_list_labels_only(self):
47 self.run_cmd(argv=['atest', 'label', 'list', '--ignore_site_file'],
48 rpcs=[('get_labels', {}, True, self.values)],
49 out_words_ok=['label0', 'label1', 'label2'],
50 out_words_no=['plat0', 'plat1'])
51
52
53 def test_label_list_labels_only_valid(self):
54 self.run_cmd(argv=['atest', 'label', 'list', '-d',
55 '--ignore_site_file'],
56 rpcs=[('get_labels', {}, True, self.values)],
57 out_words_ok=['label0', 'label1'],
58 out_words_no=['label2', 'plat0', 'plat1'])
59
60
61 def test_label_list_labels_and_platforms(self):
62 self.run_cmd(argv=['atest', 'label', 'list', '--all',
63 '--ignore_site_file'],
64 rpcs=[('get_labels', {}, True, self.values)],
65 out_words_ok=['label0', 'label1', 'label2',
66 'plat0', 'plat1'])
67
68
69 def test_label_list_platforms_only(self):
70 self.run_cmd(argv=['atest', 'label', 'list', '-t',
71 '--ignore_site_file'],
72 rpcs=[('get_labels', {}, True, self.values)],
73 out_words_ok=['plat0', 'plat1'],
74 out_words_no=['label0', 'label1', 'label2'])
75
76
77 def test_label_list_platforms_only_valid(self):
78 self.run_cmd(argv=['atest', 'label', 'list',
79 '-t', '--valid-only', '--ignore_site_file'],
80 rpcs=[('get_labels', {}, True, self.values)],
81 out_words_ok=['plat0'],
82 out_words_no=['label0', 'label1', 'label2',
83 'plat1'])
84
85
86class label_create_unittest(cli_mock.cli_unittest):
87 def test_execute_create_two_labels(self):
88 self.run_cmd(argv=['atest', 'label', 'create', 'label0', 'label1',
89 '--ignore_site_file'],
showard989f25d2008-10-01 11:38:11 +000090 rpcs=[('add_label',
91 {'name': 'label0', 'platform': False,
92 'only_if_needed': False},
mblighbe630eb2008-08-01 16:41:48 +000093 True, 42),
showard989f25d2008-10-01 11:38:11 +000094 ('add_label',
95 {'name': 'label1', 'platform': False,
96 'only_if_needed': False},
mblighbe630eb2008-08-01 16:41:48 +000097 True, 43)],
98 out_words_ok=['Created', 'label0', 'label1'])
99
100
101 def test_execute_create_two_labels_bad(self):
102 self.run_cmd(argv=['atest', 'label', 'create', 'label0', 'label1',
103 '--ignore_site_file'],
showard989f25d2008-10-01 11:38:11 +0000104 rpcs=[('add_label',
105 {'name': 'label0', 'platform': False,
106 'only_if_needed': False},
mblighbe630eb2008-08-01 16:41:48 +0000107 True, 3),
showard989f25d2008-10-01 11:38:11 +0000108 ('add_label',
109 {'name': 'label1', 'platform': False,
110 'only_if_needed': False},
mblighbe630eb2008-08-01 16:41:48 +0000111 False,
mbligh1ef218d2009-08-03 16:57:56 +0000112 '''ValidationError: {'name':
mblighbe630eb2008-08-01 16:41:48 +0000113 'This value must be unique (label0)'}''')],
114 out_words_ok=['Created', 'label0'],
115 out_words_no=['label1'],
116 err_words_ok=['label1', 'ValidationError'])
117
118
119
120class label_delete_unittest(cli_mock.cli_unittest):
121 def test_execute_delete_labels(self):
122 self.run_cmd(argv=['atest', 'label', 'delete', 'label0', 'label1',
123 '--ignore_site_file'],
124 rpcs=[('delete_label', {'id': 'label0'}, True, None),
125 ('delete_label', {'id': 'label1'}, True, None)],
126 out_words_ok=['Deleted', 'label0', 'label1'])
127
128
129class label_add_unittest(cli_mock.cli_unittest):
130 def test_execute_add_labels_to_hosts(self):
131 self.run_cmd(argv=['atest', 'label', 'add', 'label0',
132 '--machine', 'host0,host1', '--ignore_site_file'],
133 rpcs=[('label_add_hosts', {'id': 'label0',
134 'hosts': ['host1', 'host0']},
135 True, None)],
136 out_words_ok=['Added', 'label0', 'host0', 'host1'])
137
138
139class label_remove_unittest(cli_mock.cli_unittest):
140 def test_execute_remove_labels_from_hosts(self):
141 self.run_cmd(argv=['atest', 'label', 'remove', 'label0',
142 '--machine', 'host0,host1', '--ignore_site_file'],
143 rpcs=[('label_remove_hosts', {'id': 'label0',
144 'hosts': ['host1', 'host0']},
145 True, None)],
146 out_words_ok=['Removed', 'label0', 'host0', 'host1'])
147
148
149if __name__ == '__main__':
150 unittest.main()