Handles Alice database in config subclass, Use sqlalchemy default development database instead of pure in-memory (#662)

pull/665/head
Kieran Prasch 2019-01-14 10:00:03 -08:00 committed by Kieran Prasch
parent 207dbbbead
commit 4fa2fa8e42
No known key found for this signature in database
GPG Key ID: 199AB839D4125A62
6 changed files with 9 additions and 10 deletions

View File

@ -707,7 +707,7 @@ class Ursula(Teacher, Character, Miner):
seed_uri: str,
federated_only: bool,
minimum_stake: int = 0,
checksum_address: str = None,
checksum_address: str = None, # TODO: Why is this unused?
network_middleware: RestMiddleware = None,
*args,
**kwargs

View File

@ -41,8 +41,6 @@ class UrsulaConfiguration(NodeConfiguration):
dev_mode: bool = False,
db_filepath: str = None,
*args, **kwargs) -> None:
if dev_mode is True:
db_filepath = ':memory:' # sqlite in-memory db
self.db_filepath = db_filepath or UNINITIALIZED_CONFIGURATION
super().__init__(dev_mode=dev_mode, *args, **kwargs)

View File

@ -302,9 +302,7 @@ class Learner:
def load_seednodes(self,
read_storages: bool = True,
retry_attempts: int = 3,
retry_rate: int = 2,
timeout=3):
retry_attempts: int = 3): # TODO: why are these unused?
"""
Engage known nodes from storages and pre-fetch hardcoded seednode certificates for node learning.
"""

View File

@ -147,8 +147,12 @@ class ProxyRESTRoutes:
self.log.info("Starting datastore {}".format(self.db_filepath))
# See: https://docs.sqlalchemy.org/en/rel_0_9/dialects/sqlite.html#connect-strings
db_filepath = (self.db_filepath or '') # Capture None
engine = create_engine('sqlite:///{}'.format(db_filepath))
if self.db_filepath:
db_uri = f'sqlite:///{self.db_filepath}'
else:
db_uri = 'sqlite://' # TODO: Is this a sane default? See #667
engine = create_engine(db_uri)
Base.metadata.create_all(engine)
self.datastore = keystore.KeyStore(engine)

View File

@ -42,7 +42,6 @@ def test_run_lone_federated_default_development_ursula(click_runner):
time.sleep(Learner._SHORT_LEARNING_DELAY)
assert result.exit_code == 0
assert ":memory:" in result.output
assert "Running Ursula on 127.0.0.1:{}".format(MOCK_URSULA_STARTING_PORT)
reserved_ports = (NodeConfiguration.DEFAULT_REST_PORT, NodeConfiguration.DEFAULT_DEVELOPMENT_REST_PORT)

View File

@ -25,7 +25,7 @@ def test_ursula_development_configuration(federated_only=True):
# A Temporary Ursula
port = ursula_one.rest_information()[0].port
assert port == UrsulaConfiguration.DEFAULT_DEVELOPMENT_REST_PORT
assert ursula_one.datastore.engine.url.database == ":memory:"
assert '/tmp' in ursula_one.datastore.engine.url.database
assert ursula_one.certificate_filepath is CERTIFICATE_NOT_SAVED
assert UrsulaConfiguration.TEMP_CONFIGURATION_DIR_PREFIX in ursula_one.keyring_dir
assert isinstance(ursula_one.node_storage, ForgetfulNodeStorage)