コード例 #1
0
    def _do_upload(self, res, size, files, uris):
        name = '%d' % size
        print
        print "uploading %s" % name
        if self.mode in ("upload", "upload-self"):
            files[name] = self.create_data(name, size)
            d = self.control_rref.callRemote("upload_from_file_to_uri",
                                             files[name].encode("utf-8"),
                                             convergence="check-memory")

            def _done(uri):
                os.remove(files[name])
                del files[name]
                return uri

            d.addCallback(_done)
        elif self.mode == "upload-POST":
            data = "a" * size
            url = "/uri"
            d = self.POST(url, t="upload", file=("%d.data" % size, data))
        elif self.mode in ("receive", "download", "download-GET",
                           "download-GET-slow"):
            # mode=receive: upload the data from a local peer, so that the
            # client-under-test receives and stores the shares
            #
            # mode=download*: upload the data from a local peer, then have
            # the client-under-test download it.
            #
            # we need to wait until the uploading node has connected to all
            # peers, since the wait_for_client_connections() above doesn't
            # pay attention to our self.nodes[] and their connections.
            files[name] = self.create_data(name, size)
            u = self.nodes[0].getServiceNamed("uploader")
            d = self.nodes[0].debug_wait_for_client_connections(self.numnodes +
                                                                1)
            d.addCallback(lambda res: u.upload(
                upload.FileName(files[name], convergence="check-memory")))
            d.addCallback(lambda results: results.uri)
        else:
            raise ValueError("unknown mode=%s" % self.mode)

        def _complete(uri):
            uris[name] = uri
            print "uploaded %s" % name

        d.addCallback(_complete)
        return d
コード例 #2
0
ファイル: control.py プロジェクト: testimx62/tahoe-lafs
 def _upload_one_file(ignored, i):
     if i >= self.count:
         return
     fn = os.path.join(self.basedir, str(i))
     if self.mutable_mode == "create":
         data = open(fn, "rb").read()
         d1 = self.parent.create_mutable_file(data)
         d1.addCallback(lambda n: n.get_uri())
     elif self.mutable_mode == "upload":
         data = open(fn, "rb").read()
         d1 = self._n.overwrite(MutableData(data))
         d1.addCallback(lambda res: self._n.get_uri())
     else:
         up = upload.FileName(fn, convergence=None)
         d1 = self.parent.upload(up)
         d1.addCallback(lambda results: results.get_uri())
     d1.addCallback(_record_uri, i)
     d1.addCallback(_upload_one_file, i + 1)
     return d1
コード例 #3
0
ファイル: control.py プロジェクト: ntrischi/tahoe-lafs
 def remote_upload_random_data_from_file(self, size, convergence):
     tempdir = tempfile.mkdtemp()
     filename = os.path.join(tempdir, "data")
     f = open(filename, "wb")
     block = "a" * 8192
     while size > 0:
         l = min(size, 8192)
         f.write(block[:l])
         size -= l
     f.close()
     uploader = self.parent.getServiceNamed("uploader")
     u = upload.FileName(filename, convergence=convergence)
     d = uploader.upload(u)
     d.addCallback(lambda results: results.get_uri())
     def _done(uri):
         os.remove(filename)
         os.rmdir(tempdir)
         return uri
     d.addCallback(_done)
     return d
コード例 #4
0
 def remote_upload_from_file_to_uri(self, filename, convergence):
     uploader = self.parent.getServiceNamed("uploader")
     u = upload.FileName(filename, convergence=convergence)
     d = uploader.upload(u)
     d.addCallback(lambda results: results.get_uri())
     return d