[Buildbot-commits] buildbot/buildbot/steps transfer.py,1.1,1.2
Brian Warner
warner at users.sourceforge.net
Fri Sep 15 14:49:35 UTC 2006
Update of /cvsroot/buildbot/buildbot/buildbot/steps
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv21663/buildbot/steps
Modified Files:
transfer.py
Log Message:
[project @ filetransfer: add a unit test, docs, do some cleanup]
Original author: warner at lothar.com
Date: 2006-09-09 06:11:59
Index: transfer.py
===================================================================
RCS file: /cvsroot/buildbot/buildbot/buildbot/steps/transfer.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- transfer.py 15 Sep 2006 14:49:25 -0000 1.1
+++ transfer.py 15 Sep 2006 14:49:33 -0000 1.2
@@ -1,11 +1,14 @@
+# -*- test-case-name: buildbot.test.test_transfer -*-
+import os.path
from twisted.internet import reactor
from twisted.spread import pb
+from twisted.python import log
from buildbot.process.step import RemoteCommand, BuildStep
from buildbot.process.step import SUCCESS, FAILURE
-class FileIO(pb.Referenceable):
+class _FileIO(pb.Referenceable):
"""
Helper base class that acts as remote-accessible file-object
"""
@@ -21,13 +24,13 @@
self.fp.close()
self.fp = None
-class FileWriter(FileIO):
+class _FileWriter(_FileIO):
"""
Helper class that acts as a file-object with write access
"""
def __init__(self,fp, maxsize=None):
- FileIO.__init__(self,fp)
+ _FileIO.__init__(self,fp)
self.maxsize = maxsize
def remote_write(self,data):
@@ -47,7 +50,7 @@
else:
self.fp.write(data)
-class FileReader(FileIO):
+class _FileReader(_FileIO):
"""
Helper class that acts as a file-object with read access
"""
@@ -107,20 +110,27 @@
if k in BuildStep.parms:
buildstep_kwargs[k] = kwargs[k]
del kwargs[k]
- BuildStep.__init__(self,build,**buildstep_kwargs)
+ BuildStep.__init__(self, build, **buildstep_kwargs)
self.args = kwargs
self.fileWriter = None
def start(self):
+ source = self.args['slavesrc']
+ masterdest = self.args['masterdest']
+ # we rely upon the fact that the buildmaster runs chdir'ed into its
+ # basedir to make sure that relative paths in masterdest are expanded
+ # properly. TODO: maybe pass the master's basedir all the way down
+ # into the BuildStep so we can do this better.
+ target = os.path.expanduser(masterdest)
log.msg("FileUpload started, from slave %r to master %r"
- % (self.args['slavesrc'],self.args['masterdest']))
+ % (source, target))
self.step_status.setColor('yellow')
- self.step_status.setText(['uploading', self.args['slavesrc']])
+ self.step_status.setText(['uploading', source])
fp = open(self.args['masterdest'],'w')
- self.fileWriter = FileWriter(fp)
+ self.fileWriter = _FileWriter(fp)
# default arguments
args = {
@@ -143,9 +153,9 @@
if self.cmd.rc is None or self.cmd.rc == 0:
self.step_status.setColor('green')
- return BuildStep.finished(self,SUCCESS)
+ return BuildStep.finished(self, SUCCESS)
self.step_status.setColor('red')
- return BuildStep.finished(self,FAILURE)
+ return BuildStep.finished(self, FAILURE)
class FileDownload(BuildStep):
"""
@@ -169,38 +179,41 @@
if k in BuildStep.parms:
buildstep_kwargs[k] = kwargs[k]
del kwargs[k]
- BuildStep.__init__(self,build,**buildstep_kwargs)
+ BuildStep.__init__(self, build, **buildstep_kwargs)
self.args = kwargs
self.fileReader = None
def start(self):
- log.msg("FileDownload started, from master %r to slave %r"
- % (self.args['mastersrc'],self.args['slavedest']))
+ source = os.path.expanduser(self.args['mastersrc'])
+ slavedest = self.args['slavedest']
+ log.msg("FileDownload started, from master %r to slave %r" %
+ (source, slavedest))
self.step_status.setColor('yellow')
- self.step_status.setText(['downloading', self.args['slavedest']])
+ self.step_status.setText(['downloading', slavedest])
# If file does not exist, bail out with an error
- if not os.path.isfile(self.args['mastersrc']):
+ if not os.path.isfile(source):
self.addCompleteLog('stderr',
- 'File %r not available at master' % self.args['mastersrc'])
+ 'File %r not available at master' % source)
reactor.callLater(0, self.reportFail)
return
# setup structures for reading the file
- fp = open(self.args['mastersrc'],'r')
- self.fileReader = FileReader(fp)
-
- a = self.args.copy()
- a['reader'] = self.fileReader
+ fp = open(source, 'r')
+ self.fileReader = _FileReader(fp)
- # add defaults for optional settings
- for k,dv in [('maxsize',None),('blocksize',16*1024),('workdir','build')]:
- if k not in a:
- a[k] = dv
+ # default arguments
+ args = {
+ 'maxsize': None,
+ 'blocksize': 16*1024,
+ 'workdir': 'build',
+ }
+ args.update(self.args)
+ args['reader'] = self.fileReader
- self.cmd = StatusRemoteCommand('downloadFile', a)
+ self.cmd = StatusRemoteCommand('downloadFile', args)
d = self.runCommand(self.cmd)
d.addCallback(self.finished).addErrback(self.failed)
@@ -212,10 +225,10 @@
if self.cmd.rc is None or self.cmd.rc == 0:
self.step_status.setColor('green')
- return BuildStep.finished(self,SUCCESS)
+ return BuildStep.finished(self, SUCCESS)
return self.reportFail()
def reportFail(self):
self.step_status.setColor('red')
- return BuildStep.finished(self,FAILURE)
+ return BuildStep.finished(self, FAILURE)
More information about the Commits
mailing list