def test_get_next_batch(self, from_file_mock, isfile_mock, glob_mock, caplog): """ Test the FileWalArchiver.get_next_batch method """ # WAL batch, with 000000010000000000000001 that is currently being # written glob_mock.return_value = ['000000010000000000000001'] isfile_mock.return_value = True # This is an hack, instead of a WalFileInfo we use a simple string to # ease all the comparisons. The resulting string is the name enclosed # in colons. e.g. ":000000010000000000000001:" from_file_mock.side_effect = lambda wal_name, compression: (':%s:' % wal_name) backup_manager = build_backup_manager(name='TestServer') archiver = StreamingWalArchiver(backup_manager) backup_manager.server.archivers = [archiver] batch = archiver.get_next_batch() assert ['000000010000000000000001'] == batch.skip # WAL batch, with 000000010000000000000002 that is currently being # written and 000000010000000000000001 can be archived glob_mock.return_value = [ '000000010000000000000001', '000000010000000000000002', ] batch = archiver.get_next_batch() assert [':000000010000000000000001:'] == batch assert ['000000010000000000000002'] == batch.skip # WAL batch, with two partial files. glob_mock.return_value = [ '000000010000000000000001.partial', '000000010000000000000002.partial', ] batch = archiver.get_next_batch() assert [':000000010000000000000001.partial:'] == batch assert ['000000010000000000000002.partial'] == batch.skip assert ('Archiving partial files for server %s: ' '000000010000000000000001.partial' % archiver.config.name) in caplog.text # WAL batch, with history files. glob_mock.return_value = [ '00000001.history', '000000010000000000000002.partial', ] batch = archiver.get_next_batch() assert [':00000001.history:'] == batch assert ['000000010000000000000002.partial'] == batch.skip # WAL batch with errors wrong_file_name = 'test_wrong_wal_file.2' glob_mock.return_value = ['test_wrong_wal_file.2'] batch = archiver.get_next_batch() assert [wrong_file_name] == batch.errors
def test_get_next_batch(self, from_file_mock, isfile_mock, glob_mock): """ Test the FileWalArchiver.get_next_batch method """ # WAL batch, with 000000010000000000000001 that is currently being # written glob_mock.return_value = ['000000010000000000000001'] isfile_mock.return_value = True # This is an hack, instead of a WalFileInfo we use a simple string to # ease all the comparisons. The resulting string is the name enclosed # in colons. e.g. ":000000010000000000000001:" from_file_mock.side_effect = lambda wal_name, compression: ( ':%s:' % wal_name) backup_manager = build_backup_manager( name='TestServer' ) archiver = StreamingWalArchiver(backup_manager) backup_manager.server.archivers = [archiver] batch = archiver.get_next_batch() assert ['000000010000000000000001'] == batch.skip # WAL batch, with 000000010000000000000002 that is currently being # written and 000000010000000000000001 can be archived glob_mock.return_value = [ '000000010000000000000001', '000000010000000000000002', ] batch = archiver.get_next_batch() assert [':000000010000000000000001:'] == batch assert ['000000010000000000000002'] == batch.skip # WAL batch, with two partial files. glob_mock.return_value = [ '000000010000000000000001.partial', '000000010000000000000002.partial', ] batch = archiver.get_next_batch() assert ['000000010000000000000001.partial'] == batch.errors assert ['000000010000000000000002.partial'] == batch.skip # WAL batch with errors wrong_file_name = 'test_wrong_wal_file.2' glob_mock.return_value = ['test_wrong_wal_file.2'] batch = archiver.get_next_batch() assert [wrong_file_name] == batch.errors
def test_get_next_batch( self, from_file_mock, isfile_mock, exists_mock, glob_mock, caplog ): """ Test the FileWalArchiver.get_next_batch method """ # See all logs caplog.set_level(0) # WAL batch, with 000000010000000000000001 that is currently being # written glob_mock.return_value = ["000000010000000000000001"] isfile_mock.return_value = True # This is an hack, instead of a WalFileInfo we use a simple string to # ease all the comparisons. The resulting string is the name enclosed # in colons. e.g. ":000000010000000000000001:" from_file_mock.side_effect = lambda wal_name, compression: (":%s:" % wal_name) backup_manager = build_backup_manager(name="TestServer") archiver = StreamingWalArchiver(backup_manager) backup_manager.server.archivers = [archiver] caplog_reset(caplog) batch = archiver.get_next_batch() assert ["000000010000000000000001"] == batch.skip assert "" == caplog.text # WAL batch, with 000000010000000000000002 that is currently being # written and 000000010000000000000001 can be archived caplog_reset(caplog) glob_mock.return_value = [ "000000010000000000000001", "000000010000000000000002", ] batch = archiver.get_next_batch() assert [":000000010000000000000001:"] == batch assert ["000000010000000000000002"] == batch.skip assert "" == caplog.text # WAL batch, with two partial files. caplog_reset(caplog) glob_mock.return_value = [ "000000010000000000000001.partial", "000000010000000000000002.partial", ] batch = archiver.get_next_batch() assert [":000000010000000000000001.partial:"] == batch assert ["000000010000000000000002.partial"] == batch.skip assert ( "Archiving partial files for server %s: " "000000010000000000000001.partial" % archiver.config.name ) in caplog.text # WAL batch, with history files. caplog_reset(caplog) glob_mock.return_value = [ "00000001.history", "000000010000000000000002.partial", ] batch = archiver.get_next_batch() assert [":00000001.history:"] == batch assert ["000000010000000000000002.partial"] == batch.skip assert "" == caplog.text # WAL batch with errors wrong_file_name = "test_wrong_wal_file.2" glob_mock.return_value = ["test_wrong_wal_file.2"] batch = archiver.get_next_batch() assert [wrong_file_name] == batch.errors # WAL batch, with two partial files, but one has been just renamed. caplog_reset(caplog) exists_mock.side_effect = [False, True] glob_mock.return_value = [ "000000010000000000000001.partial", "000000010000000000000002.partial", ] batch = archiver.get_next_batch() assert len(batch) == 0 assert ["000000010000000000000002.partial"] == batch.skip assert "" in caplog.text