Add (really) basic tests

This commit is contained in:
deajan 2024-04-23 23:58:46 +02:00
parent 7117541e02
commit 78e726cdc0
3 changed files with 240 additions and 8 deletions

View file

@ -0,0 +1,92 @@
conf_version: 3.0
repos:
default:
repo_uri: ./test
repo_group: default_group
backup_opts:
paths: []
tags: []
minimum_backup_size_error: 80.0 Mib
exclude_files_larger_than: 0.0 Kib
repo_opts:
repo_password: test
upload_speed: 100.0 Mib
download_speed: 0.0 Kib
retention_policy: {}
prometheus: {}
env:
env_variables: {}
encrypted_env_variables: {}
groups:
default_group:
backup_opts:
paths: []
source_type:
tags: []
compression: auto
use_fs_snapshot: true
ignore_cloud_files: true
exclude_caches: true
one_file_system: true
priority: low
excludes_case_ignore: false
exclude_files:
- excludes/generic_excluded_extensions
- excludes/generic_excludes
- excludes/windows_excludes
- excludes/linux_excludes
exclude_patterns:
-
exclude_files_larger_than:
additional_parameters:
additional_backup_only_parameters:
minimum_backup_size_error: 10 MiB
pre_exec_commands: []
pre_exec_per_command_timeout: 3600
pre_exec_failure_is_fatal: false
post_exec_commands: []
post_exec_per_command_timeout: 3600
post_exec_failure_is_fatal: false
post_exec_execute_even_on_backup_error: true
repo_opts:
repo_password:
repo_password_command:
minimum_backup_age: 1440
upload_speed: 100 Mib
download_speed: 0 Mib
backend_connections: 0
retention_policy:
last: 3
hourly: 72
daily: 30
weekly: 4
monthly: 12
yearly: 3
tags: []
keep_within: true
ntp_server:
prometheus:
backup_job: ${MACHINE_ID}
group: ${MACHINE_GROUP}
env:
env_variables: {}
encrypted_env_variables: {}
identity:
machine_id: ${HOSTNAME}__Zo6u
machine_group:
global_prometheus:
metrics: false
instance: ${MACHINE_ID}
destination:
http_username:
http_password:
additional_labels:
-
global_options:
auto_upgrade: true
auto_upgrade_interval: 10
auto_upgrade_server_url:
auto_upgrade_server_username:
auto_upgrade_server_password:
auto_upgrade_host_identity: ${MACHINE_ID}
auto_upgrade_group: ${MACHINE_GROUP}

View file

@ -0,0 +1,92 @@
conf_version: 3.0
repos:
default:
repo_uri: ./test
repo_group: default_group
backup_opts:
paths: []
tags: []
minimum_backup_size_error: 80.0 Mib
exclude_files_larger_than: 0.0 Kib
repo_opts:
repo_password: test
upload_speed: 100.0 Mib
download_speed: 0.0 Kib
retention_policy: {}
prometheus: {}
env:
env_variables: {}
encrypted_env_variables: {}
groups:
default_group:
backup_opts:
paths: []
source_type:
tags: []
compression: auto
use_fs_snapshot: true
ignore_cloud_files: true
exclude_caches: true
one_file_system: true
priority: low
excludes_case_ignore: false
exclude_files:
- excludes/generic_excluded_extensions
- excludes/generic_excludes
- excludes/windows_excludes
- excludes/linux_excludes
exclude_patterns:
-
exclude_files_larger_than:
additional_parameters:
additional_backup_only_parameters:
minimum_backup_size_error: 10 MiB
pre_exec_commands: []
pre_exec_per_command_timeout: 3600
pre_exec_failure_is_fatal: false
post_exec_commands: []
post_exec_per_command_timeout: 3600
post_exec_failure_is_fatal: false
post_exec_execute_even_on_backup_error: true
repo_opts:
repo_password:
repo_password_command:
minimum_backup_age: 1440
upload_speed: 100 Mib
download_speed: 0 Mib
backend_connections: 0
retention_policy:
last: 3
hourly: 72
daily: 30
weekly: 4
monthly: 12
yearly: 3
tags: []
keep_within: true
ntp_server:
prometheus:
backup_job: ${MACHINE_ID}
group: ${MACHINE_GROUP}
env:
env_variables: {}
encrypted_env_variables: {}
identity:
machine_id: ${HOSTNAME}__Zo6u
machine_group:
global_prometheus:
metrics: false
instance: ${MACHINE_ID}
destination:
http_username:
http_password:
additional_labels:
-
global_options:
auto_upgrade: true
auto_upgrade_interval: 10
auto_upgrade_server_url:
auto_upgrade_server_username:
auto_upgrade_server_password:
auto_upgrade_host_identity: ${MACHINE_ID}
auto_upgrade_group: ${MACHINE_GROUP}

View file

@ -6,7 +6,7 @@ __intname__ = "npbackup_cli_tests"
__author__ = "Orsiris de Jong"
__copyright__ = "Copyright (C) 2022-2024 NetInvent"
__license__ = "BSD-3-Clause"
__build__ = "2024011501"
__build__ = "2024042301"
__compat__ = "python3.6+"
@ -15,8 +15,17 @@ Simple test where we launch the GUI and hope it doesn't die
"""
import sys
import os
from io import StringIO
from npbackup import __main__
from npbackup.path_helper import CURRENT_DIR, CURRENT_EXECUTABLE
if os.name == 'nt':
CONF_FILE = "npbackup-cli-test-windows.yaml"
else:
CONF_FILE = "npbackup-cli-test-windows.yaml"
CONF_FILE = os.path.join(CURRENT_DIR, CONF_FILE)
class RedirectedStdout:
@ -57,17 +66,18 @@ def test_npbackup_cli_wrong_config_path():
assert 'Config file npbackup-non-existent.conf cannot be read' in str(logs), "There should be a critical error when config file is not given"
def test_npbackup_cli_snapshots():
sys.argv = ['', '-c', 'npbackup-test.conf', '--snapshots']
def test_npbackup_cli_show_config():
sys.argv = ['', '-c', CONF_FILE, '--show-config']
try:
with RedirectedStdout() as logs:
__main__.main()
except SystemExit:
print(logs)
print(str(logs))
assert "__(o_O)__" in str(logs), "Obfuscation does not work"
def test_npbackup_cli_create_backup():
sys.argv = ['', '-c' 'npbackup-cli-test.conf', '-b']
def _no_test_npbackup_cli_create_backup():
sys.argv = ['', '-c' './npbackup-cli-test.conf', '-b']
try:
with RedirectedStdout() as logs:
e = __main__.main()
@ -76,8 +86,46 @@ def test_npbackup_cli_create_backup():
print(logs)
def _no_test_npbackup_cli_snapshots():
sys.argv = ['', '-c', 'npbackup-test.conf', '--snapshots']
try:
with RedirectedStdout() as logs:
__main__.main()
except SystemExit:
print(logs)
def _no_test_npbackup_cli_restore():
sys.argv = ['', '-c' './npbackup-cli-test.conf', '-r', './restored']
try:
with RedirectedStdout() as logs:
e = __main__.main()
print(e)
except SystemExit:
print(logs)
def _no_test_npbackup_cli_list():
sys.argv = ['', '-c' './npbackup-cli-test.conf', '--ls snapshots']
try:
with RedirectedStdout() as logs:
e = __main__.main()
print(e)
except SystemExit:
print(logs)
if __name__ == "__main__":
test_npbackup_cli_no_config()
test_npbackup_cli_wrong_config_path()
test_npbackup_cli_snapshots()
test_npbackup_cli_show_config()
# TODO
#test_npbackup_cli_create_backup()
#test_npbackup_cli_snapshots()
#test_npbackup_cli_restore()
#test_npbackup_cli_list()
# This one should is pretty hard to test without having repo with multiple different date snapshots
# We need to create a "fake" repo starting in let's say 2020 and put our date back to 2023 to test our standard
# policy
# We can also have a forget test which should fail because of bogus permissions
#test_npbackup_cli_forget()