mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-08 03:14:21 +00:00
fix buggy test; restructure data
scared about duplicate nodeids in the data getting lost, switch to a list
This commit is contained in:
parent
754304e4d5
commit
7027547ecc
@ -262,7 +262,7 @@ class FakeClient(Client):
|
||||
last_connect_time = 10, last_loss_time = 20, last_rx_time = 30))
|
||||
self.storage_broker.test_add_server("disconnected_nodeid",
|
||||
FakeDisplayableServer(
|
||||
serverid="other_nodeid", nickname=u"disconnected_nickname \u263B", connected = False,
|
||||
serverid="disconnected_nodeid", nickname=u"disconnected_nickname \u263B", connected = False,
|
||||
last_connect_time = None, last_loss_time = 25, last_rx_time = 35))
|
||||
self.introducer_client = None
|
||||
self.history = FakeHistory()
|
||||
@ -739,6 +739,7 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, testutil.ReallyEqualMixi
|
||||
def test_create(self):
|
||||
pass
|
||||
|
||||
maxDiff = None
|
||||
def test_welcome_json(self):
|
||||
"""
|
||||
There is a JSON version of the welcome page which can be selected with the
|
||||
@ -748,16 +749,29 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, testutil.ReallyEqualMixi
|
||||
def _check(res):
|
||||
decoded = json.loads(res)
|
||||
expected = {
|
||||
'introducers': {'statuses': []},
|
||||
'servers': {
|
||||
'other_nodeid': {
|
||||
'available_space': 123456,
|
||||
'connection_status': 'summary',
|
||||
'last_received_data': u'',
|
||||
'nickname': u'other_nickname \u263b',
|
||||
'version': '1.0',
|
||||
},
|
||||
u'introducers': {
|
||||
u'statuses': [],
|
||||
},
|
||||
u'servers': sorted([
|
||||
{u"nodeid": u'other_nodeid',
|
||||
u"description": {
|
||||
u'available_space': 123456,
|
||||
u'connection_status': u'summary',
|
||||
u'last_received_data': None,
|
||||
u'nickname': u'other_nickname \u263b',
|
||||
u'version': u'1.0',
|
||||
},
|
||||
},
|
||||
{u"nodeid": u'disconnected_nodeid',
|
||||
u"description": {
|
||||
u'available_space': 123456,
|
||||
u'connection_status': u'summary',
|
||||
u'last_received_data': None,
|
||||
u'nickname': u'disconnected_nickname \u263b',
|
||||
u'version': u'1.0',
|
||||
},
|
||||
},
|
||||
]),
|
||||
}
|
||||
self.assertEqual(expected, decoded)
|
||||
d.addCallback(_check)
|
||||
|
@ -197,32 +197,50 @@ class Root(MultiFormatPage):
|
||||
def data_my_nickname(self, ctx, data):
|
||||
return self.client.nickname
|
||||
|
||||
|
||||
def render_JSON(self, req):
|
||||
req.setHeader("content-type", "application/json; charset=utf-8")
|
||||
intro_summaries = [s.summary for s in self.client.introducer_connection_statuses()]
|
||||
sb = self.client.get_storage_broker()
|
||||
servers = {}
|
||||
for server in sb.get_known_servers():
|
||||
server_id = server.get_serverid()
|
||||
servers[server_id] = {}
|
||||
servers[server_id]["connection_status"] = server.get_connection_status().summary
|
||||
servers[server_id]["available_space"] = server.get_available_space()
|
||||
servers[server_id]["nickname"] = server.get_nickname()
|
||||
if server.get_version() is not None:
|
||||
servers[server_id]["version"] = server.get_version()["application-version"]
|
||||
else:
|
||||
servers[server_id]["version"] = ""
|
||||
if server.rref is not None:
|
||||
servers[server_id]["last_received_data"] = server.rref.getDataLastReceivedAt()
|
||||
else:
|
||||
servers[server_id]["last_received_data"] = ""
|
||||
data = {
|
||||
"introducers": {
|
||||
"statuses": intro_summaries,
|
||||
},
|
||||
"servers": servers
|
||||
servers = self._describe_known_servers(sb)
|
||||
result = {
|
||||
"introducers": {
|
||||
"statuses": intro_summaries,
|
||||
},
|
||||
"servers": servers
|
||||
}
|
||||
return json.dumps(result, indent=1) + "\n"
|
||||
|
||||
|
||||
def _describe_known_servers(self, broker):
|
||||
return sorted(list(
|
||||
{
|
||||
u"nodeid": server.get_serverid(),
|
||||
u"description": self._describe_server(server),
|
||||
}
|
||||
return json.dumps(data, indent=1) + "\n"
|
||||
for server
|
||||
in broker.get_known_servers()
|
||||
))
|
||||
|
||||
|
||||
def _describe_server(self, server):
|
||||
description = {
|
||||
u"connection_status": server.get_connection_status().summary,
|
||||
u"available_space": server.get_available_space(),
|
||||
u"nickname": server.get_nickname(),
|
||||
u"version": None,
|
||||
u"last_received_data": None,
|
||||
}
|
||||
version = server.get_version()
|
||||
if version is not None:
|
||||
description[u"version"] = version["application-version"]
|
||||
|
||||
rref = server.rref
|
||||
if rref is not None:
|
||||
description[u"last_received_data"] = rref.getDataLastReceivedAt()
|
||||
|
||||
return description
|
||||
|
||||
|
||||
def render_magic_folder(self, ctx, data):
|
||||
if self.client._magic_folder is None:
|
||||
|
Loading…
x
Reference in New Issue
Block a user