aboutsummaryrefslogtreecommitdiff
path: root/crosperf/machine_image_manager_unittest.py
diff options
context:
space:
mode:
Diffstat (limited to 'crosperf/machine_image_manager_unittest.py')
-rwxr-xr-xcrosperf/machine_image_manager_unittest.py114
1 files changed, 66 insertions, 48 deletions
diff --git a/crosperf/machine_image_manager_unittest.py b/crosperf/machine_image_manager_unittest.py
index fe41dc09..02afaa06 100755
--- a/crosperf/machine_image_manager_unittest.py
+++ b/crosperf/machine_image_manager_unittest.py
@@ -1,7 +1,6 @@
#!/usr/bin/env python2
# Copyright 2015 Google Inc. All Rights Reserved.
-
"""Unit tests for the MachineImageManager class."""
from __future__ import print_function
@@ -23,14 +22,14 @@ class MockLabel(object):
"""Provide hash function for label.
This is required because Label object is used inside a dict as key.
- """
+ """
return hash(self.name)
def __eq__(self, other):
"""Provide eq function for label.
This is required because Label object is used inside a dict as key.
- """
+ """
return isinstance(other, MockLabel) and other.name == self.name
@@ -52,6 +51,7 @@ class MachineImageManagerTester(unittest.TestCase):
return duts
def print_matrix(self, matrix):
+ # pylint: disable=expression-not-assigned
for r in matrix:
for v in r:
print('{} '.format('.' if v == ' ' else v)),
@@ -97,53 +97,63 @@ class MachineImageManagerTester(unittest.TestCase):
self.assertTrue(mim.matrix_ == [['Y', 'Y', 'Y']])
def test_case1(self):
- labels = [MockLabel('l1', ['m1', 'm2']), MockLabel('l2', ['m2', 'm3']),
- MockLabel('l3', ['m1'])]
+ labels = [
+ MockLabel('l1', ['m1', 'm2']), MockLabel('l2', ['m2', 'm3']), MockLabel(
+ 'l3', ['m1'])
+ ]
duts = [MockDut('m1'), MockDut('m2'), MockDut('m3')]
mim = MachineImageManager(labels, duts)
- self.assertTrue(mim.matrix_ == [[' ', ' ', 'X'], ['X', ' ', ' '], [' ', 'X',
- 'X']])
+ self.assertTrue(mim.matrix_ == [[' ', ' ', 'X'], ['X', ' ', ' '],
+ [' ', 'X', 'X']])
mim.compute_initial_allocation()
- self.assertTrue(mim.matrix_ == [[' ', 'Y', 'X'], ['X', ' ', 'Y'], ['Y', 'X',
- 'X']])
+ self.assertTrue(mim.matrix_ == [[' ', 'Y', 'X'], ['X', ' ', 'Y'],
+ ['Y', 'X', 'X']])
def test_case2(self):
- labels = [MockLabel('l1', ['m1', 'm2']), MockLabel('l2', ['m2', 'm3']),
- MockLabel('l3', ['m1'])]
+ labels = [
+ MockLabel('l1', ['m1', 'm2']), MockLabel('l2', ['m2', 'm3']), MockLabel(
+ 'l3', ['m1'])
+ ]
duts = [MockDut('m1'), MockDut('m2'), MockDut('m3')]
mim = MachineImageManager(labels, duts)
- self.assertTrue(mim.matrix_ == [[' ', ' ', 'X'], ['X', ' ', ' '], [' ', 'X',
- 'X']])
+ self.assertTrue(mim.matrix_ == [[' ', ' ', 'X'], ['X', ' ', ' '],
+ [' ', 'X', 'X']])
mim.compute_initial_allocation()
- self.assertTrue(mim.matrix_ == [[' ', 'Y', 'X'], ['X', ' ', 'Y'], ['Y', 'X',
- 'X']])
+ self.assertTrue(mim.matrix_ == [[' ', 'Y', 'X'], ['X', ' ', 'Y'],
+ ['Y', 'X', 'X']])
def test_case3(self):
- labels = [MockLabel('l1', ['m1', 'm2']), MockLabel('l2', ['m2', 'm3']),
- MockLabel('l3', ['m1'])]
+ labels = [
+ MockLabel('l1', ['m1', 'm2']), MockLabel('l2', ['m2', 'm3']), MockLabel(
+ 'l3', ['m1'])
+ ]
duts = [MockDut('m1', labels[0]), MockDut('m2'), MockDut('m3')]
mim = MachineImageManager(labels, duts)
mim.compute_initial_allocation()
- self.assertTrue(mim.matrix_ == [[' ', 'Y', 'X'], ['X', ' ', 'Y'], ['Y', 'X',
- 'X']])
+ self.assertTrue(mim.matrix_ == [[' ', 'Y', 'X'], ['X', ' ', 'Y'],
+ ['Y', 'X', 'X']])
def test_case4(self):
- labels = [MockLabel('l1', ['m1', 'm2']), MockLabel('l2', ['m2', 'm3']),
- MockLabel('l3', ['m1'])]
+ labels = [
+ MockLabel('l1', ['m1', 'm2']), MockLabel('l2', ['m2', 'm3']), MockLabel(
+ 'l3', ['m1'])
+ ]
duts = [MockDut('m1'), MockDut('m2', labels[0]), MockDut('m3')]
mim = MachineImageManager(labels, duts)
mim.compute_initial_allocation()
- self.assertTrue(mim.matrix_ == [[' ', 'Y', 'X'], ['X', ' ', 'Y'], ['Y', 'X',
- 'X']])
+ self.assertTrue(mim.matrix_ == [[' ', 'Y', 'X'], ['X', ' ', 'Y'],
+ ['Y', 'X', 'X']])
def test_case5(self):
- labels = [MockLabel('l1', ['m3']), MockLabel('l2', ['m3']),
- MockLabel('l3', ['m1'])]
+ labels = [
+ MockLabel('l1', ['m3']), MockLabel('l2', ['m3']), MockLabel(
+ 'l3', ['m1'])
+ ]
duts = self.gen_duts_by_name('m1', 'm2', 'm3')
mim = MachineImageManager(labels, duts)
self.assertTrue(mim.compute_initial_allocation())
- self.assertTrue(mim.matrix_ == [['X', 'X', 'Y'], ['X', 'X', 'Y'], ['Y', 'X',
- 'X']])
+ self.assertTrue(mim.matrix_ == [['X', 'X', 'Y'], ['X', 'X', 'Y'],
+ ['Y', 'X', 'X']])
def test_2x2_with_allocation(self):
labels = [MockLabel('l0'), MockLabel('l1')]
@@ -193,29 +203,37 @@ class MachineImageManagerTester(unittest.TestCase):
self.assertTrue(mim.compute_initial_allocation())
def test_10x10_fully_random(self):
- inp = ['X . . . X X . X X .', 'X X . X . X . X X .',
- 'X X X . . X . X . X', 'X . X X . . X X . X',
- 'X X X X . . . X . .', 'X X . X . X . . X .',
- '. X . X . X X X . .', '. X . X X . X X . .',
- 'X X . . . X X X . .', '. X X X X . . . . X']
- output = ['X Y . . X X . X X .', 'X X Y X . X . X X .',
- 'X X X Y . X . X . X', 'X . X X Y . X X . X',
- 'X X X X . Y . X . .', 'X X . X . X Y . X .',
- 'Y X . X . X X X . .', '. X . X X . X X Y .',
- 'X X . . . X X X . Y', '. X X X X . . Y . X']
+ inp = [
+ 'X . . . X X . X X .', 'X X . X . X . X X .',
+ 'X X X . . X . X . X', 'X . X X . . X X . X',
+ 'X X X X . . . X . .', 'X X . X . X . . X .',
+ '. X . X . X X X . .', '. X . X X . X X . .',
+ 'X X . . . X X X . .', '. X X X X . . . . X'
+ ]
+ output = [
+ 'X Y . . X X . X X .', 'X X Y X . X . X X .',
+ 'X X X Y . X . X . X', 'X . X X Y . X X . X',
+ 'X X X X . Y . X . .', 'X X . X . X Y . X .',
+ 'Y X . X . X X X . .', '. X . X X . X X Y .',
+ 'X X . . . X X X . Y', '. X X X X . . Y . X'
+ ]
self.pattern_based_test(inp, output)
def test_10x10_fully_random2(self):
- inp = ['X . X . . X . X X X', 'X X X X X X . . X .',
- 'X . X X X X X . . X', 'X X X . X . X X . .',
- '. X . X . X X X X X', 'X X X X X X X . . X',
- 'X . X X X X X . . X', 'X X X . X X X X . .',
- 'X X X . . . X X X X', '. X X . X X X . X X']
- output = ['X . X Y . X . X X X', 'X X X X X X Y . X .',
- 'X Y X X X X X . . X', 'X X X . X Y X X . .',
- '. X Y X . X X X X X', 'X X X X X X X Y . X',
- 'X . X X X X X . Y X', 'X X X . X X X X . Y',
- 'X X X . Y . X X X X', 'Y X X . X X X . X X']
+ inp = [
+ 'X . X . . X . X X X', 'X X X X X X . . X .',
+ 'X . X X X X X . . X', 'X X X . X . X X . .',
+ '. X . X . X X X X X', 'X X X X X X X . . X',
+ 'X . X X X X X . . X', 'X X X . X X X X . .',
+ 'X X X . . . X X X X', '. X X . X X X . X X'
+ ]
+ output = [
+ 'X . X Y . X . X X X', 'X X X X X X Y . X .',
+ 'X Y X X X X X . . X', 'X X X . X Y X X . .',
+ '. X Y X . X X X X X', 'X X X X X X X Y . X',
+ 'X . X X X X X . Y X', 'X X X . X X X X . Y',
+ 'X X X . Y . X X X X', 'Y X X . X X X . X X'
+ ]
self.pattern_based_test(inp, output)
def test_3x4_with_allocation(self):
@@ -273,7 +291,7 @@ class MachineImageManagerTester(unittest.TestCase):
l1 Y X X
l2 Y X X
- """
+ """
inp = ['. X X', '. X X', '. X X']
output = ['Y X X', 'Y X X', 'Y X X']