mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-06-18 23:38:18 +00:00
Support multiple plugins
This commit is contained in:
@ -635,11 +635,11 @@ class _Client(node.Node, pollmixin.PollMixin):
|
|||||||
"""
|
"""
|
||||||
Get the names of storage plugins that are enabled in the configuration.
|
Get the names of storage plugins that are enabled in the configuration.
|
||||||
"""
|
"""
|
||||||
return {
|
return set(
|
||||||
self.config.get_config(
|
self.config.get_config(
|
||||||
"storage", "plugins", b""
|
"storage", "plugins", b""
|
||||||
).decode("ascii")
|
).decode("ascii").split(u",")
|
||||||
}
|
)
|
||||||
|
|
||||||
|
|
||||||
def _collect_storage_plugins(self, storage_plugin_names):
|
def _collect_storage_plugins(self, storage_plugin_names):
|
||||||
@ -668,7 +668,11 @@ class _Client(node.Node, pollmixin.PollMixin):
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
for plugin
|
for plugin
|
||||||
in plugins
|
# The order is fairly arbitrary and it is not meant to convey
|
||||||
|
# anything but providing *some* stable ordering makes the data a
|
||||||
|
# little easier to deal with (mainly in tests and when manually
|
||||||
|
# inspecting it).
|
||||||
|
in sorted(plugins, key=lambda p: p.name)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,4 +8,5 @@ from allmydata.test.storage_plugin import (
|
|||||||
|
|
||||||
adoptedEndpointParser = AdoptedServerPort()
|
adoptedEndpointParser = AdoptedServerPort()
|
||||||
|
|
||||||
dummyStorage = DummyStorage()
|
dummyStoragev1 = DummyStorage(u"tahoe-lafs-dummy-v1")
|
||||||
|
dummyStoragev2 = DummyStorage(u"tahoe-lafs-dummy-v2")
|
||||||
|
@ -33,8 +33,9 @@ class RIDummy(RemoteInterface):
|
|||||||
|
|
||||||
|
|
||||||
@implementer(IFoolscapStoragePlugin)
|
@implementer(IFoolscapStoragePlugin)
|
||||||
|
@attr.s
|
||||||
class DummyStorage(object):
|
class DummyStorage(object):
|
||||||
name = u"tahoe-lafs-dummy-v1"
|
name = attr.ib()
|
||||||
|
|
||||||
def get_storage_server(self, configuration, get_anonymous_storage_server):
|
def get_storage_server(self, configuration, get_anonymous_storage_server):
|
||||||
return AnnounceableStorageServer(
|
return AnnounceableStorageServer(
|
||||||
|
@ -1187,6 +1187,52 @@ introducer.furl = pb://abcde@nowhere/fake
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_multiple_storage_plugin_announcements(self):
|
||||||
|
"""
|
||||||
|
The announcements from several enabled storage plugins are published when
|
||||||
|
storage is enabled.
|
||||||
|
"""
|
||||||
|
self.useFixture(UseTestPlugins())
|
||||||
|
|
||||||
|
config = config_from_string(
|
||||||
|
self.basedir,
|
||||||
|
u"tub.port",
|
||||||
|
self.get_config(
|
||||||
|
storage_enabled=True,
|
||||||
|
more_storage=b"plugins=tahoe-lafs-dummy-v1,tahoe-lafs-dummy-v2",
|
||||||
|
more_sections=(
|
||||||
|
b"[storageserver.plugins.tahoe-lafs-dummy-v1]\n"
|
||||||
|
b"some = thing-1\n"
|
||||||
|
b"[storageserver.plugins.tahoe-lafs-dummy-v2]\n"
|
||||||
|
b"some = thing-2\n"
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
def matches_dummy_announcement(v):
|
||||||
|
return MatchesStructure(
|
||||||
|
service_name=Equals("storage"),
|
||||||
|
ann=MatchesDict({
|
||||||
|
# Everyone gets a name and a fURL added to their announcement.
|
||||||
|
u"name": Equals(u"tahoe-lafs-dummy-v{}".format(v)),
|
||||||
|
u"storage-server-FURL": matches_furl(),
|
||||||
|
# The plugin can contribute things, too.
|
||||||
|
u"value": Equals(u"thing-{}".format(v)),
|
||||||
|
}),
|
||||||
|
signing_key=MatchesNodePublicKey(self.basedir),
|
||||||
|
)
|
||||||
|
self.assertThat(
|
||||||
|
client.create_client_from_config(config, introducer_factory=MemoryIntroducerClient),
|
||||||
|
succeeded(AfterPreprocessing(
|
||||||
|
get_published_announcements,
|
||||||
|
MatchesListwise([
|
||||||
|
matches_anonymous_storage_announcement(self.basedir),
|
||||||
|
matches_dummy_announcement(b"1"),
|
||||||
|
matches_dummy_announcement(b"2"),
|
||||||
|
]),
|
||||||
|
)),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_stable_storage_server_furl(self):
|
def test_stable_storage_server_furl(self):
|
||||||
"""
|
"""
|
||||||
The value for the ``storage-server-FURL`` item in the announcement for a
|
The value for the ``storage-server-FURL`` item in the announcement for a
|
||||||
|
Reference in New Issue
Block a user