Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit23532e8

Browse files
committed
[Issue#183] test coverage
1 parent765bba4 commit23532e8

File tree

3 files changed

+151
-2
lines changed

3 files changed

+151
-2
lines changed

‎tests/helpers/ptrack_helpers.py‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -870,7 +870,8 @@ def merge_backup(
870870

871871
defrestore_node(
872872
self,backup_dir,instance,node=False,
873-
data_dir=None,backup_id=None,old_binary=False,options=[]
873+
data_dir=None,backup_id=None,old_binary=False,options=[],
874+
gdb=False
874875
):
875876

876877
ifdata_dirisNone:
@@ -895,7 +896,7 @@ def restore_node(
895896
ifnotold_binary:
896897
cmd_list+= ['--no-sync']
897898

898-
returnself.run_pb(cmd_list+options,old_binary=old_binary)
899+
returnself.run_pb(cmd_list+options,gdb=gdb,old_binary=old_binary)
899900

900901
defshow_pb(
901902
self,backup_dir,instance=None,backup_id=None,

‎tests/locking.py‎

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,3 +440,101 @@ def test_locking_concurrent_validate_and_backup(self):
440440

441441
# Clean after yourself
442442
self.del_test_dir(module_name,fname)
443+
444+
deftest_locking_concurren_restore_and_delete(self):
445+
"""
446+
make node, take full backup, launch restore
447+
and stop it in the middle, delete full backup.
448+
Expect it to fail.
449+
"""
450+
fname=self.id().split('.')[3]
451+
node=self.make_simple_node(
452+
base_dir=os.path.join(module_name,fname,'node'),
453+
initdb_params=['--data-checksums'])
454+
455+
backup_dir=os.path.join(self.tmp_path,module_name,fname,'backup')
456+
self.init_pb(backup_dir)
457+
self.add_instance(backup_dir,'node',node)
458+
self.set_archiving(backup_dir,'node',node)
459+
node.slow_start()
460+
461+
# FULL
462+
full_id=self.backup_node(backup_dir,'node',node)
463+
464+
node.cleanup()
465+
gdb=self.restore_node(backup_dir,'node',node,gdb=True)
466+
467+
gdb.set_breakpoint('create_data_directories')
468+
gdb.run_until_break()
469+
470+
# This PAGE backup is expected to be successfull
471+
try:
472+
self.delete_pb(backup_dir,'node',full_id)
473+
self.assertEqual(
474+
1,0,
475+
"Expecting Error because backup is locked\n "
476+
"Output: {0}\n CMD: {1}".format(
477+
repr(self.output),self.cmd))
478+
exceptProbackupExceptionase:
479+
self.assertIn(
480+
"ERROR: Cannot lock backup {0} directory".format(full_id),
481+
e.message,
482+
'\n Unexpected Error Message: {0}\n CMD: {1}'.format(
483+
repr(e.message),self.cmd))
484+
485+
# Clean after yourself
486+
self.del_test_dir(module_name,fname)
487+
488+
deftest_backup_directory_name(self):
489+
"""
490+
"""
491+
fname=self.id().split('.')[3]
492+
node=self.make_simple_node(
493+
base_dir=os.path.join(module_name,fname,'node'),
494+
initdb_params=['--data-checksums'])
495+
496+
backup_dir=os.path.join(self.tmp_path,module_name,fname,'backup')
497+
self.init_pb(backup_dir)
498+
self.add_instance(backup_dir,'node',node)
499+
self.set_archiving(backup_dir,'node',node)
500+
node.slow_start()
501+
502+
# FULL
503+
full_id_1=self.backup_node(backup_dir,'node',node)
504+
page_id_1=self.backup_node(backup_dir,'node',node,backup_type='page')
505+
506+
full_id_2=self.backup_node(backup_dir,'node',node)
507+
page_id_2=self.backup_node(backup_dir,'node',node,backup_type='page')
508+
509+
node.cleanup()
510+
511+
old_path=os.path.join(backup_dir,'backups','node',full_id_1)
512+
new_path=os.path.join(backup_dir,'backups','node','hello_kitty')
513+
514+
os.rename(old_path,new_path)
515+
516+
# This PAGE backup is expected to be successfull
517+
self.show_pb(backup_dir,'node',full_id_1)
518+
519+
self.validate_pb(backup_dir)
520+
self.validate_pb(backup_dir,'node')
521+
self.validate_pb(backup_dir,'node',full_id_1)
522+
523+
self.restore_node(backup_dir,'node',node,backup_id=full_id_1)
524+
525+
self.delete_pb(backup_dir,'node',full_id_1)
526+
527+
old_path=os.path.join(backup_dir,'backups','node',full_id_2)
528+
new_path=os.path.join(backup_dir,'backups','node','hello_kitty')
529+
530+
self.set_backup(
531+
backup_dir,'node',full_id_2,options=['--note=hello'])
532+
533+
self.merge_backup(backup_dir,'node',page_id_2,options=["-j","4"])
534+
535+
self.assertNotIn(
536+
'note',
537+
self.show_pb(backup_dir,'node',page_id_2))
538+
539+
# Clean after yourself
540+
self.del_test_dir(module_name,fname)

‎tests/merge.py‎

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2437,5 +2437,55 @@ def test_merge_correct_inheritance(self):
24372437

24382438
self.del_test_dir(module_name,fname)
24392439

2440+
deftest_merge_correct_inheritance_1(self):
2441+
"""
2442+
Make sure that backup metainformation fields
2443+
'note' and 'expire-time' are correctly inherited
2444+
during merge
2445+
"""
2446+
fname=self.id().split('.')[3]
2447+
backup_dir=os.path.join(self.tmp_path,module_name,fname,'backup')
2448+
node=self.make_simple_node(
2449+
base_dir=os.path.join(module_name,fname,'node'),
2450+
set_replication=True,
2451+
initdb_params=['--data-checksums'],
2452+
pg_options={'autovacuum':'off'})
2453+
2454+
self.init_pb(backup_dir)
2455+
self.add_instance(backup_dir,'node',node)
2456+
self.set_archiving(backup_dir,'node',node)
2457+
node.slow_start()
2458+
2459+
# add database
2460+
node.safe_psql(
2461+
'postgres',
2462+
'CREATE DATABASE testdb')
2463+
2464+
# take FULL backup
2465+
self.backup_node(
2466+
backup_dir,'node',node,
2467+
options=['--stream','--note=hello','--ttl=20d'])
2468+
2469+
# create database
2470+
node.safe_psql(
2471+
'postgres',
2472+
'create DATABASE testdb1')
2473+
2474+
# take PAGE backup
2475+
page_id=self.backup_node(
2476+
backup_dir,'node',node,backup_type='page')
2477+
2478+
self.merge_backup(backup_dir,'node',page_id)
2479+
2480+
self.assertNotIn(
2481+
'note',
2482+
self.show_pb(backup_dir,'node',page_id))
2483+
2484+
self.assertNotIn(
2485+
'expire-time',
2486+
self.show_pb(backup_dir,'node',page_id))
2487+
2488+
self.del_test_dir(module_name,fname)
2489+
24402490
# 1. Need new test with corrupted FULL backup
24412491
# 2. different compression levels

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp