diff --git a/src/_zkapauthorizer/lease_maintenance.py b/src/_zkapauthorizer/lease_maintenance.py index e264f32ca8a0dd60b362da5ca01150563d092173..f32de8dff441b6832a906f32681182c7a9233f45 100644 --- a/src/_zkapauthorizer/lease_maintenance.py +++ b/src/_zkapauthorizer/lease_maintenance.py @@ -154,7 +154,11 @@ def renew_leases( storage_indexes = yield iter_storage_indexes(visit_assets) renewal_secret = secret_holder.get_renewal_secret() - servers = storage_broker.get_connected_servers() + servers = list( + server.get_storage_server() + for server + in storage_broker.get_connected_servers() + ) for server in servers: # Consider parallelizing this. diff --git a/src/_zkapauthorizer/tests/test_lease_maintenance.py b/src/_zkapauthorizer/tests/test_lease_maintenance.py index 7d4df1de10ab11a5bdb1df2522c97d2bfce64d6c..5b90fe3654839390e7a551bfc80b1d0a2bfd5160 100644 --- a/src/_zkapauthorizer/tests/test_lease_maintenance.py +++ b/src/_zkapauthorizer/tests/test_lease_maintenance.py @@ -28,6 +28,10 @@ from datetime import ( import attr +from zope.interface import ( + implementer, +) + from testtools import ( TestCase, ) @@ -82,6 +86,10 @@ from allmydata.util.hashutil import ( from allmydata.client import ( SecretHolder, ) +from allmydata.interfaces import ( + IStorageBroker, + IServer, +) from ..foolscap import ( ShareStat, @@ -179,11 +187,29 @@ def storage_servers(clocks): clocks, dictionaries(storage_indexes(), share_stats()), lease_seeds(), + ).map( + DummyServer, ) +@implementer(IServer) +@attr.s +class DummyServer(object): + """ + A partial implementation of a Tahoe-LAFS "native" storage server. + """ + _storage_server = attr.ib() + + def get_storage_server(self): + return self._storage_server + + +@implementer(IStorageBroker) @attr.s class DummyStorageBroker(object): + """ + A partial implementation of a Tahoe-LAFS storage broker. + """ clock = attr.ib() _storage_servers = attr.ib() @@ -455,7 +481,11 @@ class RenewLeasesTests(TestCase): ) self.assertThat( - storage_broker.get_connected_servers(), + list( + server.get_storage_server() + for server + in storage_broker.get_connected_servers() + ), AllMatch(leases_current( relevant_storage_indexes, get_now(), @@ -506,7 +536,11 @@ class MaintainLeasesFromRootTests(TestCase): ) self.assertThat( - storage_broker.get_connected_servers(), + list( + server.get_storage_server() + for server + in storage_broker.get_connected_servers() + ), AllMatch(leases_current( relevant_storage_indexes, get_now(), @@ -550,9 +584,9 @@ class MaintainLeasesFromRootTests(TestCase): expected = [] for node in root_node.flatten(): - for storage_server in storage_broker.get_connected_servers(): + for server in storage_broker.get_connected_servers(): try: - stat = storage_server.buckets[node.get_storage_index()] + stat = server.get_storage_server().buckets[node.get_storage_index()] except KeyError: continue else: