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

Side by Side Diff: third_party/buildbot_7_12/buildbot/test/test_console.py

Issue 12207158: Bye bye buildbot 0.7.12. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
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
(Empty)
1 # -*- test-case-name: buildbot.test.test_console -*-
2
3 from twisted.trial import unittest
4
5 from buildbot.status import builder
6 from buildbot.status.web import console
7 from buildbot.test.runutils import RunMixin
8 from buildbot.changes import changes
9
10 try:
11 reversed
12 except NameError:
13 def reversed(data):
14 for index in xrange(len(data)-1,-1,-1):
15 yield data[index]
16
17 # Configuration to be used by the getBuildDetailsTest
18 run_config = """
19 from buildbot.process import factory
20 from buildbot.steps.shell import ShellCommand, WithProperties
21 from buildbot.buildslave import BuildSlave
22 from buildbot.config import BuilderConfig
23 s = factory.s
24
25 BuildmasterConfig = c = {}
26 c['slaves'] = [BuildSlave('bot1', 'sekrit', properties={'slprop':'slprop'})]
27 c['schedulers'] = []
28 c['slavePortnum'] = 0
29 c['properties'] = { 'global' : 'global' }
30
31 f1 = factory.BuildFactory([s(ShellCommand, flunkOnFailure=True,
32 command=['ls'],
33 workdir='.', timeout=10)])
34
35 f2 = factory.BuildFactory([s(ShellCommand, flunkOnFailure=True,
36 command=['ls -WillFail'],
37 workdir='.', timeout=10)])
38
39 b1 = BuilderConfig(name='full1', slavename='bot1', builddir='bd1', factory=f1)
40 b2 = BuilderConfig(name='full2', slavename='bot1', builddir='bd2', factory=f2)
41 c['builders'] = [b1, b2]
42 """
43
44
45 # Tests for the global functions in console.py
46 class ConsoleTest(unittest.TestCase):
47 # Test for console.getResultsClass
48 def testgetResultsClass(self):
49 self.assertEqual(console.getResultsClass(None, None, True), "running")
50 self.assertEqual(console.getResultsClass(None, builder.SUCCESS, False), "notstarted")
51 self.assertEqual(console.getResultsClass(builder.SUCCESS, builder.SUCCES S, False), "success")
52 self.assertEqual(console.getResultsClass(builder.SUCCESS, builder.FAILUR E, False), "success")
53 self.assertEqual(console.getResultsClass(builder.FAILURE, builder.FAILUR E, False), "warnings")
54 self.assertEqual(console.getResultsClass(builder.FAILURE, builder.SUCCES S, False), "failure")
55 self.assertEqual(console.getResultsClass(builder.FAILURE, None, False), "failure")
56 self.assertEqual(console.getResultsClass(builder.FAILURE, builder.EXCEPT ION, False), "failure")
57 self.assertEqual(console.getResultsClass(builder.FAILURE, builder.FAILUR E, True), "running")
58 self.assertEqual(console.getResultsClass(builder.EXCEPTION, builder.FAIL URE, False), "exception")
59
60 def _createDummyChange(revision):
61 return changes.Change('Committer', ['files'], 'comment', revision=revision)
62
63 class TimeRevisionComparatorTest(unittest.TestCase):
64 def setUp(self):
65 self.comparator = console.TimeRevisionComparator()
66
67 def testSameRevisionIsNotGreater(self):
68 change = _createDummyChange('abcdef')
69 self.assertFalse(self.comparator.isRevisionEarlier(change, change))
70
71 def testOrdersDifferentRevisions(self):
72 first = _createDummyChange('first_rev')
73 second = _createDummyChange('second_rev')
74
75 second.when += 1 # Make sure it's "after" the first
76 self.assertTrue(self.comparator.isRevisionEarlier(first, second))
77 self.assertFalse(self.comparator.isRevisionEarlier(second, first))
78
79 def testReturnedKeySortsRevisionsCorrectly(self):
80 my_changes = [_createDummyChange('rev' + str(i))
81 for i in range(1, 6)]
82 for i in range(1, len(my_changes)):
83 my_changes[i].when = my_changes[i-1].when + 1
84
85 reversed_changes = list(reversed(my_changes))
86 reversed_changes.sort(lambda a,b: cmp(getattr(a, self.comparator.getSort ingKey()), getattr(b, self.comparator.getSortingKey())))
87 self.assertEqual(my_changes, reversed_changes)
88
89 class IntegerRevisionComparatorTest(unittest.TestCase):
90 def setUp(self):
91 self.comparator = console.IntegerRevisionComparator()
92
93 def testSameRevisionIsNotGreater(self):
94 change = _createDummyChange('1')
95 self.assertFalse(self.comparator.isRevisionEarlier(change, change))
96
97 def testOrdersDifferentRevisions(self):
98 first = _createDummyChange('1')
99 second = _createDummyChange('2')
100
101 self.assertTrue(self.comparator.isRevisionEarlier(first, second))
102 self.assertFalse(self.comparator.isRevisionEarlier(second, first))
103
104 def testIsValidRevisionAcceptsIntegers(self):
105 for rev in range(100):
106 self.assertTrue(self.comparator.isValidRevision(str(rev)))
107
108 def testIsValidRevisionDoesNotAcceptNonIntegers(self):
109 self.assertFalse(self.comparator.isValidRevision('revision'))
110
111 def testReturnedKeySortsRevisionsCorrectly(self):
112 my_changes = [_createDummyChange(str(i)) for i in range(1, 6)]
113
114 reversed_changes = list(reversed(my_changes))
115 reversed_changes.sort(lambda a,b: cmp(getattr(a, self.comparator.getSort ingKey()), getattr(b, self.comparator.getSortingKey())))
116 self.assertEqual(my_changes, reversed_changes)
117
118 # Helper class to mock a request. We define only what we really need.
119 class MockRequest(object):
120 def childLink(self, link):
121 return link
122
123 # Class to test the method getBuildDetails in ConsoleStatusResource.
124 class GetBuildDetailsTests(RunMixin, unittest.TestCase):
125 # Test ConsoleStatusResource.getBuildDetails with a success and a failure ca se.
126 def testgetBuildDetails(self):
127 # run an actual build with a step that will succeed, then another build with
128 # a step that will fail, then make sure the build details generated cont ains
129 # the right data.
130 d = self.master.loadConfig(run_config)
131 d.addCallback(lambda res: self.master.startService())
132 d.addCallback(lambda res: self.connectOneSlave("bot1"))
133 d.addCallback(lambda res: self.requestBuild("full1"))
134
135 # Make sure the build details returned is an empty string to signify th at
136 # everything was ok
137 def expectSuccess(bs):
138 console_status = console.ConsoleStatusResource()
139 results = console_status.getBuildDetails(MockRequest(), "buildername ", bs);
140 self.assertEqual(results, "")
141 d.addCallback(expectSuccess)
142
143 d.addCallback(lambda res: self.requestBuild("full2"))
144
145 # Make sure the build details returned contained the expected error.
146 def expectFailure(bs):
147 expected_details = """<li> buildername : 'ls -WillFail' failed.
148 [ <a href="../builders/buildername/builds/0/steps/shell/logs/stdio">stdio</a> ]" ""
149 console_status = console.ConsoleStatusResource()
150 results = console_status.getBuildDetails(MockRequest(), "buildername ", bs);
151 self.assertEqual(results, expected_details)
152
153 d.addCallback(expectFailure)
154 return d
155
OLDNEW
« no previous file with comments | « third_party/buildbot_7_12/buildbot/test/test_config.py ('k') | third_party/buildbot_7_12/buildbot/test/test_control.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698