From d33f6409da315f3a6ee3749c8217d704898a565f Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone <exarkun@twistedmatrix.com> Date: Wed, 16 Oct 2019 10:42:07 -0400 Subject: [PATCH] Make the client send the right number of passes with add_lease --- src/_zkapauthorizer/_storage_client.py | 26 ++++++++++++++----- .../tests/test_storage_protocol.py | 17 +++++------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/_zkapauthorizer/_storage_client.py b/src/_zkapauthorizer/_storage_client.py index fae88f4..3973164 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 f567d32..c045a03 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( -- GitLab