Home | History | Annotate | Download | only in cli
      1 # pylint: disable-msg=C0111
      2 #!/usr/bin/python
      3 #
      4 # Copyright 2008 Google Inc. All Rights Reserved.
      5 
      6 """Tests for label."""
      7 
      8 import unittest
      9 
     10 import common
     11 from autotest_lib.cli import cli_mock
     12 
     13 
     14 class 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 
     87 class 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 
    121 class 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 
    130 class 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 
    140 class 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 
    150 if __name__ == '__main__':
    151     unittest.main()
    152