Exemple #1
0
    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])
Exemple #2
0
    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')
Exemple #3
0
    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())
Exemple #4
0
    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
Exemple #5
0
    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")
Exemple #6
0
    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")
Exemple #7
0
    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")
Exemple #8
0
    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)
Exemple #9
0
    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
Exemple #10
0
    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])
Exemple #11
0
    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
Exemple #12
0
    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)
Exemple #13
0
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
Exemple #15
0
    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
Exemple #16
0
    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()
Exemple #17
0
    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
Exemple #18
0
    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
Exemple #19
0
    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()
Exemple #20
0
    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
Exemple #21
0
 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
Exemple #22
0
    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])
Exemple #23
0
    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
Exemple #24
0
    def test_init_workersrc_new_api_no_warns(self):
        with assertNotProducesWarnings(DeprecatedWorkerAPIWarning):
            step = transfer.FileUpload(workersrc='srcfile',
                                       masterdest='dstfile')

        self.assertEqual(step.workersrc, 'srcfile')
Exemple #25
0
 def testConstructorModeType(self):
     self.assertRaises(
         config.ConfigErrors, lambda: transfer.FileUpload(
             workersrc=__file__, masterdest='xyz', mode='g+rwx'))
Exemple #26
0
 def test_constructor_mode_type(self):
     self.assertRaises(config.ConfigErrors, lambda:
                       transfer.FileUpload(slavesrc=__file__, masterdest='xyz', mode='g+rwx'))
Exemple #27
0
    def test_init_workersrc_positional(self):
        with assertNotProducesWarnings(DeprecatedWorkerAPIWarning):
            step = transfer.FileUpload('srcfile', 'dstfile')

        self.assertEqual(step.workersrc, 'srcfile')
Exemple #28
0
 def test_init_positional_args(self):
     with self.assertRaises(TypeError):
         transfer.FileUpload()
     with self.assertRaises(TypeError):
         transfer.FileUpload('src')
Exemple #29
0
 def test_init_positional_args(self):
     self.assertRaises(TypeError, lambda: transfer.FileUpload())
     self.assertRaises(TypeError, lambda: transfer.FileUpload('src'))
Exemple #30
0
    def test_init_workersrc_positional(self):
        step = transfer.FileUpload('srcfile', 'dstfile')

        self.assertEqual(step.workersrc, 'srcfile')