Some debugging breadcrumbs for Ursula.

pull/2175/head
jMyles 2020-07-22 16:16:30 -07:00
parent a341962155
commit eaf7fbca37
3 changed files with 18 additions and 6 deletions

View File

@ -362,9 +362,9 @@ def blockchain_alice(alice_blockchain_test_config, testerchain):
@pytest.fixture(scope="module")
def federated_bob(bob_federated_test_config):
frames = inspect.stack(3)
bob = bob_federated_test_config.produce()
# Since Bob is sometimes "left hanging" at the end of tests, this is an invaluable piece of information for debugging problems like #2150.
frames = inspect.stack(3)
bob._FOR_TEST = frames[1].frame.f_locals['request'].module
yield bob
bob.disenchant()
@ -402,13 +402,20 @@ def lonely_ursula_maker(ursula_federated_test_config):
_made = []
def __call__(self, *args, **kwargs):
ursula = self._partial(*args, **kwargs)
self._made.extend(ursula)
return ursula
ursulas = self._partial(*args, **kwargs)
self._made.extend(ursulas)
frames = inspect.stack(3)
for ursula in ursulas:
try:
ursula._FOR_TEST = frames[1].frame.f_code.co_name
except KeyError as e:
raise
return ursulas
def clean(self):
for ursula in self._made:
ursula.stop()
for ursula in self._made:
del MOCK_KNOWN_URSULAS_CACHE[ursula.rest_interface.port]
_maker = _PartialUrsulaMaker()
yield _maker
@ -980,6 +987,7 @@ def fleet_of_highperf_mocked_ursulas(ursula_federated_test_config, request):
_ursulas = make_federated_ursulas(ursula_config=ursula_federated_test_config,
quantity=quantity, know_each_other=False)
all_ursulas = {u.checksum_address: u for u in _ursulas}
for ursula in _ursulas:
ursula.known_nodes._nodes = all_ursulas
ursula.known_nodes.checksum = b"This is a fleet state checksum..".hex()

View File

@ -42,7 +42,7 @@ def test_get_cert_from_running_seed_node(lonely_ursula_maker):
node_deployer.addServices()
node_deployer.catalogServers(node_deployer.hendrix)
node_deployer.start()
node_deployer.start() # If this port happens not to be open, we'll get an error here. THis might be one of the few sane places to reintroduce a check.
certificate_as_deployed = node_deployer.cert.to_cryptography()

View File

@ -17,6 +17,8 @@ along with nucypher. If not, see <https://www.gnu.org/licenses/>.
import contextlib
import inspect
import socket
import tempfile
@ -65,12 +67,14 @@ def make_federated_ursulas(ursula_config: UrsulaConfiguration,
starting_port = max(MOCK_KNOWN_URSULAS_CACHE.keys()) + 1
federated_ursulas = set()
frames = inspect.stack(3)
for port in range(starting_port, starting_port+quantity):
ursula = ursula_config.produce(rest_port=port + 100,
db_filepath=MOCK_URSULA_DB_FILEPATH,
**ursula_overrides)
ursula._FOR_TEST = frames[1].frame.f_locals['request'].module
federated_ursulas.add(ursula)
# Store this Ursula in our global testing cache.