@@ -442,3 +442,58 @@ def test_checkdb_block_validation_sanity(self):
442
442
443
443
# Clean after yourself
444
444
self .del_test_dir (module_name , fname )
445
+
446
+ # @unittest.skip("skip")
447
+ def test_checkdb_sigint_handling (self ):
448
+ """"""
449
+ fname = self .id ().split ('.' )[3 ]
450
+ backup_dir = os .path .join (self .tmp_path , module_name , fname , 'backup' )
451
+ node = self .make_simple_node (
452
+ base_dir = os .path .join (module_name , fname , 'node' ),
453
+ set_replication = True ,
454
+ initdb_params = ['--data-checksums' ])
455
+
456
+ self .init_pb (backup_dir )
457
+ self .add_instance (backup_dir , 'node' , node )
458
+ node .slow_start ()
459
+
460
+ try :
461
+ node .safe_psql (
462
+ "postgres" ,
463
+ "create extension amcheck" )
464
+ except QueryException as e :
465
+ node .safe_psql (
466
+ "postgres" ,
467
+ "create extension amcheck_next" )
468
+
469
+ # truncate log_file
470
+ #with open(node.pg_log_file, 'w') as f:
471
+ # f.truncate()
472
+ # f.close()
473
+
474
+ # FULL backup
475
+ gdb = self .checkdb_node (
476
+ backup_dir , 'node' , gdb = True ,
477
+ options = [
478
+ '-d' , 'postgres' , '-j' , '4' ,
479
+ '--skip-block-validation' ,
480
+ '--amcheck' , '-p' , str (node .port )])
481
+
482
+ gdb .set_breakpoint ('amcheck_one_index' )
483
+ gdb .run_until_break ()
484
+
485
+ gdb .continue_execution_until_break (4 )
486
+ gdb .remove_all_breakpoints ()
487
+
488
+ gdb ._execute ('signal SIGINT' )
489
+ gdb .continue_execution_until_exit ()
490
+
491
+ with open (node .pg_log_file , 'r' ) as f :
492
+ output = f .read ()
493
+
494
+ self .assertNotIn ('could not receive data from client' , output )
495
+ self .assertNotIn ('could not send data to client' , output )
496
+ self .assertNotIn ('connection to client lost' , output )
497
+
498
+ # Clean after yourself
499
+ self .del_test_dir (module_name , fname )
0 commit comments