2 from twisted
.internet
import reactor
3 from buildbot
.process
.buildstep
import BuildStep
, LoggingBuildStep
4 from buildbot
.process
.buildstep
import LoggedRemoteCommand
5 from buildbot
.status
.builder
import SUCCESS
, FAILURE
7 # these classes are used internally by buildbot unit tests
9 class Dummy(BuildStep
):
10 """I am a dummy no-op step, which runs entirely on the master, and simply
11 waits 5 seconds before finishing with SUCCESS
17 def __init__(self
, timeout
=5, **kwargs
):
20 @param timeout: the number of seconds to delay before completing
22 BuildStep
.__init
__(self
, **kwargs
)
23 self
.timeout
= timeout
27 self
.step_status
.setColor("yellow")
28 self
.step_status
.setText(["delay", "%s secs" % self
.timeout
])
29 self
.timer
= reactor
.callLater(self
.timeout
, self
.done
)
31 def interrupt(self
, reason
):
35 self
.step_status
.setColor("red")
36 self
.step_status
.setText(["delay", "interrupted"])
37 self
.finished(FAILURE
)
40 self
.step_status
.setColor("green")
41 self
.finished(SUCCESS
)
43 class FailingDummy(Dummy
):
44 """I am a dummy no-op step that 'runs' master-side and finishes (with a
45 FAILURE status) after 5 seconds."""
47 name
= "failing dummy"
50 self
.step_status
.setColor("yellow")
51 self
.step_status
.setText(["boom", "%s secs" % self
.timeout
])
52 self
.timer
= reactor
.callLater(self
.timeout
, self
.done
)
55 self
.step_status
.setColor("red")
56 self
.finished(FAILURE
)
58 class RemoteDummy(LoggingBuildStep
):
59 """I am a dummy no-op step that runs on the remote side and
60 simply waits 5 seconds before completing with success.
61 See L{buildbot.slave.commands.DummyCommand}
67 def __init__(self
, timeout
=5, **kwargs
):
70 @param timeout: the number of seconds to delay
72 LoggingBuildStep
.__init
__(self
, **kwargs
)
73 self
.timeout
= timeout
74 self
.description
= ["remote", "delay", "%s secs" % timeout
]
76 def describe(self
, done
=False):
77 return self
.description
80 args
= {'timeout': self
.timeout
}
81 cmd
= LoggedRemoteCommand("dummy", args
)
82 self
.startCommand(cmd
)
84 class Wait(LoggingBuildStep
):
85 """I start a command on the slave that waits for the unit test to
86 tell it when to finish.
90 def __init__(self
, handle
, **kwargs
):
91 LoggingBuildStep
.__init
__(self
, **kwargs
)
94 def describe(self
, done
=False):
95 return ["wait: %s" % self
.handle
]
98 args
= {'handle': (self
.handle
, self
.build
.reason
)}
99 cmd
= LoggedRemoteCommand("dummy.wait", args
)
100 self
.startCommand(cmd
)