Skip to content

PBCKP-306 add xml report and pytest #573

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions tests/CVE_2018_1058.py → tests/CVE_2018_1058_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

module_name = 'CVE-2018-1058'


class CVE_2018_1058(ProbackupTest, unittest.TestCase):

# @unittest.skip("skip")
Expand Down Expand Up @@ -100,7 +101,7 @@ def test_basic_checkdb_modified_search_path(self):
"END "
"$$ LANGUAGE plpgsql; "
"CREATE VIEW public.pg_database AS SELECT * FROM public.pg_database()")

node.safe_psql(
'postgres',
"CREATE FUNCTION public.pg_extension(OUT extname name, OUT extnamespace oid, OUT extversion text) "
Expand All @@ -119,7 +120,7 @@ def test_basic_checkdb_modified_search_path(self):
"$$ LANGUAGE plpgsql; "
"CREATE VIEW public.pg_extension AS SELECT * FROM public.pg_extension();"
"CREATE VIEW public.pg_namespace AS SELECT * FROM public.pg_namespace();"
)
)

try:
self.checkdb_node(
Expand Down
84 changes: 42 additions & 42 deletions tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import unittest
import os

from . import init, merge, option, show, compatibility, \
backup, delete, delta, restore, validate, \
retention, pgpro560, pgpro589, pgpro2068, false_positive, replica, \
compression, page, ptrack, archive, exclude, cfs_backup, cfs_restore, \
cfs_validate_backup, auth_test, time_stamp, logging, \
locking, remote, external, config, checkdb, set_backup, incr_restore, \
catchup, CVE_2018_1058, time_consuming
from . import init_test, merge_test, option_test, show_test, compatibility_test, \
backup_test, delete_test, delta_test, restore_test, validate_test, \
retention_test, pgpro560_test, pgpro589_test, pgpro2068_test, false_positive_test, replica_test, \
compression_test, page_test, ptrack_test, archive_test, exclude_test, cfs_backup_test, cfs_restore_test, \
cfs_validate_backup_test, auth_test, time_stamp_test, logging_test, \
locking_test, remote_test, external_test, config_test, checkdb_test, set_backup_test, incr_restore_test, \
catchup, CVE_2018_1058_test, time_consuming_test


def load_tests(loader, tests, pattern):
Expand All @@ -19,50 +19,50 @@ def load_tests(loader, tests, pattern):

if 'PG_PROBACKUP_PTRACK' in os.environ:
if os.environ['PG_PROBACKUP_PTRACK'] == 'ON':
suite.addTests(loader.loadTestsFromModule(ptrack))
suite.addTests(loader.loadTestsFromModule(ptrack_test))

# PG_PROBACKUP_LONG section for tests that are long
# by design e.g. they contain loops, sleeps and so on
if 'PG_PROBACKUP_LONG' in os.environ:
if os.environ['PG_PROBACKUP_LONG'] == 'ON':
suite.addTests(loader.loadTestsFromModule(time_consuming))
suite.addTests(loader.loadTestsFromModule(time_consuming_test))

# suite.addTests(loader.loadTestsFromModule(auth_test))
suite.addTests(loader.loadTestsFromModule(archive))
suite.addTests(loader.loadTestsFromModule(backup))
suite.addTests(loader.loadTestsFromModule(archive_test))
suite.addTests(loader.loadTestsFromModule(backup_test))
suite.addTests(loader.loadTestsFromModule(catchup))
if 'PGPROBACKUPBIN_OLD' in os.environ and os.environ['PGPROBACKUPBIN_OLD']:
suite.addTests(loader.loadTestsFromModule(compatibility))
suite.addTests(loader.loadTestsFromModule(checkdb))
suite.addTests(loader.loadTestsFromModule(config))
# suite.addTests(loader.loadTestsFromModule(cfs_backup))
# suite.addTests(loader.loadTestsFromModule(cfs_restore))
# suite.addTests(loader.loadTestsFromModule(cfs_validate_backup))
suite.addTests(loader.loadTestsFromModule(compression))
suite.addTests(loader.loadTestsFromModule(delete))
suite.addTests(loader.loadTestsFromModule(delta))
suite.addTests(loader.loadTestsFromModule(exclude))
suite.addTests(loader.loadTestsFromModule(external))
suite.addTests(loader.loadTestsFromModule(false_positive))
suite.addTests(loader.loadTestsFromModule(init))
suite.addTests(loader.loadTestsFromModule(incr_restore))
suite.addTests(loader.loadTestsFromModule(locking))
suite.addTests(loader.loadTestsFromModule(logging))
suite.addTests(loader.loadTestsFromModule(merge))
suite.addTests(loader.loadTestsFromModule(option))
suite.addTests(loader.loadTestsFromModule(page))
suite.addTests(loader.loadTestsFromModule(pgpro560))
suite.addTests(loader.loadTestsFromModule(pgpro589))
suite.addTests(loader.loadTestsFromModule(pgpro2068))
suite.addTests(loader.loadTestsFromModule(remote))
suite.addTests(loader.loadTestsFromModule(replica))
suite.addTests(loader.loadTestsFromModule(restore))
suite.addTests(loader.loadTestsFromModule(retention))
suite.addTests(loader.loadTestsFromModule(set_backup))
suite.addTests(loader.loadTestsFromModule(show))
suite.addTests(loader.loadTestsFromModule(time_stamp))
suite.addTests(loader.loadTestsFromModule(validate))
suite.addTests(loader.loadTestsFromModule(CVE_2018_1058))
suite.addTests(loader.loadTestsFromModule(compatibility_test))
suite.addTests(loader.loadTestsFromModule(checkdb_test))
suite.addTests(loader.loadTestsFromModule(config_test))
# suite.addTests(loader.loadTestsFromModule(cfs_backup_test))
# suite.addTests(loader.loadTestsFromModule(cfs_restore_test))
# suite.addTests(loader.loadTestsFromModule(cfs_validate_backup_test))
suite.addTests(loader.loadTestsFromModule(compression_test))
suite.addTests(loader.loadTestsFromModule(delete_test))
suite.addTests(loader.loadTestsFromModule(delta_test))
suite.addTests(loader.loadTestsFromModule(exclude_test))
suite.addTests(loader.loadTestsFromModule(external_test))
suite.addTests(loader.loadTestsFromModule(false_positive_test))
suite.addTests(loader.loadTestsFromModule(init_test))
suite.addTests(loader.loadTestsFromModule(incr_restore_test))
suite.addTests(loader.loadTestsFromModule(locking_test))
suite.addTests(loader.loadTestsFromModule(logging_test))
suite.addTests(loader.loadTestsFromModule(merge_test))
suite.addTests(loader.loadTestsFromModule(option_test))
suite.addTests(loader.loadTestsFromModule(page_test))
suite.addTests(loader.loadTestsFromModule(pgpro560_test))
suite.addTests(loader.loadTestsFromModule(pgpro589_test))
suite.addTests(loader.loadTestsFromModule(pgpro2068_test))
suite.addTests(loader.loadTestsFromModule(remote_test))
suite.addTests(loader.loadTestsFromModule(replica_test))
suite.addTests(loader.loadTestsFromModule(restore_test))
suite.addTests(loader.loadTestsFromModule(retention_test))
suite.addTests(loader.loadTestsFromModule(set_backup_test))
suite.addTests(loader.loadTestsFromModule(show_test))
suite.addTests(loader.loadTestsFromModule(time_stamp_test))
suite.addTests(loader.loadTestsFromModule(validate_test))
suite.addTests(loader.loadTestsFromModule(CVE_2018_1058_test))

return suite

Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion tests/auth_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ def test_backup_via_unprivileged_user(self):
node.safe_psql(
"postgres",
"GRANT EXECUTE ON FUNCTION pg_stop_backup(boolean) TO backup")
elif self.get_vestion(node) < self.version_to_num('15.0'):
elif self.get_version(node) < self.version_to_num('15.0'):
node.safe_psql(
"postgres",
"GRANT EXECUTE ON FUNCTION "
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion tests/time_stamp.py → tests/time_stamp_test.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import os
import unittest
from .helpers.ptrack_helpers import ProbackupTest, ProbackupException
from .helpers.ptrack_helpers import ProbackupTest
import subprocess
from time import sleep

Expand Down
25 changes: 2 additions & 23 deletions tests/validate.py → tests/validate_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
from .helpers.ptrack_helpers import ProbackupTest, ProbackupException
from datetime import datetime, timedelta
from pathlib import Path
import subprocess
from sys import exit
import time
import hashlib

Expand Down Expand Up @@ -47,7 +45,6 @@ def test_basic_validate_nullified_heap_page_backup(self):
f.seek(8192)
f.write(b"\x00"*8192)
f.flush()
f.close

self.backup_node(
backup_dir, 'node', node, options=['--log-level-file=verbose'])
Expand Down Expand Up @@ -267,7 +264,6 @@ def test_basic_validate_corrupted_intermediate_backup(self):
f.seek(42)
f.write(b"blah")
f.flush()
f.close

# Simple validate
try:
Expand Down Expand Up @@ -360,7 +356,6 @@ def test_validate_corrupted_intermediate_backups(self):
f.seek(84)
f.write(b"blah")
f.flush()
f.close

# Corrupt some file in PAGE1 backup
file_page1 = os.path.join(
Expand All @@ -370,7 +365,6 @@ def test_validate_corrupted_intermediate_backups(self):
f.seek(42)
f.write(b"blah")
f.flush()
f.close

# Validate PAGE1
try:
Expand Down Expand Up @@ -686,15 +680,13 @@ def test_validate_corrupted_intermediate_backups_1(self):
f.seek(84)
f.write(b"blah")
f.flush()
f.close

file_page4 = os.path.join(
backup_dir, 'backups', 'node', backup_id_6, 'database', file_page_5)
with open(file_page4, "rb+", 0) as f:
f.seek(42)
f.write(b"blah")
f.flush()
f.close

# Validate PAGE3
try:
Expand Down Expand Up @@ -891,7 +883,6 @@ def test_validate_specific_target_corrupted_intermediate_backups(self):
f.seek(84)
f.write(b"blah")
f.flush()
f.close

file_page4 = os.path.join(
backup_dir, 'backups', 'node',
Expand All @@ -900,7 +891,6 @@ def test_validate_specific_target_corrupted_intermediate_backups(self):
f.seek(42)
f.write(b"blah")
f.flush()
f.close

# Validate PAGE3
try:
Expand Down Expand Up @@ -1244,7 +1234,6 @@ def test_validate_instance_with_corrupted_page(self):
f.seek(84)
f.write(b"blah")
f.flush()
f.close

# Validate Instance
try:
Expand Down Expand Up @@ -1392,7 +1381,6 @@ def test_validate_instance_with_corrupted_full_and_try_restore(self):
f.seek(84)
f.write(b"blah")
f.flush()
f.close

# Validate Instance
try:
Expand Down Expand Up @@ -1493,7 +1481,6 @@ def test_validate_instance_with_corrupted_full(self):
f.seek(84)
f.write(b"blah")
f.flush()
f.close

# Validate Instance
try:
Expand Down Expand Up @@ -1551,7 +1538,6 @@ def test_validate_corrupt_wal_1(self):
f.seek(42)
f.write(b"blablablaadssaaaaaaaaaaaaaaa")
f.flush()
f.close

# Simple validate
try:
Expand Down Expand Up @@ -1616,7 +1602,6 @@ def test_validate_corrupt_wal_2(self):
f.seek(128)
f.write(b"blablablaadssaaaaaaaaaaaaaaa")
f.flush()
f.close

# Validate to xid
try:
Expand Down Expand Up @@ -1781,7 +1766,6 @@ def test_validate_corrupt_wal_between_backups(self):
f.seek(9000)
f.write(b"b")
f.flush()
f.close

# Validate to xid
try:
Expand Down Expand Up @@ -2860,7 +2844,6 @@ def test_file_size_corruption_no_validate(self):
"database", heap_path), "rb+", 0) as f:
f.truncate(int(heap_size) - 4096)
f.flush()
f.close

node.cleanup()

Expand Down Expand Up @@ -3635,7 +3618,6 @@ def test_validate_corrupt_tablespace_map(self):
f.seek(84)
f.write(b"blah")
f.flush()
f.close

try:
self.validate_pb(backup_dir, 'node', backup_id=backup_id)
Expand Down Expand Up @@ -3948,14 +3930,14 @@ def test_not_validate_diffenent_pg_version(self):
fake_new_pg_version = pg_version + 1

with open(control_file, 'r') as f:
data = f.read();
data = f.read()

data = data.replace(
"server-version = {0}".format(str(pg_version)),
"server-version = {0}".format(str(fake_new_pg_version)))

with open(control_file, 'w') as f:
f.write(data);
f.write(data)

try:
self.validate_pb(backup_dir)
Expand Down Expand Up @@ -4007,7 +3989,6 @@ def test_validate_corrupt_page_header_map(self):
f.seek(42)
f.write(b"blah")
f.flush()
f.close

try:
self.validate_pb(backup_dir, 'node', backup_id=backup_id)
Expand Down Expand Up @@ -4080,7 +4061,6 @@ def test_validate_truncated_page_header_map(self):
with open(page_header_map, "rb+", 0) as f:
f.truncate(121)
f.flush()
f.close

try:
self.validate_pb(backup_dir, 'node', backup_id=backup_id)
Expand Down Expand Up @@ -4213,7 +4193,6 @@ def test_no_validate_tablespace_map(self):
# overwrite tablespace_map file
with open(tablespace_map, "w") as f:
f.write("{0} {1}".format(oid, tblspace_new))
f.close

node.cleanup()

Expand Down