diff --git a/src/_zkapauthorizer/_storage_client.py b/src/_zkapauthorizer/_storage_client.py index fae88f4a79e23ec83784974c9a45db7e55f60012..3973164db6257f2d5d8b4bc1f4bc94c0b609db97 100644 --- a/src/_zkapauthorizer/_storage_client.py +++ b/src/_zkapauthorizer/_storage_client.py @@ -127,19 +127,33 @@ class ZKAPAuthorizerStorageClient(object): storage_index, ) + @inlineCallbacks def add_lease( self, storage_index, renew_secret, cancel_secret, ): - return self._rref.callRemote( - "add_lease", - self._get_encoded_passes(add_lease_message(storage_index), 1), + share_sizes = (yield self._rref.callRemote( + "share_sizes", storage_index, - renew_secret, - cancel_secret, - ) + None, + )).values() + num_passes = required_passes(BYTES_PER_PASS, share_sizes) + # print("Adding lease to {!r} with sizes {} with {} passes".format( + # storage_index, + # share_sizes, + # num_passes, + # )) + returnValue(( + yield self._rref.callRemote( + "add_lease", + self._get_encoded_passes(add_lease_message(storage_index), num_passes), + storage_index, + renew_secret, + cancel_secret, + ) + )) def renew_lease( self, diff --git a/src/_zkapauthorizer/tests/test_storage_protocol.py b/src/_zkapauthorizer/tests/test_storage_protocol.py index f567d320928009eb74d5b3e45efb30d9eff954cf..c045a03f37d7418c1adb1e7862c0b27e61853939 100644 --- a/src/_zkapauthorizer/tests/test_storage_protocol.py +++ b/src/_zkapauthorizer/tests/test_storage_protocol.py @@ -252,10 +252,10 @@ class ShareTests(TestCase): storage_index=storage_indexes(), renew_secrets=tuples(lease_renew_secrets(), lease_renew_secrets()), cancel_secret=lease_cancel_secrets(), - sharenum=sharenums(), + sharenums=sharenum_sets(), size=sizes(), ) - def test_add_lease(self, storage_index, renew_secrets, cancel_secret, sharenum, size): + def test_add_lease(self, storage_index, renew_secrets, cancel_secret, sharenums, size): """ A lease can be added to an existing immutable share. """ @@ -274,7 +274,7 @@ class ShareTests(TestCase): storage_index, add_lease_secret, cancel_secret, - {sharenum}, + sharenums, size, canary=self.canary, ) @@ -293,10 +293,10 @@ class ShareTests(TestCase): storage_index=storage_indexes(), renew_secret=lease_renew_secrets(), cancel_secret=lease_cancel_secrets(), - sharenum=sharenums(), + sharenums=sharenum_sets(), size=sizes(), ) - def test_renew_lease(self, storage_index, renew_secret, cancel_secret, sharenum, size): + def test_renew_lease(self, storage_index, renew_secret, cancel_secret, sharenums, size): """ A lease on an immutable share can be updated to expire at a later time. """ @@ -315,7 +315,7 @@ class ShareTests(TestCase): storage_index, renew_secret, cancel_secret, - {sharenum}, + sharenums, size, canary=self.canary, ) @@ -328,13 +328,10 @@ class ShareTests(TestCase): ), ) - # Based on Tahoe-LAFS' hard-coded renew time. - RENEW_INTERVAL = 60 * 60 * 24 * 31 - [lease] = self.anonymous_storage_server.get_leases(storage_index) self.assertThat( lease.get_expiration_time(), - Equals(int(now + RENEW_INTERVAL)), + Equals(int(now + self.server.LEASE_PERIOD.total_seconds())), ) @given(