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

Commitb2cf9af

Browse files
committed
@test_needs_gdb
- make function decorator- check for decorator in GDBObj- check for linux's ptrace
1 parentf38ac06 commitb2cf9af

14 files changed

+111
-68
lines changed

‎tests/archive_test.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
importgzip
44
importunittest
55
from .helpers.ptrack_helpersimportProbackupTest,ProbackupException,GdbException
6-
from .helpers.ptrack_helpersimporttail_file
6+
from .helpers.ptrack_helpersimporttail_file,test_needs_gdb
77
fromdatetimeimportdatetime,timedelta
88
importsubprocess
99
fromsysimportexit
@@ -205,12 +205,12 @@ def test_pgpro434_2(self):
205205
'data after restore not equal to original data')
206206

207207
# @unittest.skip("skip")
208+
@test_needs_gdb
208209
deftest_pgpro434_3(self):
209210
"""
210211
Check pg_stop_backup_timeout, needed backup_timeout
211212
Fixed in commit d84d79668b0c139 and assert fixed by ptrack 1.7
212213
"""
213-
self._check_gdb_flag_or_skip_test()
214214

215215
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
216216
node=self.make_simple_node(
@@ -262,12 +262,12 @@ def test_pgpro434_3(self):
262262
'PostgreSQL crashed because of a failed assert')
263263

264264
# @unittest.skip("skip")
265+
@test_needs_gdb
265266
deftest_pgpro434_4(self):
266267
"""
267268
Check pg_stop_backup_timeout, libpq-timeout requested.
268269
Fixed in commit d84d79668b0c139 and assert fixed by ptrack 1.7
269270
"""
270-
self._check_gdb_flag_or_skip_test()
271271

272272
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
273273
node=self.make_simple_node(

‎tests/backup_test.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
importre
44
fromtimeimportsleep,time
55
from .helpers.ptrack_helpersimportbase36enc,ProbackupTest,ProbackupException
6+
from .helpers.ptrack_helpersimporttest_needs_gdb
67
importshutil
78
fromdistutils.dir_utilimportcopy_tree
89
fromtestgresimportProcessType,QueryException
@@ -1090,9 +1091,9 @@ def test_tablespace_handling_2(self):
10901091
repr(e.message),self.cmd))
10911092

10921093
# @unittest.skip("skip")
1094+
@test_needs_gdb
10931095
deftest_drop_rel_during_full_backup(self):
10941096
""""""
1095-
self._check_gdb_flag_or_skip_test()
10961097

10971098
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
10981099
node=self.make_simple_node(
@@ -1233,9 +1234,9 @@ def test_drop_db_during_full_backup(self):
12331234
self.compare_pgdata(pgdata,pgdata_restored)
12341235

12351236
# @unittest.skip("skip")
1237+
@test_needs_gdb
12361238
deftest_drop_rel_during_backup_delta(self):
12371239
""""""
1238-
self._check_gdb_flag_or_skip_test()
12391240

12401241
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
12411242
node=self.make_simple_node(
@@ -1300,9 +1301,9 @@ def test_drop_rel_during_backup_delta(self):
13001301
self.compare_pgdata(pgdata,pgdata_restored)
13011302

13021303
# @unittest.skip("skip")
1304+
@test_needs_gdb
13031305
deftest_drop_rel_during_backup_page(self):
13041306
""""""
1305-
self._check_gdb_flag_or_skip_test()
13061307

13071308
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
13081309
node=self.make_simple_node(
@@ -1419,9 +1420,9 @@ def test_basic_temp_slot_for_stream_backup(self):
14191420
options=['--stream','--slot=slot_1','--temp-slot'])
14201421

14211422
# @unittest.skip("skip")
1423+
@test_needs_gdb
14221424
deftest_backup_concurrent_drop_table(self):
14231425
""""""
1424-
self._check_gdb_flag_or_skip_test()
14251426

14261427
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
14271428
node=self.make_simple_node(
@@ -1547,9 +1548,9 @@ def test_pg_11_adjusted_wal_segment_size(self):
15471548
self.compare_pgdata(pgdata,pgdata_restored)
15481549

15491550
# @unittest.skip("skip")
1551+
@test_needs_gdb
15501552
deftest_sigint_handling(self):
15511553
""""""
1552-
self._check_gdb_flag_or_skip_test()
15531554

15541555
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
15551556
node=self.make_simple_node(
@@ -1584,9 +1585,9 @@ def test_sigint_handling(self):
15841585
'Backup STATUS should be "ERROR"')
15851586

15861587
# @unittest.skip("skip")
1588+
@test_needs_gdb
15871589
deftest_sigterm_handling(self):
15881590
""""""
1589-
self._check_gdb_flag_or_skip_test()
15901591

15911592
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
15921593
node=self.make_simple_node(
@@ -1620,9 +1621,9 @@ def test_sigterm_handling(self):
16201621
'Backup STATUS should be "ERROR"')
16211622

16221623
# @unittest.skip("skip")
1624+
@test_needs_gdb
16231625
deftest_sigquit_handling(self):
16241626
""""""
1625-
self._check_gdb_flag_or_skip_test()
16261627

16271628
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
16281629
node=self.make_simple_node(
@@ -2724,9 +2725,9 @@ def test_incr_backup_filenode_map(self):
27242725
'select 1')
27252726

27262727
# @unittest.skip("skip")
2728+
@test_needs_gdb
27272729
deftest_missing_wal_segment(self):
27282730
""""""
2729-
self._check_gdb_flag_or_skip_test()
27302731

27312732
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
27322733
node=self.make_simple_node(
@@ -3056,9 +3057,9 @@ def test_basic_backup_default_transaction_read_only(self):
30563057
self.backup_node(backup_dir,'node',node,backup_type='page')
30573058

30583059
# @unittest.skip("skip")
3060+
@test_needs_gdb
30593061
deftest_backup_atexit(self):
30603062
""""""
3061-
self._check_gdb_flag_or_skip_test()
30623063

30633064
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
30643065
node=self.make_simple_node(

‎tests/checkdb_test.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
importos
22
importunittest
33
from .helpers.ptrack_helpersimportProbackupTest,ProbackupException
4+
from .helpers.ptrack_helpersimporttest_needs_gdb
45
fromdatetimeimportdatetime,timedelta
56
importsubprocess
67
fromtestgresimportQueryException
@@ -12,9 +13,9 @@
1213
classCheckdbTest(ProbackupTest,unittest.TestCase):
1314

1415
# @unittest.skip("skip")
16+
@test_needs_gdb
1517
deftest_checkdb_amcheck_only_sanity(self):
1618
""""""
17-
self._check_gdb_flag_or_skip_test()
1819

1920
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
2021
node=self.make_simple_node(
@@ -549,9 +550,9 @@ def test_checkdb_checkunique(self):
549550
node.stop()
550551

551552
# @unittest.skip("skip")
553+
@test_needs_gdb
552554
deftest_checkdb_sigint_handling(self):
553555
""""""
554-
self._check_gdb_flag_or_skip_test()
555556

556557
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
557558
node=self.make_simple_node(

‎tests/delta_test.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
importos
22
importunittest
33
from .helpers.ptrack_helpersimportProbackupTest,ProbackupException
4+
from .helpers.ptrack_helpersimporttest_needs_gdb
45
fromdatetimeimportdatetime,timedelta
56
fromtestgresimportQueryException
67
importsubprocess
@@ -438,12 +439,12 @@ def test_delta_multiple_segments(self):
438439
self.compare_pgdata(pgdata,pgdata_restored)
439440

440441
# @unittest.skip("skip")
442+
@test_needs_gdb
441443
deftest_delta_vacuum_full(self):
442444
"""
443445
make node, make full and delta stream backups,
444446
restore them and check data correctness
445447
"""
446-
self._check_gdb_flag_or_skip_test()
447448

448449
backup_dir=os.path.join(self.tmp_path,self.module_name,self.fname,'backup')
449450
node=self.make_simple_node(

‎tests/helpers/ptrack_helpers.py

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# you need os for unittest to work
22
importos
3+
importsys
34
importthreading
45
importunittest
56
fromsysimportexit,argv
@@ -292,8 +293,7 @@ def __init__(self, *args, **kwargs):
292293
self.test_env['LC_MESSAGES']='C'
293294
self.test_env['LC_TIME']='C'
294295

295-
self.gdb='PGPROBACKUP_GDB'inself.test_envand \
296-
self.test_env['PGPROBACKUP_GDB']=='ON'
296+
self._set_gdb()
297297

298298
self.paranoia='PG_PROBACKUP_PARANOIA'inself.test_envand \
299299
self.test_env['PG_PROBACKUP_PARANOIA']=='ON'
@@ -422,6 +422,20 @@ def __init__(self, *args, **kwargs):
422422

423423
os.environ["PGAPPNAME"]="pg_probackup"
424424

425+
def_set_gdb(self):
426+
self._gdb_enabled=self.test_env.get('PGPROBACKUP_GDB')=='ON'
427+
self._gdb_ok=self._gdb_enabled
428+
ifnotself._gdb_enabledorsys.platform!='linux':
429+
return
430+
try:
431+
withopen('/proc/sys/kernel/yama/ptrace_scope')asf:
432+
ptrace=f.read()
433+
exceptFileNotFoundError:
434+
self._gdb_ptrace_ok=True
435+
return
436+
self._gdb_ptrace_ok=int(ptrace)==0
437+
self._gdb_ok=self._gdb_okandself._gdb_ptrace_ok
438+
425439
defis_test_result_ok(test_case):
426440
# sources of solution:
427441
# 1. python versions 2.7 - 3.10, verified on 3.10, 3.7, 2.7, taken from:
@@ -1979,12 +1993,26 @@ def gdb_attach(self, pid):
19791993
returnGDBobj([str(pid)],self,attach=True)
19801994

19811995
def_check_gdb_flag_or_skip_test(self):
1982-
ifnotself.gdb:
1996+
ifnotself._gdb_enabled:
19831997
self.skipTest(
19841998
"Specify PGPROBACKUP_GDB and build without "
19851999
"optimizations for run this test"
19862000
)
2001+
ifself._gdb_ok:
2002+
return
2003+
ifnotself._gdb_ptrace_ok:
2004+
self.fail("set /proc/sys/kernel/yama/ptrace_scope to 0"
2005+
" to run GDB tests")
2006+
else:
2007+
self.fail("use of gdb is not possible")
19872008

2009+
deftest_needs_gdb(func):
2010+
defwrapped(self):
2011+
self._gdb_decorated=True
2012+
self._check_gdb_flag_or_skip_test()
2013+
func(self)
2014+
wrapped.__doc__=func.__doc__
2015+
returnwrapped
19882016

19892017
classGdbException(Exception):
19902018
def__init__(self,message="False"):
@@ -2001,10 +2029,13 @@ def __init__(self, cmd, env, attach=False):
20012029
self._did_quit=False
20022030

20032031
# Check gdb flag is set up
2004-
ifnotenv.gdb:
2005-
raiseGdbException("No `PGPROBACKUP_GDB=on` is set, "
2006-
"test should call ProbackupTest::check_gdb_flag_or_skip_test() on its start "
2007-
"and be skipped")
2032+
ifnotgetattr(env,"_gdb_decorated",False):
2033+
raiseGdbException("Test should be marked with @test_needs_gdb")
2034+
ifnotenv._gdb_enabled:
2035+
raiseGdbException("No `PGPROBACKUP_GDB=on` is set.")
2036+
ifnotenv._gdb_ok:
2037+
raiseGdbException("No gdb usage possible.")
2038+
20082039
# Check gdb presense
20092040
try:
20102041
gdb_version,_=subprocess.Popen(

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp