Home | History | Annotate | Download | only in cli
      1 #!/usr/bin/env python2
      2 #
      3 # Copyright 2008 Google Inc. All Rights Reserved.
      4 
      5 """Tests for shard."""
      6 
      7 import unittest
      8 
      9 import common
     10 from autotest_lib.cli import cli_mock
     11 
     12 
     13 class shard_list_unittest(cli_mock.cli_unittest):
     14     values = [{'hostname': u'shard1', u'id': 1, 'labels': ['board:lumpy']},
     15               {'hostname': u'shard2', u'id': 3, 'labels': ['board:daisy']},
     16               {'hostname': u'shard3', u'id': 5, 'labels': ['board:stumpy']},
     17               {'hostname': u'shard4', u'id': 6, 'labels': ['board:link']}]
     18 
     19 
     20     def test_shard_list(self):
     21         self.run_cmd(argv=['atest', 'shard', 'list'],
     22                      rpcs=[('get_shards', {}, True, self.values)],
     23                      out_words_ok=['shard1', 'shard2', 'shard3', 'shard4'],
     24                      out_words_no=['plat0', 'plat1'])
     25 
     26 
     27 class shard_create_unittest(cli_mock.cli_unittest):
     28     def test_execute_create_two_shards(self):
     29         self.run_cmd(argv=['atest', 'shard', 'create',
     30                            '-l', 'board:lumpy', 'shard0'],
     31                      rpcs=[('add_shard',
     32                             {'hostname': 'shard0', 'labels': 'board:lumpy'},
     33                             True, 42)],
     34                      out_words_ok=['Created', 'shard0'])
     35 
     36 
     37     def test_execute_create_two_shards_bad(self):
     38         self.run_cmd(argv=['atest', 'shard', 'create',
     39                            '-l', 'board:lumpy', 'shard0'],
     40                      rpcs=[('add_shard',
     41                             {'hostname': 'shard0', 'labels': 'board:lumpy'},
     42                             False,
     43                             '''ValidationError: {'name':
     44                             'This value must be unique (shard1)'}''')],
     45                      out_words_no=['shard0'],
     46                      err_words_ok=['shard0', 'ValidationError'])
     47 
     48 
     49 class shard_add_boards_unittest(cli_mock.cli_unittest):
     50     def test_execute_add_boards_to_shard(self):
     51         self.run_cmd(argv=['atest', 'shard', 'add_boards',
     52                            '-l', 'board:lumpy', 'shard0'],
     53                      rpcs=[('add_board_to_shard',
     54                            {'hostname': 'shard0', 'labels':'board:lumpy'},
     55                             True, 42)],
     56                      out_words_ok=['Added boards', 'board:lumpy', 'shard0'])
     57 
     58 
     59     def test_execute_add_boards_to_shard_bad(self):
     60         self.run_cmd(argv=['atest', 'shard', 'add_boards',
     61                            '-l', 'board:lumpy', 'shard0'],
     62                      rpcs=[('add_board_to_shard',
     63                            {'hostname': 'shard0', 'labels':'board:lumpy'},
     64                             False,
     65                             '''RPCException: board:lumpy is already on shard
     66                             shard0''')],
     67                      out_words_no=['shard0'],
     68                      err_words_ok=['shard0', 'RPCException'])
     69 
     70 
     71     def test_execute_add_boards_to_shard_fail_when_shard_nonexist(self):
     72         self.run_cmd(argv=['atest', 'shard', 'add_boards',
     73                            '-l', 'board:lumpy', 'shard0'],
     74                      rpcs=[('add_board_to_shard',
     75                            {'hostname': 'shard0', 'labels':'board:lumpy'},
     76                             False,
     77                             '''DoesNotExist: Shard matching query does not
     78                             exist. Lookup parameters were {'hostname':
     79                             'shard0'}''')],
     80                      out_words_no=['shard0'],
     81                      err_words_ok=['shard0', 'DoesNotExist:'])
     82 
     83 
     84 class shard_delete_unittest(cli_mock.cli_unittest):
     85     def test_execute_delete_shards(self):
     86         self.run_cmd(argv=['atest', 'shard', 'delete',
     87                            'shard0', 'shard1', '--no-confirmation'],
     88                      rpcs=[('delete_shard', {'hostname': 'shard0'}, True, None),
     89                            ('delete_shard', {'hostname': 'shard1'}, True, None)
     90                            ],
     91                      out_words_ok=['Deleted', 'shard0', 'shard1'])
     92 
     93 
     94 if __name__ == '__main__':
     95     unittest.main()
     96