Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(359)

Side by Side Diff: build/android/pylib/base/shard_unittest.py

Issue 12317059: [Andoid] Threaded TestRunner creation and SetUp and TearDown calls. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Unittests for shard.py.""" 5 """Unittests for shard.py."""
6 6
7 import os 7 import os
8 import sys 8 import sys
9 import unittest 9 import unittest
10 10
11 sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), 11 sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)),
12 os.pardir, os.pardir)) 12 os.pardir, os.pardir))
13 from pylib import android_commands 13 from pylib import android_commands
14 14
15 import shard 15 import shard
16 import test_result 16 import test_result
17 17
18 18
19 class TestException(Exception): 19 class TestException(Exception):
20 pass 20 pass
21 21
22 22
23 class MockRunner(object): 23 class MockRunner(object):
24 """A mock TestRunner.""" 24 """A mock TestRunner."""
25 def __init__(self, device='0'): 25 def __init__(self, device='0'):
26 self.device = device 26 self.device = device
27 self.setups = 0
28 self.teardowns = 0
27 29
28 def Run(self, test): 30 def RunTest(self, test):
29 return (test_result.TestResults.FromRun( 31 return (test_result.TestResults.FromRun(
30 ok=[test_result.BaseTestResult(test, '')]), 32 ok=[test_result.BaseTestResult(test, '')]),
31 None) 33 None)
32 34
35 def SetUp(self):
36 self.setups += 1
37
38 def TearDown(self):
39 self.teardowns += 1
40
33 41
34 class MockRunnerRetry(MockRunner): 42 class MockRunnerRetry(MockRunner):
35 def Run(self, test): 43 def RunTest(self, test):
36 return (test_result.TestResults.FromRun( 44 return (test_result.TestResults.FromRun(
37 failed=[test_result.BaseTestResult(test, '')]), 45 failed=[test_result.BaseTestResult(test, '')]),
38 test) 46 test)
39 47
40 48
41 class MockRunnerException(MockRunner): 49 class MockRunnerException(MockRunner):
42 def Run(self, test): 50 def RunTest(self, test):
43 raise TestException 51 raise TestException
44 52
45 53
46 class TestWorker(unittest.TestCase): 54 class TestFunctions(unittest.TestCase):
47 """Tests for shard._Worker.""" 55 """Tests for shard._RunTestsFromQueue."""
48 @staticmethod 56 @staticmethod
49 def _RunRunner(mock_runner, tests): 57 def _RunTests(mock_runner, tests):
50 results = [] 58 results = []
51 retry = [] 59 retry = []
52 worker = shard._Worker(mock_runner, tests, results, retry) 60 shard._RunTestsFromQueue(mock_runner, tests, results, retry)
53 worker.start()
54 worker.join()
55 worker.ReraiseIfException()
56 return (results, retry) 61 return (results, retry)
57 62
58 def testRun(self): 63 def testRunTestsFromQueue(self):
59 results, retry = TestWorker._RunRunner(MockRunner(), ['a', 'b']) 64 results, retry = TestFunctions._RunTests(MockRunner(), ['a', 'b'])
60 self.assertEqual(len(results), 2) 65 self.assertEqual(len(results), 2)
61 self.assertEqual(len(retry), 0) 66 self.assertEqual(len(retry), 0)
62 67
63 def testRetry(self): 68 def testRunTestsFromQueueRetry(self):
64 results, retry = TestWorker._RunRunner(MockRunnerRetry(), ['a', 'b']) 69 results, retry = TestFunctions._RunTests(MockRunnerRetry(), ['a', 'b'])
65 self.assertEqual(len(results), 2) 70 self.assertEqual(len(results), 2)
66 self.assertEqual(len(retry), 2) 71 self.assertEqual(len(retry), 2)
67 72
68 def testReraise(self): 73 def testSetUp(self):
69 with self.assertRaises(TestException): 74 runners = []
70 TestWorker._RunRunner(MockRunnerException(), ['a', 'b']) 75 shard._SetUp(MockRunner, '0', runners)
76 self.assertEqual(len(runners), 1)
77 self.assertEqual(runners[0].setups, 1)
71 78
72 79
73 class TestRunAllTests(unittest.TestCase): 80 class TestThreadGroupFunctions(unittest.TestCase):
74 """Tests for shard._RunAllTests and shard._CreateRunners.""" 81 """Tests for shard._RunAllTests and shard._CreateRunners."""
75 def setUp(self): 82 def setUp(self):
76 self.tests = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] 83 self.tests = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
77 84
85 def testCreate(self):
86 runners = shard._CreateRunners(MockRunner, ['0', '1'])
87 for runner in runners:
88 self.assertEqual(runner.setups, 1)
89
78 def testRun(self): 90 def testRun(self):
79 runners = shard._CreateRunners(MockRunner, ['0', '1']) 91 runners = [MockRunner('0'), MockRunner('1')]
80 results, retry = shard._RunAllTests(runners, self.tests) 92 results, retry = shard._RunAllTests(runners, self.tests)
81 self.assertEqual(len(results), len(self.tests)) 93 self.assertEqual(len(results), len(self.tests))
82 self.assertEqual(len(retry), 0) 94 self.assertEqual(len(retry), 0)
83 95
96 def testTearDown(self):
97 runners = [MockRunner('0'), MockRunner('1')]
98 shard._TearDownRunners(runners)
99 for runner in runners:
100 self.assertEqual(runner.teardowns, 1)
101
84 def testRetry(self): 102 def testRetry(self):
85 runners = shard._CreateRunners(MockRunnerRetry, ['0', '1']) 103 runners = shard._CreateRunners(MockRunnerRetry, ['0', '1'])
86 results, retry = shard._RunAllTests(runners, self.tests) 104 results, retry = shard._RunAllTests(runners, self.tests)
87 self.assertEqual(len(results), len(self.tests)) 105 self.assertEqual(len(results), len(self.tests))
88 self.assertEqual(len(retry), len(self.tests)) 106 self.assertEqual(len(retry), len(self.tests))
89 107
90 def testReraise(self): 108 def testReraise(self):
91 runners = shard._CreateRunners(MockRunnerException, ['0', '1']) 109 runners = shard._CreateRunners(MockRunnerException, ['0', '1'])
92 with self.assertRaises(TestException): 110 with self.assertRaises(TestException):
93 shard._RunAllTests(runners, self.tests) 111 shard._RunAllTests(runners, self.tests)
(...skipping 13 matching lines...) Expand all
107 self.assertEqual(len(results.ok), 3) 125 self.assertEqual(len(results.ok), 3)
108 126
109 def testFailing(self): 127 def testFailing(self):
110 results = TestShard._RunShard(MockRunnerRetry) 128 results = TestShard._RunShard(MockRunnerRetry)
111 self.assertEqual(len(results.ok), 0) 129 self.assertEqual(len(results.ok), 0)
112 self.assertEqual(len(results.failed), 3) 130 self.assertEqual(len(results.failed), 3)
113 131
114 132
115 if __name__ == '__main__': 133 if __name__ == '__main__':
116 unittest.main() 134 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698