mirror of https://github.com/nucypher/nucypher.git
The connectivity problem will now manfiest itself as NotEnoughNodes, as Bob won't have learned in time to try to get the map.
parent
d3c6d121d4
commit
1170c27b63
|
@ -596,13 +596,13 @@ class Bob(Character):
|
|||
raise _MapClass.NowhereToBeFound(f"Asked {len(self.known_nodes)} nodes, but none had map {map_id} ")
|
||||
|
||||
self.block_until_number_of_known_nodes_is(8, timeout=2, learn_on_this_thread=True)
|
||||
nodes_with_map = self.matching_nodes_among(self.known_nodes, no_less_than=8)
|
||||
nodes_with_map = self.matching_nodes_among(self.known_nodes)
|
||||
random.shuffle(nodes_with_map)
|
||||
|
||||
for node in nodes_with_map:
|
||||
try:
|
||||
response = network_middleware.get_treasure_map_from_node(node=node, map_id=map_id)
|
||||
except NodeSeemsToBeDown:
|
||||
except (NodeSeemsToBeDown, self.NotEnoughNodes):
|
||||
continue
|
||||
except network_middleware.NotFound:
|
||||
self.log.info(f"Node {node} claimed not to have TreasureMap {map_id}")
|
||||
|
|
|
@ -167,7 +167,7 @@ class BlockchainArrangement(Arrangement):
|
|||
|
||||
class PolicyPayloadMutex(DeferredList):
|
||||
|
||||
def __init__(self, deferredList, percent_to_complete_before_release=10, *args, **kwargs):
|
||||
def __init__(self, deferredList, percent_to_complete_before_release=5, *args, **kwargs):
|
||||
self.percent_to_complete_before_release = percent_to_complete_before_release
|
||||
self._policy_locking_queue = Queue()
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ def test_bob_can_retreive_the_treasure_map_and_decrypt_it(enacted_federated_poli
|
|||
# through a side-channel with Alice.
|
||||
|
||||
# If Bob doesn't know about any Ursulas, he can't find the TreasureMap via the REST swarm:
|
||||
with pytest.raises(bob.NotEnoughTeachers):
|
||||
with pytest.raises(bob.NotEnoughNodes):
|
||||
treasure_map_from_wire = bob.get_treasure_map(enacted_federated_policy.alice.stamp,
|
||||
enacted_federated_policy.label)
|
||||
|
||||
|
|
|
@ -357,8 +357,9 @@ def blockchain_alice(alice_blockchain_test_config, testerchain):
|
|||
|
||||
@pytest.fixture(scope="module")
|
||||
def federated_bob(bob_federated_test_config):
|
||||
_bob = bob_federated_test_config.produce()
|
||||
return _bob
|
||||
bob = bob_federated_test_config.produce()
|
||||
_d = bob.start_learning_loop()
|
||||
return bob
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
|
|
|
@ -24,9 +24,6 @@ import pytest_twisted
|
|||
from twisted.internet.threads import deferToThread
|
||||
|
||||
from nucypher.characters.lawful import Ursula
|
||||
from tests.performance_mocks import NotAPublicKey, NotARestApp, VerificationTracker, mock_cert_loading, \
|
||||
mock_cert_storage, mock_message_verification, mock_metadata_validation, mock_pubkey_from_bytes, mock_secret_source, \
|
||||
mock_signature_bytes, mock_stamp_call, mock_verify_node
|
||||
from tests.utils.middleware import SluggishLargeFleetMiddleware
|
||||
from umbral.keys import UmbralPublicKey
|
||||
from tests.mock.performance_mocks import (
|
||||
|
@ -170,7 +167,7 @@ def test_mass_treasure_map_placement(fleet_of_highperf_mocked_ursulas,
|
|||
if policy.treasure_map in list(ursula.treasure_maps.values()):
|
||||
nodes_that_have_the_map_when_we_unblock.append(ursula)
|
||||
|
||||
approximate_number_of_nodes_we_expect_to_have_the_map_already = len(nodes_we_expect_to_have_the_map) / 10
|
||||
approximate_number_of_nodes_we_expect_to_have_the_map_already = len(nodes_we_expect_to_have_the_map) / 5
|
||||
assert len(nodes_that_have_the_map_when_we_unblock) == pytest.approx(
|
||||
approximate_number_of_nodes_we_expect_to_have_the_map_already, .5)
|
||||
|
||||
|
|
|
@ -22,8 +22,8 @@ from bytestring_splitter import VariableLengthBytestring
|
|||
from eth_utils.address import to_checksum_address
|
||||
from twisted.logger import LogLevel, globalLogPublisher
|
||||
|
||||
from nucypher.acumen.nicknames import nickname_from_seed
|
||||
from nucypher.characters.base import Character
|
||||
from nucypher.network.nicknames import nickname_from_seed
|
||||
from tests.utils.middleware import MockRestMiddleware
|
||||
from tests.utils.ursula import make_federated_ursulas
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ def test_bob_does_not_let_a_connection_error_stop_him(enacted_federated_policy,
|
|||
federated_bob.network_middleware = NodeIsDownMiddleware()
|
||||
federated_bob.network_middleware.node_is_down(ursula1)
|
||||
|
||||
with pytest.raises(TreasureMap.NowhereToBeFound):
|
||||
with pytest.raises(federated_bob.NotEnoughNodes):
|
||||
federated_bob.get_treasure_map(federated_alice.stamp, enacted_federated_policy.label)
|
||||
|
||||
federated_bob.remember_node(ursula2)
|
||||
|
|
|
@ -40,6 +40,7 @@ def test_alice_sets_treasure_map(enacted_federated_policy, federated_ursulas):
|
|||
"""
|
||||
enacted_federated_policy.publish_treasure_map(network_middleware=MockRestMiddleware())
|
||||
treasure_map_index = bytes.fromhex(enacted_federated_policy.treasure_map.public_id())
|
||||
# TODO: Ensure that this is... an actual... hmm...
|
||||
treasure_map_as_set_on_network = list(federated_ursulas)[0].treasure_maps[treasure_map_index]
|
||||
assert treasure_map_as_set_on_network == enacted_federated_policy.treasure_map
|
||||
|
||||
|
|
Loading…
Reference in New Issue