def test_prometheus_metrics_config(): port = 2020 # no port with pytest.raises(ValueError): PrometheusMetricsConfig(port=None, metrics_prefix=TEST_PREFIX) # no prefix with pytest.raises(ValueError): PrometheusMetricsConfig(port=port, metrics_prefix=None) prometheus_config = PrometheusMetricsConfig(port=port, metrics_prefix=TEST_PREFIX) assert prometheus_config.port == 2020 assert prometheus_config.metrics_prefix == TEST_PREFIX assert prometheus_config.listen_address == '' # defaults assert prometheus_config.collection_interval == 90 assert not prometheus_config.start_now assert prometheus_config.listen_address == '' # non-defaults collection_interval = 5 listen_address = '111.111.111.111' prometheus_config = PrometheusMetricsConfig( port=port, metrics_prefix=TEST_PREFIX, listen_address=listen_address, collection_interval=collection_interval, start_now=True) assert prometheus_config.listen_address == listen_address assert prometheus_config.collection_interval == collection_interval assert prometheus_config.start_now
def test_prometheus_metrics_config(): listen_address = '111.111.111.111' port = 2020 prometheus_config = PrometheusMetricsConfig(port=port, metrics_prefix=TEST_PREFIX, listen_address=listen_address) assert prometheus_config.port == 2020 assert prometheus_config.metrics_prefix == TEST_PREFIX assert prometheus_config.listen_address == listen_address # defaults assert prometheus_config.collection_interval == 10 assert not prometheus_config.start_now # non-defaults collection_interval = 5 prometheus_config = PrometheusMetricsConfig( port=port, metrics_prefix=TEST_PREFIX, listen_address=listen_address, collection_interval=collection_interval, start_now=True) assert prometheus_config.collection_interval == collection_interval assert prometheus_config.start_now
def run(general_config, character_options, config_file, interactive, dry_run, metrics_port, metrics_listen_address, metrics_prefix, prometheus): """Run an "Ursula" node.""" worker_address = character_options.config_options.worker_address emitter = setup_emitter(general_config) _pre_launch_warnings(emitter, dev=character_options.config_options.dev, force=None) if not character_options.config_options.dev and not config_file: config_file = select_config_file(emitter=emitter, checksum_address=worker_address, config_class=UrsulaConfiguration) ursula_config, URSULA = character_options.create_character( emitter=emitter, config_file=config_file, json_ipc=general_config.json_ipc) prometheus_config = None if prometheus: prometheus_config = PrometheusMetricsConfig( port=metrics_port, metrics_prefix=metrics_prefix, listen_address=metrics_listen_address) return URSULA.run(emitter=emitter, start_reactor=not dry_run, interactive=interactive, prometheus_config=prometheus_config)
def run(general_config, character_options, config_file, interactive, dry_run, metrics_port, metrics_listen_address, metrics_prefix, prometheus): """Run an "Ursula" node.""" worker_address = character_options.config_options.worker_address emitter = setup_emitter(general_config) _pre_launch_warnings(emitter, dev=character_options.config_options.dev, force=None) if not character_options.config_options.dev and not config_file: config_file = select_config_file(emitter=emitter, checksum_address=worker_address, config_class=UrsulaConfiguration) ursula_config, URSULA = character_options.create_character( emitter=emitter, config_file=config_file, json_ipc=general_config.json_ipc) prometheus_config: 'PrometheusMetricsConfig' = None if prometheus: # Locally scoped to prevent import without prometheus explicitly installed from nucypher.utilities.prometheus.metrics import PrometheusMetricsConfig prometheus_config = PrometheusMetricsConfig( port=metrics_port, metrics_prefix=metrics_prefix, listen_address=metrics_listen_address) return URSULA.run(emitter=emitter, start_reactor=not dry_run, interactive=interactive, prometheus_config=prometheus_config)
def run(general_config, character_options, config_file, interactive, dry_run, prometheus, metrics_port, metrics_listen_address, metrics_prefix, metrics_interval, force, ip_checkup): """Run an "Ursula" node.""" worker_address = character_options.config_options.worker_address emitter = setup_emitter(general_config) dev_mode = character_options.config_options.dev lonely = character_options.config_options.lonely if prometheus and not metrics_port: # Require metrics port when using prometheus raise click.BadOptionUsage( option_name='metrics-port', message='--metrics-port is required when using --prometheus') _pre_launch_warnings(emitter, dev=dev_mode, force=None) if not config_file and not dev_mode: config_file = select_config_file(emitter=emitter, checksum_address=worker_address, config_class=UrsulaConfiguration) prometheus_config: 'PrometheusMetricsConfig' = None if prometheus and not dev_mode: # Locally scoped to prevent import without prometheus explicitly installed from nucypher.utilities.prometheus.metrics import PrometheusMetricsConfig prometheus_config = PrometheusMetricsConfig( port=metrics_port, metrics_prefix=metrics_prefix, listen_address=metrics_listen_address, collection_interval=metrics_interval) ursula_config, URSULA = character_options.create_character( emitter=emitter, config_file=config_file, json_ipc=general_config.json_ipc) if ip_checkup and not (dev_mode or lonely): # Always skip startup IP checks for dev and lonely modes. perform_startup_ip_check(emitter=emitter, ursula=URSULA, force=force) try: URSULA.run(emitter=emitter, start_reactor=not dry_run, interactive=interactive, prometheus_config=prometheus_config, preflight=not dev_mode) finally: if dry_run: URSULA.stop()
def run(general_config, character_options, config_file, interactive, dry_run, prometheus, metrics_port, metrics_listen_address, metrics_prefix, metrics_interval): """Run an "Ursula" node.""" worker_address = character_options.config_options.worker_address emitter = setup_emitter(general_config) _pre_launch_warnings(emitter, dev=character_options.config_options.dev, force=None) if not character_options.config_options.dev and not config_file: config_file = select_config_file(emitter=emitter, checksum_address=worker_address, config_class=UrsulaConfiguration) ursula_config, URSULA = character_options.create_character( emitter=emitter, config_file=config_file, json_ipc=general_config.json_ipc) prometheus_config: 'PrometheusMetricsConfig' = None if prometheus: # ensure metrics port is provided if not metrics_port: raise click.BadOptionUsage( option_name='metrics-port', message='--metrics-port is required when using --prometheus') # Locally scoped to prevent import without prometheus explicitly installed from nucypher.utilities.prometheus.metrics import PrometheusMetricsConfig prometheus_config = PrometheusMetricsConfig( port=metrics_port, metrics_prefix=metrics_prefix, listen_address=metrics_listen_address, collection_interval=metrics_interval) # TODO should we just not call run at all for "dry_run" try: URSULA.run(emitter=emitter, start_reactor=not dry_run, interactive=interactive, prometheus_config=prometheus_config) finally: if dry_run: URSULA.stop()