def testTimestamp(self): self.setupStep( transfer.FileUpload(workersrc=__file__, masterdest=self.destfile, keepstamp=True)) timestamp = (os.path.getatime(__file__), os.path.getmtime(__file__)) self.expectCommands( Expect('uploadFile', dict( workersrc=__file__, workdir='wkdir', blocksize=262144, maxsize=None, keepstamp=True, writer=ExpectRemoteRef(remotetransfer.FileWriter))) + Expect.behavior(uploadString('test', timestamp=timestamp)) + 0) self.expectOutcome( result=SUCCESS, state_string="uploading {}".format(os.path.basename(__file__)) ) yield self.runStep() desttimestamp = (os.path.getatime(self.destfile), os.path.getmtime(self.destfile)) srctimestamp = [int(t) for t in timestamp] desttimestamp = [int(d) for d in desttimestamp] self.assertEqual(srctimestamp[0], desttimestamp[0]) self.assertEqual(srctimestamp[1], desttimestamp[1])
def test_init_workersrc_old_api_warns(self): with assertProducesWarning( DeprecatedWorkerNameWarning, message_pattern="'slavesrc' keyword argument is deprecated"): step = transfer.FileUpload(slavesrc='srcfile', masterdest='dstfile') self.assertEqual(step.workersrc, 'srcfile')
def testBasic(self): s = transfer.FileUpload(slavesrc=__file__, masterdest=self.destfile) s.build = Mock() s.build.getProperties.return_value = Properties() s.build.getSlaveCommandVersion.return_value = 1 s.step_status = Mock() s.buildslave = Mock() s.remote = Mock() s.start() for c in s.remote.method_calls: name, command, args = c commandName = command[3] kwargs = command[-1] if commandName == 'uploadFile': self.assertEquals(kwargs['slavesrc'], __file__) writer = kwargs['writer'] with open(__file__, "rb") as f: writer.remote_write(f.read()) self.assert_(not os.path.exists(self.destfile)) writer.remote_close() break else: self.assert_(False, "No uploadFile command found") with open(self.destfile, "rb") as dest: with open(__file__, "rb") as expect: self.assertEquals(dest.read(), expect.read())
def testURL(self): self.setupStep( transfer.FileUpload(workersrc=__file__, masterdest=self.destfile, url="http://server/file")) self.step.addURL = Mock() self.expectCommands( Expect( 'uploadFile', dict(workersrc=__file__, workdir='wkdir', blocksize=16384, maxsize=None, keepstamp=False, writer=ExpectRemoteRef(remotetransfer.FileWriter))) + Expect.behavior(uploadString("Hello world!")) + 0) self.expectOutcome(result=SUCCESS, state_string="uploading %s" % os.path.basename(__file__)) d = self.runStep() @d.addCallback def checkURL(_): self.step.addURL.assert_called_once_with( os.path.basename(self.destfile), "http://server/file") return d
def testURLText(self): self.setupStep( transfer.FileUpload(workersrc=__file__, masterdest=self.destfile, url="http://server/file", urlText="testfile")) self.step.addURL = Mock() self.expectCommands( Expect( 'uploadFile', dict(workersrc=__file__, workdir='wkdir', blocksize=262144, maxsize=None, keepstamp=False, writer=ExpectRemoteRef(remotetransfer.FileWriter))) + Expect.behavior(uploadString("Hello world!")) + 0) self.expectOutcome(result=SUCCESS, state_string="uploading {}".format( os.path.basename(__file__))) yield self.runStep() self.step.addURL.assert_called_once_with("testfile", "http://server/file")
def testURL(self): s = transfer.FileUpload(slavesrc=__file__, masterdest=self.destfile, url="http://server/file") s.build = Mock() s.build.getProperties.return_value = Properties() s.build.getSlaveCommandVersion.return_value = "2.13" s.step_status = Mock() s.step_status.addURL = Mock() s.buildslave = Mock() s.remote = Mock() s.start() for c in s.remote.method_calls: name, command, args = c commandName = command[3] kwargs = command[-1] if commandName == 'uploadFile': self.assertEquals(kwargs['slavesrc'], __file__) writer = kwargs['writer'] with open(__file__, "rb") as f: writer.remote_write(f.read()) self.assert_(not os.path.exists(self.destfile)) writer.remote_close() break else: self.assert_(False, "No uploadFile command found") s.step_status.addURL.assert_called_once_with( os.path.basename(self.destfile), "http://server/file")
def testURL(self): self.setup_step( transfer.FileUpload(workersrc=__file__, masterdest=self.destfile, url="http://server/file")) self.step.addURL = Mock() self.expect_commands( ExpectUploadFile(workersrc=__file__, workdir='wkdir', blocksize=262144, maxsize=None, keepstamp=False, writer=ExpectRemoteRef( remotetransfer.FileWriter)).upload_string( "Hello world!\n").exit(0)) self.expect_outcome(result=SUCCESS, state_string="uploading {}".format( os.path.basename(__file__))) yield self.run_step() self.step.addURL.assert_called_once_with( os.path.basename(self.destfile), "http://server/file")
def testException(self): self.setup_step( transfer.FileUpload(workersrc='srcfile', masterdest=self.destfile)) writers = [] self.expect_commands( ExpectUploadFile(workersrc="srcfile", workdir='wkdir', blocksize=262144, maxsize=None, keepstamp=False, writer=ExpectRemoteRef( remotetransfer.FileWriter)).upload_string( "Hello world!\n", out_writers=writers, error=RuntimeError('uh oh'))) self.expect_outcome(result=EXCEPTION, state_string="uploading srcfile (exception)") yield self.run_step() self.assertEqual(len(writers), 1) self.assertEqual(writers[0].cancel.called, True) self.assertEqual(len(self.flushLoggedErrors(RuntimeError)), 1)
def testException(self): self.setupStep( transfer.FileUpload(workersrc='srcfile', masterdest=self.destfile)) behavior = UploadError(uploadString("Hello world!")) self.expectCommands( Expect( 'uploadFile', dict(workersrc="srcfile", workdir='wkdir', blocksize=16384, maxsize=None, keepstamp=False, writer=ExpectRemoteRef(remotetransfer.FileWriter))) + Expect.behavior(behavior)) self.expectOutcome(result=EXCEPTION, state_string="uploading srcfile (exception)") d = self.runStep() @d.addCallback def check(_): self.assertEqual(behavior.writer.cancel.called, True) self.assertEqual(len(self.flushLoggedErrors(RuntimeError)), 1) return d
def testTimestamp(self): self.setup_step( transfer.FileUpload(workersrc=__file__, masterdest=self.destfile, keepstamp=True)) timestamp = (os.path.getatime(__file__), os.path.getmtime(__file__)) self.expect_commands( ExpectUploadFile(workersrc=__file__, workdir='wkdir', blocksize=262144, maxsize=None, keepstamp=True, writer=ExpectRemoteRef( remotetransfer.FileWriter)).upload_string( 'test\n', timestamp=timestamp).exit(0)) self.expect_outcome( result=SUCCESS, state_string=f"uploading {os.path.basename(__file__)}") yield self.run_step() desttimestamp = (os.path.getatime(self.destfile), os.path.getmtime(self.destfile)) srctimestamp = [int(t) for t in timestamp] desttimestamp = [int(d) for d in desttimestamp] self.assertEqual(srctimestamp[0], desttimestamp[0]) self.assertEqual(srctimestamp[1], desttimestamp[1])
def testTimestamp(self): self.setupStep( transfer.FileUpload(workersrc=__file__, masterdest=self.destfile, keepstamp=True)) timestamp = (os.path.getatime(__file__), os.path.getmtime(__file__)) self.expectCommands( Expect('uploadFile', dict( slavesrc=__file__, workdir='wkdir', blocksize=16384, maxsize=None, keepstamp=True, writer=ExpectRemoteRef(remotetransfer.FileWriter))) + Expect.behavior(uploadString('test', timestamp=timestamp)) + 0) self.expectOutcome( result=SUCCESS, state_string="uploading %s" % os.path.basename(__file__)) d = self.runStep() @d.addCallback def checkTimestamp(_): desttimestamp = (os.path.getatime(self.destfile), os.path.getmtime(self.destfile)) srctimestamp = map(int, timestamp) desttimestamp = map(int, desttimestamp) self.assertEquals(srctimestamp[0], desttimestamp[0]) self.assertEquals(srctimestamp[1], desttimestamp[1]) return d
def test_workersrc_old_api(self): step = transfer.FileUpload(workersrc='srcfile', masterdest='dstfile') with assertNotProducesWarnings(DeprecatedWorkerAPIWarning): new = step.workersrc with assertProducesWarning( DeprecatedWorkerNameWarning, message_pattern="'slavesrc' attribute is deprecated"): old = step.slavesrc self.assertIdentical(new, old)
def UploadPackage(directory): return transfer.FileUpload( mode=0644, workdir="source", slavesrc=util.Interpolate("%(prop:output-filepath)s"), masterdest=util.Interpolate( "%(kw:base)s/%(kw:directory)s/%(prop:output-filename)s", base=UPLOADBASE, directory=directory), url=util.Interpolate( "%(kw:base)s/%(kw:directory)s/%(prop:output-filename)s", base=UPLOADURL, directory=directory))
def testFailure(self): self.setupStep( transfer.FileUpload(slavesrc='srcfile', masterdest=self.destfile)) self.expectCommands( Expect('uploadFile', dict( slavesrc="srcfile", workdir='wkdir', blocksize=16384, maxsize=None, keepstamp=False, writer=ExpectRemoteRef(transfer._FileWriter))) + 1) self.expectOutcome( result=FAILURE, status_text=["uploading", "srcfile"]) d = self.runStep() return d
def testFailure(self): self.setupStep( transfer.FileUpload(workersrc='srcfile', masterdest=self.destfile)) self.expectCommands( Expect('uploadFile', dict( workersrc="srcfile", workdir='wkdir', blocksize=262144, maxsize=None, keepstamp=False, writer=ExpectRemoteRef(remotetransfer.FileWriter))) + 1) self.expectOutcome( result=FAILURE, state_string="uploading srcfile (failure)") d = self.runStep() return d
def test_interrupt(self): self.setupStep(transfer.FileUpload(workersrc='srcfile', masterdest=self.destfile)) self.expectCommands( Expect('uploadFile', {'workersrc': 'srcfile', 'workdir': 'wkdir', 'blocksize': 262144, 'maxsize': None, 'keepstamp': False, 'writer': ExpectRemoteRef(remotetransfer.FileWriter)}, interrupted=True) + 0) self.interrupt_nth_remote_command(0) self.expectOutcome(result=CANCELLED, state_string="uploading srcfile (cancelled)") self.expectLogfile('interrupt', 'interrupt reason') yield self.runStep()
def testBasic(self): self.setupStep( transfer.FileUpload(workersrc='srcfile', masterdest=self.destfile)) self.expectCommands( Expect('uploadFile', dict( slavesrc="srcfile", workdir='wkdir', blocksize=16384, maxsize=None, keepstamp=False, writer=ExpectRemoteRef(remotetransfer.FileWriter))) + Expect.behavior(uploadString("Hello world!")) + 0) self.expectOutcome( result=SUCCESS, state_string="uploading srcfile") d = self.runStep() return d
def testBasic(self): self.setup_step( transfer.FileUpload(workersrc='srcfile', masterdest=self.destfile)) self.expect_commands( ExpectUploadFile(workersrc="srcfile", workdir='wkdir', blocksize=262144, maxsize=None, keepstamp=False, writer=ExpectRemoteRef( remotetransfer.FileWriter)).upload_string( "Hello world!\n").exit(0)) self.expect_outcome(result=SUCCESS, state_string="uploading srcfile") d = self.run_step() return d
def test_interrupt(self): self.setup_step( transfer.FileUpload(workersrc='srcfile', masterdest=self.destfile)) self.expect_commands( ExpectUploadFile(workersrc='srcfile', workdir='wkdir', blocksize=262144, maxsize=None, keepstamp=False, writer=ExpectRemoteRef(remotetransfer.FileWriter), interrupted=True).exit(0)) self.interrupt_nth_remote_command(0) self.expect_outcome(result=CANCELLED, state_string="uploading srcfile (cancelled)") self.expect_log_file('interrupt', 'interrupt reason') yield self.run_step()
def testDescriptionDone(self): self.setupStep( transfer.FileUpload(workersrc=__file__, masterdest=self.destfile, url="http://server/file", descriptionDone="Test File Uploaded")) self.step.addURL = Mock() self.expectCommands( Expect('uploadFile', dict( workersrc=__file__, workdir='wkdir', blocksize=262144, maxsize=None, keepstamp=False, writer=ExpectRemoteRef(remotetransfer.FileWriter))) + Expect.behavior(uploadString("Hello world!")) + 0) self.expectOutcome( result=SUCCESS, state_string="Test File Uploaded") d = self.runStep() return d
def testAllSteps(self): # make sure that steps can be created from the factories that they # return for s in ( dummy.Dummy(), dummy.FailingDummy(), dummy.RemoteDummy(), maxq.MaxQ("testdir"), python.BuildEPYDoc(), python.PyFlakes(), python_twisted.HLint(), python_twisted.Trial(testpath=None, tests="tests"), python_twisted.ProcessDocs(), python_twisted.BuildDebs(), python_twisted.RemovePYCs(), shell.ShellCommand(), shell.TreeSize(), shell.Configure(), shell.Compile(), shell.Test(), source.CVS("cvsroot", "module"), source.SVN("svnurl"), source.Darcs("repourl"), source.Git("repourl"), source.Arch("url", "version"), source.Bazaar("url", "version", "archive"), source.Bzr("repourl"), source.Mercurial("repourl"), source.P4("p4base"), source.P4Sync(1234, "p4user", "passwd", "client", mode="copy"), source.Monotone("server", "branch"), transfer.FileUpload("src", "dest"), transfer.FileDownload("src", "dest"), ): try: self._loop(s) except: print "error checking %s" % s raise
def testTimestamp(self): s = transfer.FileUpload(slavesrc=__file__, masterdest=self.destfile, keepstamp=True) s.build = Mock() s.build.getProperties.return_value = Properties() s.build.getSlaveCommandVersion.return_value = "2.13" s.step_status = Mock() s.buildslave = Mock() s.remote = Mock() s.start() timestamp = (os.path.getatime(__file__), os.path.getmtime(__file__)) for c in s.remote.method_calls: name, command, args = c commandName = command[3] kwargs = command[-1] if commandName == 'uploadFile': self.assertEquals(kwargs['slavesrc'], __file__) writer = kwargs['writer'] with open(__file__, "rb") as f: writer.remote_write(f.read()) self.assert_(not os.path.exists(self.destfile)) writer.remote_close() writer.remote_utime(timestamp) break else: self.assert_(False, "No uploadFile command found") desttimestamp = (os.path.getatime(self.destfile), os.path.getmtime(self.destfile)) timestamp = map(int, timestamp) desttimestamp = map(int, desttimestamp) self.assertEquals(timestamp[0], desttimestamp[0]) self.assertEquals(timestamp[1], desttimestamp[1])
def testDescriptionDone(self): self.setup_step( transfer.FileUpload(workersrc=__file__, masterdest=self.destfile, url="http://server/file", descriptionDone="Test File Uploaded")) self.step.addURL = Mock() self.expect_commands( ExpectUploadFile(workersrc=__file__, workdir='wkdir', blocksize=262144, maxsize=None, keepstamp=False, writer=ExpectRemoteRef( remotetransfer.FileWriter)).upload_string( "Hello world!\n").exit(0)) self.expect_outcome(result=SUCCESS, state_string="Test File Uploaded") d = self.run_step() return d
def test_init_workersrc_new_api_no_warns(self): with assertNotProducesWarnings(DeprecatedWorkerAPIWarning): step = transfer.FileUpload(workersrc='srcfile', masterdest='dstfile') self.assertEqual(step.workersrc, 'srcfile')
def testConstructorModeType(self): self.assertRaises( config.ConfigErrors, lambda: transfer.FileUpload( workersrc=__file__, masterdest='xyz', mode='g+rwx'))
def test_constructor_mode_type(self): self.assertRaises(config.ConfigErrors, lambda: transfer.FileUpload(slavesrc=__file__, masterdest='xyz', mode='g+rwx'))
def test_init_workersrc_positional(self): with assertNotProducesWarnings(DeprecatedWorkerAPIWarning): step = transfer.FileUpload('srcfile', 'dstfile') self.assertEqual(step.workersrc, 'srcfile')
def test_init_positional_args(self): with self.assertRaises(TypeError): transfer.FileUpload() with self.assertRaises(TypeError): transfer.FileUpload('src')
def test_init_positional_args(self): self.assertRaises(TypeError, lambda: transfer.FileUpload()) self.assertRaises(TypeError, lambda: transfer.FileUpload('src'))
def test_init_workersrc_positional(self): step = transfer.FileUpload('srcfile', 'dstfile') self.assertEqual(step.workersrc, 'srcfile')