def test_check_receivexlog_installed(self, find_command): """ Test for the check method of the StreamingWalArchiver class """ backup_manager = build_backup_manager() find_command.side_effect = CommandFailedException archiver = StreamingWalArchiver(backup_manager) result = archiver.get_remote_status() assert result == { "pg_receivexlog_installed": False, "pg_receivexlog_path": None, "pg_receivexlog_compatible": None, "pg_receivexlog_synchronous": None, "pg_receivexlog_version": None, "pg_receivexlog_supports_slots": None, } backup_manager.server.streaming.server_major_version = "9.2" find_command.side_effect = None find_command.return_value.cmd = "/some/path/to/pg_receivexlog" find_command.return_value.out = "" archiver.reset_remote_status() result = archiver.get_remote_status() assert result == { "pg_receivexlog_installed": True, "pg_receivexlog_path": "/some/path/to/pg_receivexlog", "pg_receivexlog_compatible": None, "pg_receivexlog_synchronous": None, "pg_receivexlog_version": None, "pg_receivexlog_supports_slots": None, }
def test_check_receivexlog_installed(self, command_mock): """ Test for the check method of the StreamingWalArchiver class """ backup_manager = build_backup_manager() backup_manager.server.postgres.server_txt_version = "9.2" command_mock.side_effect = CommandFailedException archiver = StreamingWalArchiver(backup_manager) result = archiver.get_remote_status() assert result == { "pg_receivexlog_installed": False, "pg_receivexlog_path": None, "pg_receivexlog_compatible": None, 'pg_receivexlog_synchronous': None, "pg_receivexlog_version": None, "pg_receivexlog_supports_slots": None, } backup_manager.server.postgres.server_txt_version = "9.2" command_mock.side_effect = None command_mock.return_value.cmd = '/some/path/to/pg_receivexlog' command_mock.return_value.side_effect = CommandFailedException archiver.reset_remote_status() result = archiver.get_remote_status() assert result == { "pg_receivexlog_installed": True, "pg_receivexlog_path": "/some/path/to/pg_receivexlog", "pg_receivexlog_compatible": None, 'pg_receivexlog_synchronous': None, "pg_receivexlog_version": None, "pg_receivexlog_supports_slots": None, }
def test_check_receivexlog_installed(self, command_mock, which_mock): """ Test for the check method of the StreamingWalArchiver class """ backup_manager = build_backup_manager() backup_manager.server.postgres.server_txt_version = "9.2" which_mock.return_value = None archiver = StreamingWalArchiver(backup_manager) result = archiver.get_remote_status() which_mock.assert_called_with('pg_receivexlog', ANY) assert result == { "pg_receivexlog_installed": False, "pg_receivexlog_path": None, "pg_receivexlog_compatible": None, "pg_receivexlog_version": None, } backup_manager.server.postgres.server_txt_version = "9.2" which_mock.return_value = '/some/path/to/pg_receivexlog' command_mock.return_value.side_effect = CommandFailedException archiver.reset_remote_status() result = archiver.get_remote_status() assert result == { "pg_receivexlog_installed": True, "pg_receivexlog_path": "/some/path/to/pg_receivexlog", "pg_receivexlog_compatible": None, "pg_receivexlog_version": None, }
def test_check_receivexlog_is_compatible(self, command_mock, which_mock): """ Test for the compatibility checks between versions of pg_receivexlog and PostgreSQL """ # pg_receivexlog 9.2 is compatible only with PostgreSQL 9.2 backup_manager = build_backup_manager() backup_manager.server.streaming.server_major_version = "9.2" archiver = StreamingWalArchiver(backup_manager) which_mock.return_value = "/some/path/to/pg_receivexlog" command_mock.return_value.out = "pg_receivexlog (PostgreSQL) 9.2.1" result = archiver.get_remote_status() assert result["pg_receivexlog_compatible"] is True command_mock.return_value.out = "pg_receivexlog (PostgreSQL) 9.5.3" archiver.reset_remote_status() result = archiver.get_remote_status() assert result["pg_receivexlog_compatible"] is False # Every pg_receivexlog is compatible with older PostgreSQL backup_manager.server.streaming.server_major_version = "9.3" command_mock.return_value.out = "pg_receivexlog (PostgreSQL) 9.5.3" archiver.reset_remote_status() result = archiver.get_remote_status() assert result["pg_receivexlog_compatible"] is True backup_manager.server.streaming.server_major_version = "9.5" command_mock.return_value.out = "pg_receivexlog (PostgreSQL) 9.3.0" archiver.reset_remote_status() result = archiver.get_remote_status() assert result["pg_receivexlog_compatible"] is False # Check for minor versions backup_manager.server.streaming.server_major_version = "9.4" command_mock.return_value.out = "pg_receivexlog (PostgreSQL) 9.4.4" archiver.reset_remote_status() result = archiver.get_remote_status() assert result["pg_receivexlog_compatible"] is True assert result["pg_receivexlog_synchronous"] is False
def test_check_receivexlog_is_compatible(self, command_mock, which_mock): """ Test for the compatibility checks between versions of pg_receivexlog and PostgreSQL """ # pg_receivexlog 9.2 is compatible only with PostgreSQL 9.2 backup_manager = build_backup_manager() backup_manager.server.streaming.server_major_version = "9.2" archiver = StreamingWalArchiver(backup_manager) which_mock.return_value = '/some/path/to/pg_receivexlog' command_mock.return_value.out = "pg_receivexlog (PostgreSQL) 9.2" result = archiver.get_remote_status() assert result["pg_receivexlog_compatible"] is True command_mock.return_value.out = "pg_receivexlog (PostgreSQL) 9.5" archiver.reset_remote_status() result = archiver.get_remote_status() assert result["pg_receivexlog_compatible"] is False # Every pg_receivexlog is compatible with older PostgreSQL backup_manager.server.streaming.server_major_version = "9.3" command_mock.return_value.out = "pg_receivexlog (PostgreSQL) 9.5" archiver.reset_remote_status() result = archiver.get_remote_status() assert result["pg_receivexlog_compatible"] is True backup_manager.server.streaming.server_major_version = "9.5" command_mock.return_value.out = "pg_receivexlog (PostgreSQL) 9.3" archiver.reset_remote_status() result = archiver.get_remote_status() assert result["pg_receivexlog_compatible"] is False # Check for minor versions backup_manager.server.streaming.server_major_version = "9.4" command_mock.return_value.out = "pg_receivexlog (PostgreSQL) 9.4.4" archiver.reset_remote_status() result = archiver.get_remote_status() assert result["pg_receivexlog_compatible"] is True assert result["pg_receivexlog_synchronous"] is False