@@ -748,5 +748,28 @@ def load_backup_class(fs_type):
748748
749749return getattr (module ,class_name )
750750
751+ def archive_push (self ,instance ,node ,wal_file_name ,wal_file_path = None ,options = None ,expect_error = False ):
752+ if options is None :
753+ options = []
754+ cmd = [
755+ 'archive-push' ,
756+ '--instance={0}' .format (instance ),
757+ '--wal-file-name={0}' .format (wal_file_name ),
758+ ]
759+ if wal_file_path is None :
760+ cmd = cmd + ['--wal-file-path={0}' .format (os .path .join (node .data_dir ,'pg_wal' ))]
761+ return self .run (cmd + options ,expect_error = expect_error )
762+
763+
764+ # Local or S3 backup
765+ fs_backup_class = FSTestBackupDir
766+ if os .environ .get ('PG_PROBACKUP_S3_TEST' ,os .environ .get ('PROBACKUP_S3_TYPE_FULL_TEST' )):
767+ root = os .path .realpath (os .path .join (os .path .dirname (__file__ ),'../..' ))
768+ if root not in sys .path :
769+ sys .path .append (root )
770+ from pg_probackup2 .storage .s3_backup import S3TestBackupDir
771+
772+ fs_backup_class = S3TestBackupDir
773+
751774def build_backup_dir (self ,backup = 'backup' ):
752775return fs_backup_class (rel_path = self .rel_path ,backup = backup )