#!/usr/bin/env python2 # # Copyright 2008 Google Inc. All Rights Reserved. """Tests for shard.""" import unittest import common from autotest_lib.cli import cli_mock class shard_list_unittest(cli_mock.cli_unittest): values = [{'hostname': u'shard1', u'id': 1, 'labels': ['board:lumpy']}, {'hostname': u'shard2', u'id': 3, 'labels': ['board:daisy']}, {'hostname': u'shard3', u'id': 5, 'labels': ['board:stumpy']}, {'hostname': u'shard4', u'id': 6, 'labels': ['board:link']}] def test_shard_list(self): self.run_cmd(argv=['atest', 'shard', 'list'], rpcs=[('get_shards', {}, True, self.values)], out_words_ok=['shard1', 'shard2', 'shard3', 'shard4'], out_words_no=['plat0', 'plat1']) class shard_create_unittest(cli_mock.cli_unittest): def test_execute_create_two_shards(self): self.run_cmd(argv=['atest', 'shard', 'create', '-l', 'board:lumpy', 'shard0'], rpcs=[('add_shard', {'hostname': 'shard0', 'labels': 'board:lumpy'}, True, 42)], out_words_ok=['Created', 'shard0']) def test_execute_create_two_shards_bad(self): self.run_cmd(argv=['atest', 'shard', 'create', '-l', 'board:lumpy', 'shard0'], rpcs=[('add_shard', {'hostname': 'shard0', 'labels': 'board:lumpy'}, False, '''ValidationError: {'name': 'This value must be unique (shard1)'}''')], out_words_no=['shard0'], err_words_ok=['shard0', 'ValidationError']) class shard_add_boards_unittest(cli_mock.cli_unittest): def test_execute_add_boards_to_shard(self): self.run_cmd(argv=['atest', 'shard', 'add_boards', '-l', 'board:lumpy', 'shard0'], rpcs=[('add_board_to_shard', {'hostname': 'shard0', 'labels':'board:lumpy'}, True, 42)], out_words_ok=['Added boards', 'board:lumpy', 'shard0']) def test_execute_add_boards_to_shard_bad(self): self.run_cmd(argv=['atest', 'shard', 'add_boards', '-l', 'board:lumpy', 'shard0'], rpcs=[('add_board_to_shard', {'hostname': 'shard0', 'labels':'board:lumpy'}, False, '''RPCException: board:lumpy is already on shard shard0''')], out_words_no=['shard0'], err_words_ok=['shard0', 'RPCException']) def test_execute_add_boards_to_shard_fail_when_shard_nonexist(self): self.run_cmd(argv=['atest', 'shard', 'add_boards', '-l', 'board:lumpy', 'shard0'], rpcs=[('add_board_to_shard', {'hostname': 'shard0', 'labels':'board:lumpy'}, False, '''DoesNotExist: Shard matching query does not exist. Lookup parameters were {'hostname': 'shard0'}''')], out_words_no=['shard0'], err_words_ok=['shard0', 'DoesNotExist:']) class shard_delete_unittest(cli_mock.cli_unittest): def test_execute_delete_shards(self): self.run_cmd(argv=['atest', 'shard', 'delete', 'shard0', 'shard1', '--no-confirmation'], rpcs=[('delete_shard', {'hostname': 'shard0'}, True, None), ('delete_shard', {'hostname': 'shard1'}, True, None) ], out_words_ok=['Deleted', 'shard0', 'shard1']) if __name__ == '__main__': unittest.main()