#!/usr/bin/python # # Copyright (c) 2012 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. """Unit tests for site_utils/board_enumerator.py.""" import mox import unittest import board_enumerator from autotest_lib.server import frontend from constants import Labels class BoardEnumeratorTest(mox.MoxTestBase): """Unit tests for BoardEnumerator.""" def setUp(self): super(BoardEnumeratorTest, self).setUp() self.afe = self.mox.CreateMock(frontend.AFE) self.enumerator = board_enumerator.BoardEnumerator(afe=self.afe) self.prefix = Labels.BOARD_PREFIX def _CreateMockLabel(self, name): """Creates a mock frontend.Label, with the given name.""" mock = self.mox.CreateMock(frontend.Label) mock.name = name return mock def testEnumerateBoards(self): """Test successful board enumeration.""" labels = ['board1', 'board2', 'board3'] self.afe.get_labels(name__startswith=self.prefix).AndReturn( map(lambda p: self._CreateMockLabel(self.prefix+p), labels)) self.mox.ReplayAll() self.assertEquals(set(labels), set(self.enumerator.Enumerate())) def testEnumerateNoBoards(self): """Test successful board enumeration, but there are no boards.""" self.afe.get_labels(name__startswith=self.prefix).AndReturn([]) self.mox.ReplayAll() self.assertRaises(board_enumerator.NoBoardException, self.enumerator.Enumerate) def testEnumerateBoardsExplodes(self): """Listing boards raises an exception from the AFE.""" self.afe.get_labels(name__startswith=self.prefix).AndRaise(Exception()) self.mox.ReplayAll() self.assertRaises(board_enumerator.EnumerateException, self.enumerator.Enumerate) if __name__ == '__main__': unittest.main()