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

Side by Side Diff: third_party/buildbot_7_12/buildbot/test/test_ordering.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 from twisted.trial import unittest
2 from twisted.internet import reactor, defer
3
4 from buildbot.test.runutils import RunMixin, TestFlagMixin, rmtree
5 from buildbot.changes import changes
6 from buildbot.sourcestamp import SourceStamp
7 from buildbot.process.base import BuildRequest
8
9 nextslave_config = """
10 from buildbot.process import factory
11 from buildbot.steps import dummy
12 from buildbot.buildslave import BuildSlave
13 from buildbot.scheduler import Scheduler
14 from buildbot.config import BuilderConfig
15
16 f1 = factory.BuildFactory([dummy.Dummy(timeout=0)])
17
18 def nextSlave(builder, slaves):
19 for s in slaves:
20 if s.slave.slavename == 'bot1':
21 return s
22
23 BuildmasterConfig = c = {}
24 c['slaves'] = [BuildSlave('bot1', 'sekrit'), BuildSlave('bot2', 'sekrit')]
25 c['schedulers'] = [Scheduler('dummy', None, 0, ['dummy'])]
26 c['builders'] = [
27 BuilderConfig(name='dummy', slavenames=['bot1', 'bot2'],
28 factory=f1, nextSlave=nextSlave),
29 ]
30 c['slavePortnum'] = 0
31 c['mergeRequests'] = lambda builder, req1, req2: False
32 """
33 class NextSlave(RunMixin, unittest.TestCase):
34 def rmtree(self, d):
35 rmtree(d)
36
37 def testNextSlave(self):
38 d = self.master.loadConfig(nextslave_config)
39 self.master.readConfig = True
40 d.addCallback(lambda res: self.master.startService())
41 d.addCallback(lambda res: self.connectSlave(slavename='bot1'))
42 d.addCallback(lambda res: self.connectSlave(slavename='bot2'))
43
44 def check(res):
45 builder = self.status.getBuilder("dummy")
46 self.failUnlessEqual(len(builder.slavenames), 2)
47 for i in range(5):
48 build = builder.getBuild(i)
49 self.failUnlessEqual(build.slavename, 'bot1')
50
51 def _send(res):
52 # send some build requests
53 reqs = []
54 ss = SourceStamp()
55 for i in range(5):
56 req = BuildRequest(str(i), ss, "dummy")
57 self.master.botmaster.builders['dummy'].submitBuildRequest(req)
58 reqs.append(req.waitUntilFinished())
59
60 dl = defer.DeferredList(reqs)
61 dl.addCallback(check)
62 return dl
63
64 d.addCallback(_send)
65
66 return d
67
68 # Test nextBuild
69 nextbuild_config = """
70 from buildbot.process import factory
71 from buildbot.steps import dummy
72 from buildbot.buildslave import BuildSlave
73 from buildbot.scheduler import Scheduler
74 from buildbot.config import BuilderConfig
75
76 f1 = factory.BuildFactory([dummy.Dummy(timeout=0)])
77
78 def nextBuild(builder, requests):
79 # Return the newest request first
80 return requests[-1]
81
82 BuildmasterConfig = c = {}
83 c['slaves'] = [BuildSlave('bot1', 'sekrit')]
84 c['schedulers'] = [Scheduler('dummy', None, 0, ['dummy'])]
85 c['builders'] = [
86 BuilderConfig(name='dummy', slavenames=['bot1'], factory=f1, nextBuild=nextB uild),
87 ]
88 c['slavePortnum'] = 0
89 c['mergeRequests'] = lambda builder, req1, req2: False
90 """
91 class NextBuild(RunMixin, unittest.TestCase):
92 def rmtree(self, d):
93 rmtree(d)
94
95 def testNextBuild(self):
96 d = self.master.loadConfig(nextbuild_config)
97 self.master.readConfig = True
98 d.addCallback(lambda res: self.master.startService())
99
100 start_order = []
101 reqs = []
102
103 def check(res):
104 builder = self.status.getBuilder("dummy")
105 self.failUnlessEqual(len(builder.slavenames), 1)
106 self.failUnlessEqual(start_order, [4,3,2,1,0])
107
108 def send(res):
109 # send some build requests
110 ss = SourceStamp()
111 for i in range(5):
112 req = BuildRequest(str(i), ss, "dummy")
113 self.master.botmaster.builders['dummy'].submitBuildRequest(req)
114 req.submittedAt = i
115 def append(build):
116 start_order.append(int(build.reason))
117 req.subscribe(append)
118 reqs.append(req.waitUntilFinished())
119
120 d.addCallback(send)
121 d.addCallback(lambda res: self.connectSlave(slavename='bot1'))
122
123 def connected(res):
124 return defer.DeferredList(reqs)
125 d.addCallback(connected)
126 d.addCallback(check)
127 return d
128
129 # Test prioritizeBuilders
130 prioritizebuilders_config = """
131 from buildbot.process import factory
132 from buildbot.steps import dummy
133 from buildbot.buildslave import BuildSlave
134 from buildbot.scheduler import Scheduler
135 from buildbot.config import BuilderConfig
136
137 f1 = factory.BuildFactory([dummy.Dummy(timeout=0)])
138
139 def prioritizeBuilders(buildmaster, builders):
140 for builder in builders:
141 if builder.name == 'dummy1':
142 return [builder]
143 return []
144
145 BuildmasterConfig = c = {}
146 c['slaves'] = [BuildSlave('bot1', 'sekrit')]
147 c['schedulers'] = [Scheduler('dummy', None, 0, ['dummy1', 'dummy2'])]
148 c['builders'] = [
149 BuilderConfig(name='dummy1', slavename='bot1', factory=f1),
150 BuilderConfig(name='dummy2', slavename='bot1', factory=f1),
151 ]
152 c['slavePortnum'] = 0
153 c['mergeRequests'] = lambda builder, req1, req2: False
154 c['prioritizeBuilders'] = prioritizeBuilders
155 """
156 class PrioritizeBuilders(RunMixin, unittest.TestCase):
157 def rmtree(self, d):
158 rmtree(d)
159
160 def testPrioritizeBuilders(self):
161 d = self.master.loadConfig(prioritizebuilders_config)
162 self.master.readConfig = True
163 d.addCallback(lambda res: self.master.startService())
164
165 builder_names = []
166 reqs = []
167 incomplete_reqs = []
168 complete_reqs = []
169
170 def check(res):
171 builder = self.status.getBuilder("dummy1")
172 self.failUnlessEqual(len(builder.slavenames), 1)
173 self.failUnlessEqual(builder_names, ['dummy1'] * 5)
174 for req in incomplete_reqs:
175 self.failUnlessEqual(req.startCount, 0)
176 for req in complete_reqs:
177 self.failUnlessEqual(req.startCount, 1)
178
179 def send(res):
180 # send some build requests
181 ss = SourceStamp()
182 for i in range(5):
183 req1 = BuildRequest(str(i), ss, "dummy")
184 self.master.botmaster.builders['dummy1'].submitBuildRequest(req1 )
185 req2 = BuildRequest(str(i), ss, "dummy")
186 self.master.botmaster.builders['dummy2'].submitBuildRequest(req2 )
187 def append(build):
188 builder_names.append(build.builder.name)
189 req1.subscribe(append)
190 req2.subscribe(append)
191 reqs.append(req1.waitUntilFinished())
192 complete_reqs.append(req1)
193 incomplete_reqs.append(req2)
194
195 d.addCallback(send)
196 d.addCallback(lambda res: self.connectSlave(slavename='bot1', builders=[ 'dummy1', 'dummy2']))
197
198 def connected(res):
199 return defer.DeferredList(reqs)
200 d.addCallback(connected)
201 d.addCallback(check)
202 return d
OLDNEW
« no previous file with comments | « third_party/buildbot_7_12/buildbot/test/test_mailparse.py ('k') | third_party/buildbot_7_12/buildbot/test/test_p4poller.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698