There's really no point to specifying REST details - if you want to learn from a specific node, just make it your next teacher.

pull/329/head
jMyles 2018-06-29 19:15:56 -07:00
parent d819c9f026
commit 90c0044394
2 changed files with 13 additions and 11 deletions

View File

@ -325,17 +325,18 @@ class Character:
if len(still_unknown) <= allow_missing: if len(still_unknown) <= allow_missing:
return False return False
elif not self._learning_task.running: elif not self._learning_task.running:
raise self.NotEnoughUrsulas("We didn't discover any nodes because the learning loop isn't running. Start it with start_learning().") raise self.NotEnoughUrsulas(
"We didn't discover any nodes because the learning loop isn't running. Start it with start_learning().")
else: else:
raise self.NotEnoughUrsulas("After {} seconds and {} rounds, didn't find these {} nodes: {}".format( raise self.NotEnoughUrsulas("After {} seconds and {} rounds, didn't find these {} nodes: {}".format(
timeout, rounds_undertaken, len(still_unknown), still_unknown)) timeout, rounds_undertaken, len(still_unknown), still_unknown))
def learn_from_teacher_node(self, rest_address: str = None, port: int = None, eager=False): def learn_from_teacher_node(self, eager=False):
""" """
Sends a request to node_url to find out about known nodes. Sends a request to node_url to find out about known nodes.
""" """
self._learning_round += 1 self._learning_round += 1
if rest_address is None:
current_teacher = self.current_teacher_node() current_teacher = self.current_teacher_node()
rest_address = current_teacher.rest_interface.host rest_address = current_teacher.rest_interface.host
port = current_teacher.rest_interface.port port = current_teacher.rest_interface.port
@ -362,9 +363,10 @@ class Character:
if eager: if eager:
ursula = Ursula.from_rest_url(network_middleware=self.network_middleware, ursula = Ursula.from_rest_url(network_middleware=self.network_middleware,
host=rest_info.host, host=node.rest_interface.host,
port=rest_info.port) port=node.rest_interface.port)
self.remember_node(ursula)
else:
self.remember_node(node) self.remember_node(node)
else: else:

View File

@ -59,7 +59,7 @@ def test_alice_finds_ursula_via_rest(alice, ursulas):
some_ursula_interface = ursulas.pop().rest_interface some_ursula_interface = ursulas.pop().rest_interface
new_nodes = alice.learn_from_teacher_node(rest_address=some_ursula_interface.host, port=some_ursula_interface.port) new_nodes = alice.learn_from_teacher_node()
assert len(new_nodes) == len(ursulas) assert len(new_nodes) == len(ursulas)
for ursula in ursulas: for ursula in ursulas: