Changeset 89683a3 in trunk


Ignore:
Timestamp:
2009-02-09T02:41:27Z (17 years ago)
Author:
Brian Warner <warner@…>
Branches:
master
Children:
0b29aae
Parents:
bbef104
Message:

test_upload: add test of maximum-immutable-share-size, to complete the last item of #538

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/allmydata/test/test_upload.py

    rbbef104 r89683a3  
    8787                         "application-version": str(allmydata.__version__),
    8888                         }
     89        if mode == "small":
     90            self.version = { "http://allmydata.org/tahoe/protocols/storage/v1" :
     91                             { "maximum-immutable-share-size": 10 },
     92                             "application-version": str(allmydata.__version__),
     93                             }
     94
    8995
    9096    def callRemote(self, methname, *args, **kwargs):
     
    152158        self.mode = mode
    153159        self.num_servers = num_servers
     160        if mode == "some_big_some_small":
     161            self.peers = []
     162            for fakeid in range(num_servers):
     163                if fakeid % 2:
     164                    self.peers.append( ("%20d" % fakeid,
     165                                        FakeStorageServer("good")) )
     166                else:
     167                    self.peers.append( ("%20d" % fakeid,
     168                                        FakeStorageServer("small")) )
     169        else:
     170            self.peers = [ ("%20d"%fakeid, FakeStorageServer(self.mode),)
     171                           for fakeid in range(self.num_servers) ]
    154172    def log(self, *args, **kwargs):
    155173        pass
    156174    def get_permuted_peers(self, storage_index, include_myself):
    157         peers = [ ("%20d"%fakeid, FakeStorageServer(self.mode),)
    158                   for fakeid in range(self.num_servers) ]
    159         self.last_peers = [p[1] for p in peers]
    160         return peers
     175        self.last_peers = [p[1] for p in self.peers]
     176        return self.peers
    161177    def get_encoding_parameters(self):
    162178        return self.DEFAULT_ENCODING_PARAMETERS
     
    493509        return d
    494510
     511    def test_some_big_some_small(self):
     512        # 10 shares, 20 servers, but half the servers don't support a
     513        # share-size large enough for our file
     514        self.node = FakeClient(mode="some_big_some_small", num_servers=20)
     515        self.u = upload.Uploader()
     516        self.u.running = True
     517        self.u.parent = self.node
     518
     519        data = self.get_data(SIZE_LARGE)
     520        self.set_encoding_parameters(3, 5, 10)
     521        d = upload_data(self.u, data)
     522        d.addCallback(extract_uri)
     523        d.addCallback(self._check_large, SIZE_LARGE)
     524        def _check(res):
     525            # we should have put one share each on the big peers, and zero
     526            # shares on the small peers
     527            total_allocated = 0
     528            for p in self.node.last_peers:
     529                if p.mode == "good":
     530                    self.failUnlessEqual(len(p.allocated), 1)
     531                elif p.mode == "small":
     532                    self.failUnlessEqual(len(p.allocated), 0)
     533                total_allocated += len(p.allocated)
     534            self.failUnlessEqual(total_allocated, 10)
     535        d.addCallback(_check)
     536        return d
     537
     538
    495539class StorageIndex(unittest.TestCase):
    496540    def test_params_must_matter(self):
Note: See TracChangeset for help on using the changeset viewer.