• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/python
2#
3# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
7"""Unit tests for site_utils/board_enumerator.py."""
8
9import mox
10import unittest
11
12import board_enumerator
13
14from autotest_lib.server import frontend
15from constants import Labels
16
17
18class BoardEnumeratorTest(mox.MoxTestBase):
19    """Unit tests for BoardEnumerator."""
20
21
22    def setUp(self):
23        super(BoardEnumeratorTest, self).setUp()
24        self.afe = self.mox.CreateMock(frontend.AFE)
25        self.enumerator = board_enumerator.BoardEnumerator(afe=self.afe)
26        self.prefix = Labels.BOARD_PREFIX
27
28
29    def _CreateMockLabel(self, name):
30        """Creates a mock frontend.Label, with the given name."""
31        mock = self.mox.CreateMock(frontend.Label)
32        mock.name = name
33        return mock
34
35
36    def testEnumerateBoards(self):
37        """Test successful board enumeration."""
38        labels = ['board1', 'board2', 'board3']
39        self.afe.get_labels(name__startswith=self.prefix).AndReturn(
40            map(lambda p: self._CreateMockLabel(self.prefix+p), labels))
41        self.mox.ReplayAll()
42        self.assertEquals(set(labels), set(self.enumerator.Enumerate()))
43
44
45    def testEnumerateNoBoards(self):
46        """Test successful board enumeration, but there are no boards."""
47        self.afe.get_labels(name__startswith=self.prefix).AndReturn([])
48        self.mox.ReplayAll()
49        self.assertRaises(board_enumerator.NoBoardException,
50                          self.enumerator.Enumerate)
51
52
53    def testEnumerateBoardsExplodes(self):
54        """Listing boards raises an exception from the AFE."""
55        self.afe.get_labels(name__startswith=self.prefix).AndRaise(Exception())
56        self.mox.ReplayAll()
57        self.assertRaises(board_enumerator.EnumerateException,
58                          self.enumerator.Enumerate)
59
60
61if __name__ == '__main__':
62    unittest.main()
63