You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mosquitto/test/apps/db_dump/db-dump-corrupt.py

34 lines
1.6 KiB
Python

#!/usr/bin/env python3
from mosq_test_helper import *
def do_test(file, stderr, rc_expected):
cmd = [
mosq_test.get_build_root()+'/apps/db_dump/mosquitto_db_dump',
f'{test_dir}/apps/db_dump/data/{file}'
]
res = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=1, encoding='utf-8')
if res.stderr != stderr:
print(res.stderr)
raise mosq_test.TestError
if res.returncode != rc_expected:
print(file)
print(res.returncode)
raise mosq_test.TestError
do_test('missing.test-db', f"Error: Unable to open {test_dir}/apps/db_dump/data/missing.test-db\n", 0)
do_test('bad-magic.test-db', "Error: Unrecognised file format.\n", 1)
do_test('short.test-db', "Error: Corrupt persistent database.\n", 1)
do_test('bad-dbid-size.test-db', "Error: Incompatible database configuration (dbid size is 5 bytes, expected 8)", 1)
do_test('bad-chunk.test-db', 'Warning: Unsupported chunk "2816" of length 65696 in persistent database file at position 29. Ignoring.\n', 0)
do_test('v3-corrupt.test-db', "Error: Corrupt persistent database.\n", 1)
do_test('v4-corrupt.test-db', "Error: Corrupt persistent database.\n", 1)
do_test('v5-corrupt.test-db', "Error: Corrupt persistent database.\n", 1)
do_test('v6-corrupt.test-db', "Error: Corrupt persistent database.\n", 1)
do_test('v6-corrupt-client.test-db', "Error: Corrupt persistent database.\n", 1)
do_test('v6-corrupt-cmsg.test-db', "Error: Corrupt persistent database.\n", 1)
do_test('v6-corrupt-retain.test-db', "Error: Corrupt persistent database.\n", 1)
do_test('v6-corrupt-sub.test-db', "Error: Corrupt persistent database.\n", 1)