mirror of
https://github.com/netinvent/npbackup.git
synced 2025-10-11 22:16:34 +08:00
Add (really) basic tests
This commit is contained in:
parent
7117541e02
commit
78e726cdc0
3 changed files with 240 additions and 8 deletions
92
tests/npbackup-cli-test-linux.yaml
Normal file
92
tests/npbackup-cli-test-linux.yaml
Normal 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}
|
92
tests/npbackup-cli-test-windows.yaml
Normal file
92
tests/npbackup-cli-test-windows.yaml
Normal 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}
|
|
@ -6,7 +6,7 @@ __intname__ = "npbackup_cli_tests"
|
||||||
__author__ = "Orsiris de Jong"
|
__author__ = "Orsiris de Jong"
|
||||||
__copyright__ = "Copyright (C) 2022-2024 NetInvent"
|
__copyright__ = "Copyright (C) 2022-2024 NetInvent"
|
||||||
__license__ = "BSD-3-Clause"
|
__license__ = "BSD-3-Clause"
|
||||||
__build__ = "2024011501"
|
__build__ = "2024042301"
|
||||||
__compat__ = "python3.6+"
|
__compat__ = "python3.6+"
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,8 +15,17 @@ Simple test where we launch the GUI and hope it doesn't die
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
import os
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
from npbackup import __main__
|
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:
|
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"
|
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():
|
def test_npbackup_cli_show_config():
|
||||||
sys.argv = ['', '-c', 'npbackup-test.conf', '--snapshots']
|
sys.argv = ['', '-c', CONF_FILE, '--show-config']
|
||||||
try:
|
try:
|
||||||
with RedirectedStdout() as logs:
|
with RedirectedStdout() as logs:
|
||||||
__main__.main()
|
__main__.main()
|
||||||
except SystemExit:
|
except SystemExit:
|
||||||
print(logs)
|
print(str(logs))
|
||||||
|
assert "__(o_O)__" in str(logs), "Obfuscation does not work"
|
||||||
|
|
||||||
|
|
||||||
def test_npbackup_cli_create_backup():
|
def _no_test_npbackup_cli_create_backup():
|
||||||
sys.argv = ['', '-c' 'npbackup-cli-test.conf', '-b']
|
sys.argv = ['', '-c' './npbackup-cli-test.conf', '-b']
|
||||||
try:
|
try:
|
||||||
with RedirectedStdout() as logs:
|
with RedirectedStdout() as logs:
|
||||||
e = __main__.main()
|
e = __main__.main()
|
||||||
|
@ -76,8 +86,46 @@ def test_npbackup_cli_create_backup():
|
||||||
print(logs)
|
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__":
|
if __name__ == "__main__":
|
||||||
test_npbackup_cli_no_config()
|
test_npbackup_cli_no_config()
|
||||||
test_npbackup_cli_wrong_config_path()
|
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()
|
Loading…
Add table
Reference in a new issue