Fix (some) end-to-end tests (#721).
This commit is contained in:
parent
48b6a1679a
commit
ab351548d2
9 changed files with 118 additions and 128 deletions
|
@ -14,7 +14,7 @@ MONITOR_STATE_TO_CRONHUB = {
|
||||||
|
|
||||||
|
|
||||||
def initialize_monitor(
|
def initialize_monitor(
|
||||||
ping_url, config_filename, monitoring_log_level, dry_run
|
ping_url, config, config_filename, monitoring_log_level, dry_run
|
||||||
): # pragma: no cover
|
): # pragma: no cover
|
||||||
'''
|
'''
|
||||||
No initialization is necessary for this monitor.
|
No initialization is necessary for this monitor.
|
||||||
|
@ -55,7 +55,7 @@ def ping_monitor(hook_config, config, config_filename, state, monitoring_log_lev
|
||||||
|
|
||||||
|
|
||||||
def destroy_monitor(
|
def destroy_monitor(
|
||||||
ping_url_or_uuid, config_filename, monitoring_log_level, dry_run
|
ping_url_or_uuid, config, config_filename, monitoring_log_level, dry_run
|
||||||
): # pragma: no cover
|
): # pragma: no cover
|
||||||
'''
|
'''
|
||||||
No destruction is necessary for this monitor.
|
No destruction is necessary for this monitor.
|
||||||
|
|
|
@ -14,7 +14,7 @@ MONITOR_STATE_TO_CRONITOR = {
|
||||||
|
|
||||||
|
|
||||||
def initialize_monitor(
|
def initialize_monitor(
|
||||||
ping_url, config_filename, monitoring_log_level, dry_run
|
ping_url, config, config_filename, monitoring_log_level, dry_run
|
||||||
): # pragma: no cover
|
): # pragma: no cover
|
||||||
'''
|
'''
|
||||||
No initialization is necessary for this monitor.
|
No initialization is necessary for this monitor.
|
||||||
|
@ -50,7 +50,7 @@ def ping_monitor(hook_config, config, config_filename, state, monitoring_log_lev
|
||||||
|
|
||||||
|
|
||||||
def destroy_monitor(
|
def destroy_monitor(
|
||||||
ping_url_or_uuid, config_filename, monitoring_log_level, dry_run
|
ping_url_or_uuid, config, config_filename, monitoring_log_level, dry_run
|
||||||
): # pragma: no cover
|
): # pragma: no cover
|
||||||
'''
|
'''
|
||||||
No destruction is necessary for this monitor.
|
No destruction is necessary for this monitor.
|
||||||
|
|
|
@ -70,7 +70,7 @@ def format_buffered_logs_for_payload():
|
||||||
return payload
|
return payload
|
||||||
|
|
||||||
|
|
||||||
def initialize_monitor(hook_config, config_filename, monitoring_log_level, dry_run):
|
def initialize_monitor(hook_config, config, config_filename, monitoring_log_level, dry_run):
|
||||||
'''
|
'''
|
||||||
Add a handler to the root logger that stores in memory the most recent logs emitted. That way,
|
Add a handler to the root logger that stores in memory the most recent logs emitted. That way,
|
||||||
we can send them all to Healthchecks upon a finish or failure state. But skip this if the
|
we can send them all to Healthchecks upon a finish or failure state. But skip this if the
|
||||||
|
@ -133,7 +133,7 @@ def ping_monitor(hook_config, config, config_filename, state, monitoring_log_lev
|
||||||
logger.warning(f'{config_filename}: Healthchecks error: {error}')
|
logger.warning(f'{config_filename}: Healthchecks error: {error}')
|
||||||
|
|
||||||
|
|
||||||
def destroy_monitor(hook_config, config_filename, monitoring_log_level, dry_run):
|
def destroy_monitor(hook_config, config, config_filename, monitoring_log_level, dry_run):
|
||||||
'''
|
'''
|
||||||
Remove the monitor handler that was added to the root logger. This prevents the handler from
|
Remove the monitor handler that was added to the root logger. This prevents the handler from
|
||||||
getting reused by other instances of this monitor.
|
getting reused by other instances of this monitor.
|
||||||
|
|
|
@ -6,7 +6,7 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def initialize_monitor(
|
def initialize_monitor(
|
||||||
ping_url, config_filename, monitoring_log_level, dry_run
|
ping_url, config, config_filename, monitoring_log_level, dry_run
|
||||||
): # pragma: no cover
|
): # pragma: no cover
|
||||||
'''
|
'''
|
||||||
No initialization is necessary for this monitor.
|
No initialization is necessary for this monitor.
|
||||||
|
@ -75,7 +75,7 @@ def ping_monitor(hook_config, config, config_filename, state, monitoring_log_lev
|
||||||
|
|
||||||
|
|
||||||
def destroy_monitor(
|
def destroy_monitor(
|
||||||
ping_url_or_uuid, config_filename, monitoring_log_level, dry_run
|
ping_url_or_uuid, config, config_filename, monitoring_log_level, dry_run
|
||||||
): # pragma: no cover
|
): # pragma: no cover
|
||||||
'''
|
'''
|
||||||
No destruction is necessary for this monitor.
|
No destruction is necessary for this monitor.
|
||||||
|
|
|
@ -13,7 +13,7 @@ EVENTS_API_URL = 'https://events.pagerduty.com/v2/enqueue'
|
||||||
|
|
||||||
|
|
||||||
def initialize_monitor(
|
def initialize_monitor(
|
||||||
integration_key, config_filename, monitoring_log_level, dry_run
|
integration_key, config, config_filename, monitoring_log_level, dry_run
|
||||||
): # pragma: no cover
|
): # pragma: no cover
|
||||||
'''
|
'''
|
||||||
No initialization is necessary for this monitor.
|
No initialization is necessary for this monitor.
|
||||||
|
@ -75,7 +75,7 @@ def ping_monitor(hook_config, config, config_filename, state, monitoring_log_lev
|
||||||
|
|
||||||
|
|
||||||
def destroy_monitor(
|
def destroy_monitor(
|
||||||
ping_url_or_uuid, config_filename, monitoring_log_level, dry_run
|
ping_url_or_uuid, config, config_filename, monitoring_log_level, dry_run
|
||||||
): # pragma: no cover
|
): # pragma: no cover
|
||||||
'''
|
'''
|
||||||
No destruction is necessary for this monitor.
|
No destruction is necessary for this monitor.
|
||||||
|
|
|
@ -22,60 +22,57 @@ def write_configuration(
|
||||||
storing database dumps, dump format (for PostgreSQL), and encryption passphrase.
|
storing database dumps, dump format (for PostgreSQL), and encryption passphrase.
|
||||||
'''
|
'''
|
||||||
config = f'''
|
config = f'''
|
||||||
location:
|
source_directories:
|
||||||
source_directories:
|
- {source_directory}
|
||||||
- {source_directory}
|
repositories:
|
||||||
repositories:
|
- {repository_path}
|
||||||
- {repository_path}
|
borgmatic_source_directory: {borgmatic_source_directory}
|
||||||
borgmatic_source_directory: {borgmatic_source_directory}
|
|
||||||
|
|
||||||
storage:
|
encryption_passphrase: "test"
|
||||||
encryption_passphrase: "test"
|
|
||||||
|
|
||||||
hooks:
|
postgresql_databases:
|
||||||
postgresql_databases:
|
- name: test
|
||||||
- name: test
|
hostname: postgresql
|
||||||
hostname: postgresql
|
username: postgres
|
||||||
username: postgres
|
password: test
|
||||||
password: test
|
format: {postgresql_dump_format}
|
||||||
format: {postgresql_dump_format}
|
- name: all
|
||||||
- name: all
|
hostname: postgresql
|
||||||
hostname: postgresql
|
username: postgres
|
||||||
username: postgres
|
password: test
|
||||||
password: test
|
- name: all
|
||||||
- name: all
|
format: custom
|
||||||
format: custom
|
hostname: postgresql
|
||||||
hostname: postgresql
|
username: postgres
|
||||||
username: postgres
|
password: test
|
||||||
password: test
|
mysql_databases:
|
||||||
mysql_databases:
|
- name: test
|
||||||
- name: test
|
hostname: mysql
|
||||||
hostname: mysql
|
username: root
|
||||||
username: root
|
password: test
|
||||||
password: test
|
- name: all
|
||||||
- name: all
|
hostname: mysql
|
||||||
hostname: mysql
|
username: root
|
||||||
username: root
|
password: test
|
||||||
password: test
|
- name: all
|
||||||
- name: all
|
format: sql
|
||||||
format: sql
|
hostname: mysql
|
||||||
hostname: mysql
|
username: root
|
||||||
username: root
|
password: test
|
||||||
password: test
|
mongodb_databases:
|
||||||
mongodb_databases:
|
- name: test
|
||||||
- name: test
|
hostname: mongodb
|
||||||
hostname: mongodb
|
username: root
|
||||||
username: root
|
password: test
|
||||||
password: test
|
authentication_database: admin
|
||||||
authentication_database: admin
|
format: {mongodb_dump_format}
|
||||||
format: {mongodb_dump_format}
|
- name: all
|
||||||
- name: all
|
hostname: mongodb
|
||||||
hostname: mongodb
|
username: root
|
||||||
username: root
|
password: test
|
||||||
password: test
|
sqlite_databases:
|
||||||
sqlite_databases:
|
- name: sqlite_test
|
||||||
- name: sqlite_test
|
path: /tmp/sqlite_test.db
|
||||||
path: /tmp/sqlite_test.db
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
with open(config_path, 'w') as config_file:
|
with open(config_path, 'w') as config_file:
|
||||||
|
@ -96,51 +93,48 @@ def write_custom_restore_configuration(
|
||||||
restore_username, restore_password and restore_path.
|
restore_username, restore_password and restore_path.
|
||||||
'''
|
'''
|
||||||
config = f'''
|
config = f'''
|
||||||
location:
|
source_directories:
|
||||||
source_directories:
|
- {source_directory}
|
||||||
- {source_directory}
|
repositories:
|
||||||
repositories:
|
- {repository_path}
|
||||||
- {repository_path}
|
borgmatic_source_directory: {borgmatic_source_directory}
|
||||||
borgmatic_source_directory: {borgmatic_source_directory}
|
|
||||||
|
|
||||||
storage:
|
encryption_passphrase: "test"
|
||||||
encryption_passphrase: "test"
|
|
||||||
|
|
||||||
hooks:
|
postgresql_databases:
|
||||||
postgresql_databases:
|
- name: test
|
||||||
- name: test
|
hostname: postgresql
|
||||||
hostname: postgresql
|
username: postgres
|
||||||
username: postgres
|
password: test
|
||||||
password: test
|
format: {postgresql_dump_format}
|
||||||
format: {postgresql_dump_format}
|
restore_hostname: postgresql2
|
||||||
restore_hostname: postgresql2
|
restore_port: 5433
|
||||||
restore_port: 5433
|
restore_username: postgres2
|
||||||
restore_username: postgres2
|
restore_password: test2
|
||||||
restore_password: test2
|
mysql_databases:
|
||||||
mysql_databases:
|
- name: test
|
||||||
- name: test
|
hostname: mysql
|
||||||
hostname: mysql
|
username: root
|
||||||
username: root
|
password: test
|
||||||
password: test
|
restore_hostname: mysql2
|
||||||
restore_hostname: mysql2
|
restore_port: 3307
|
||||||
restore_port: 3307
|
restore_username: root
|
||||||
restore_username: root
|
restore_password: test2
|
||||||
restore_password: test2
|
mongodb_databases:
|
||||||
mongodb_databases:
|
- name: test
|
||||||
- name: test
|
hostname: mongodb
|
||||||
hostname: mongodb
|
username: root
|
||||||
username: root
|
password: test
|
||||||
password: test
|
authentication_database: admin
|
||||||
authentication_database: admin
|
format: {mongodb_dump_format}
|
||||||
format: {mongodb_dump_format}
|
restore_hostname: mongodb2
|
||||||
restore_hostname: mongodb2
|
restore_port: 27018
|
||||||
restore_port: 27018
|
restore_username: root2
|
||||||
restore_username: root2
|
restore_password: test2
|
||||||
restore_password: test2
|
sqlite_databases:
|
||||||
sqlite_databases:
|
- name: sqlite_test
|
||||||
- name: sqlite_test
|
path: /tmp/sqlite_test.db
|
||||||
path: /tmp/sqlite_test.db
|
restore_path: /tmp/sqlite_test2.db
|
||||||
restore_path: /tmp/sqlite_test2.db
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
with open(config_path, 'w') as config_file:
|
with open(config_path, 'w') as config_file:
|
||||||
|
@ -161,23 +155,20 @@ def write_simple_custom_restore_configuration(
|
||||||
these options for PostgreSQL.
|
these options for PostgreSQL.
|
||||||
'''
|
'''
|
||||||
config = f'''
|
config = f'''
|
||||||
location:
|
source_directories:
|
||||||
source_directories:
|
- {source_directory}
|
||||||
- {source_directory}
|
repositories:
|
||||||
repositories:
|
- {repository_path}
|
||||||
- {repository_path}
|
borgmatic_source_directory: {borgmatic_source_directory}
|
||||||
borgmatic_source_directory: {borgmatic_source_directory}
|
|
||||||
|
|
||||||
storage:
|
encryption_passphrase: "test"
|
||||||
encryption_passphrase: "test"
|
|
||||||
|
|
||||||
hooks:
|
postgresql_databases:
|
||||||
postgresql_databases:
|
- name: test
|
||||||
- name: test
|
hostname: postgresql
|
||||||
hostname: postgresql
|
username: postgres
|
||||||
username: postgres
|
password: test
|
||||||
password: test
|
format: {postgresql_dump_format}
|
||||||
format: {postgresql_dump_format}
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
with open(config_path, 'w') as config_file:
|
with open(config_path, 'w') as config_file:
|
||||||
|
|
|
@ -38,5 +38,4 @@ def test_validate_config_command_with_show_flag_displays_configuration():
|
||||||
f'validate-borgmatic-config --config {config_path} --show'.split(' ')
|
f'validate-borgmatic-config --config {config_path} --show'.split(' ')
|
||||||
).decode(sys.stdout.encoding)
|
).decode(sys.stdout.encoding)
|
||||||
|
|
||||||
assert 'location:' in output
|
|
||||||
assert 'repositories:' in output
|
assert 'repositories:' in output
|
||||||
|
|
|
@ -10,7 +10,7 @@ def test_destroy_monitor_removes_healthchecks_handler():
|
||||||
original_handlers = list(logger.handlers)
|
original_handlers = list(logger.handlers)
|
||||||
logger.addHandler(module.Forgetful_buffering_handler(byte_capacity=100, log_level=1))
|
logger.addHandler(module.Forgetful_buffering_handler(byte_capacity=100, log_level=1))
|
||||||
|
|
||||||
module.destroy_monitor(flexmock(), flexmock(), flexmock(), flexmock())
|
module.destroy_monitor(flexmock(), flexmock(), flexmock(), flexmock(), flexmock())
|
||||||
|
|
||||||
assert logger.handlers == original_handlers
|
assert logger.handlers == original_handlers
|
||||||
|
|
||||||
|
@ -19,6 +19,6 @@ def test_destroy_monitor_without_healthchecks_handler_does_not_raise():
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
original_handlers = list(logger.handlers)
|
original_handlers = list(logger.handlers)
|
||||||
|
|
||||||
module.destroy_monitor(flexmock(), flexmock(), flexmock(), flexmock())
|
module.destroy_monitor(flexmock(), flexmock(), flexmock(), flexmock(), flexmock())
|
||||||
|
|
||||||
assert logger.handlers == original_handlers
|
assert logger.handlers == original_handlers
|
||||||
|
|
|
@ -86,7 +86,7 @@ def test_initialize_monitor_creates_log_handler_with_ping_body_limit():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.initialize_monitor(
|
module.initialize_monitor(
|
||||||
{'ping_body_limit': ping_body_limit}, 'test.yaml', monitoring_log_level, dry_run=False
|
{'ping_body_limit': ping_body_limit}, {}, 'test.yaml', monitoring_log_level, dry_run=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ def test_initialize_monitor_creates_log_handler_with_default_ping_body_limit():
|
||||||
monitoring_log_level,
|
monitoring_log_level,
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.initialize_monitor({}, 'test.yaml', monitoring_log_level, dry_run=False)
|
module.initialize_monitor({}, {}, 'test.yaml', monitoring_log_level, dry_run=False)
|
||||||
|
|
||||||
|
|
||||||
def test_initialize_monitor_creates_log_handler_with_zero_ping_body_limit():
|
def test_initialize_monitor_creates_log_handler_with_zero_ping_body_limit():
|
||||||
|
@ -112,7 +112,7 @@ def test_initialize_monitor_creates_log_handler_with_zero_ping_body_limit():
|
||||||
).once()
|
).once()
|
||||||
|
|
||||||
module.initialize_monitor(
|
module.initialize_monitor(
|
||||||
{'ping_body_limit': ping_body_limit}, 'test.yaml', monitoring_log_level, dry_run=False
|
{'ping_body_limit': ping_body_limit}, {}, 'test.yaml', monitoring_log_level, dry_run=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -121,7 +121,7 @@ def test_initialize_monitor_creates_log_handler_when_send_logs_true():
|
||||||
flexmock(module).should_receive('Forgetful_buffering_handler').once()
|
flexmock(module).should_receive('Forgetful_buffering_handler').once()
|
||||||
|
|
||||||
module.initialize_monitor(
|
module.initialize_monitor(
|
||||||
{'send_logs': True}, 'test.yaml', monitoring_log_level=1, dry_run=False
|
{'send_logs': True}, {}, 'test.yaml', monitoring_log_level=1, dry_run=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ def test_initialize_monitor_bails_when_send_logs_false():
|
||||||
flexmock(module).should_receive('Forgetful_buffering_handler').never()
|
flexmock(module).should_receive('Forgetful_buffering_handler').never()
|
||||||
|
|
||||||
module.initialize_monitor(
|
module.initialize_monitor(
|
||||||
{'send_logs': False}, 'test.yaml', monitoring_log_level=1, dry_run=False
|
{'send_logs': False}, {}, 'test.yaml', monitoring_log_level=1, dry_run=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue