def test_pgespresso_start_backup(self): """ Simple test for pgespresso_start_backup method of the RsyncBackupExecutor class """ # Build and configure a server using a mock backup_manager = build_backup_manager() backup_manager.config.backup_options = [BackupOptions.CONCURRENT_BACKUP] backup_label = 'test label' # Expect an exception because pg_espresso is not installed backup_manager.server.pg_espresso_installed.return_value = False with pytest.raises(Exception): backup_manager.executor.pgespresso_start_backup(backup_label) # Report pg_expresso installed. Expect no error and the correct call # sequence backup_manager.server.reset_mock() backup_manager.executor.server.pg_espresso_installed.return_value = True backup_manager.executor.pgespresso_start_backup(backup_label) pg_connect = call.pg_connect() with_pg_connect = pg_connect.__enter__() cursor = with_pg_connect.cursor() assert backup_manager.server.mock_calls == [ pg_connect, with_pg_connect, call.pg_espresso_installed(), cursor, cursor.execute(ANY, ANY), cursor.fetchone(), pg_connect.__exit__(None, None, None)]
def test_pg_start_backup(self): """ Simple test for pg_start_backup method of the RsyncBackupExecutor class """ # Build and configure a server using a mock backup_manager = build_backup_manager() backup_label = "test label" # Expect an exception for a non correctly configured server with pytest.raises(Exception): backup_manager.executor.pg_start_backup(backup_label) # Expect no error and the correct call sequence backup_manager.server.reset_mock() backup_manager.server.pg_is_in_recovery.return_value = False backup_manager.server.server_version = 90300 backup_manager.executor.strategy._pg_start_backup(backup_label) pg_connect = call.pg_connect() with_pg_connect = pg_connect.__enter__() cursor = with_pg_connect.cursor() assert backup_manager.server.mock_calls == [ pg_connect, with_pg_connect, pg_connect.__enter__().rollback(), cursor, cursor.execute(ANY, ANY), cursor.fetchone(), pg_connect.__exit__(None, None, None), ] # Change server version and expect no error and the correct call # sequence backup_manager.server.reset_mock() backup_manager.server.server_version = 80300 backup_manager.executor.strategy._pg_start_backup(backup_label) assert backup_manager.server.mock_calls == [ pg_connect, with_pg_connect, pg_connect.__enter__().rollback(), cursor, cursor.execute(ANY, ANY), cursor.fetchone(), pg_connect.__exit__(None, None, None), ]
def test_pg_stop_backup(self): """ Basic test for the _pg_stop_backup method """ # Build a backup info and configure the mocks backup_manager = build_backup_manager() # Test 1: Expect no error and the correct call sequence backup_manager.executor.strategy._pg_stop_backup() pg_connect = call.pg_connect() with_pg_connect = pg_connect.__enter__() cursor = with_pg_connect.cursor() assert backup_manager.server.mock_calls == [ pg_connect, with_pg_connect, pg_connect.__enter__().rollback(), cursor, cursor.execute(ANY), cursor.fetchone(), pg_connect.__exit__(None, None, None), ] # Test 2: Setup the mock to trigger an exception backup_manager.executor.server.reset_mock() backup_manager.executor.server.pg_connect.return_value.__enter__.return_value.cursor.return_value.execute.side_effect = ( psycopg2.Error ) # Check that the method returns None as result assert backup_manager.executor.strategy._pg_stop_backup() is None assert backup_manager.server.mock_calls == [ pg_connect, with_pg_connect, pg_connect.__enter__().rollback(), cursor, cursor.execute(ANY), pg_connect.__exit__(None, None, None), ]
def test_pgespresso_stop_backup(self): """ Basic test for _pgespresso_stop_backup """ # Build a backup info and configure the mocks server = build_mocked_server(main_conf={"backup_options": BackupOptions.CONCURRENT_BACKUP}) backup_manager = build_backup_manager(server=server) # Test 1: Expect no error and the correct call sequence backup_manager.executor.strategy._pgespresso_stop_backup("test_label") pg_connect = call.pg_connect() with_pg_connect = pg_connect.__enter__() cursor = with_pg_connect.cursor() assert backup_manager.server.mock_calls == [ pg_connect, with_pg_connect, pg_connect.__enter__().rollback(), cursor, cursor.execute(ANY, ("test_label",)), cursor.fetchone(), pg_connect.__exit__(None, None, None), ] # Test 2: Setup the mock to trigger an exception backup_manager.executor.server.reset_mock() backup_manager.executor.server.pg_connect.return_value.__enter__.return_value.cursor.return_value.execute.side_effect = ( psycopg2.Error ) assert backup_manager.executor.strategy._pgespresso_stop_backup("test_label1") is None assert backup_manager.server.mock_calls == [ pg_connect, with_pg_connect, pg_connect.__enter__().rollback(), cursor, cursor.execute(ANY, ("test_label1",)), pg_connect.__exit__(None, None, None), ]
def test_pgespresso_stop_backup(self): """ Basic test for pgespresso_stop_backup """ # Build a backup info and configure the mocks backup_manager = build_backup_manager() # Test 1: Expect no error and the correct call sequence backup_manager.executor.pgespresso_stop_backup('test_label') pg_connect = call.pg_connect() with_pg_connect = pg_connect.__enter__() cursor = with_pg_connect.cursor() assert backup_manager.server.mock_calls == [ pg_connect, with_pg_connect, cursor, cursor.execute(ANY, ('test_label',)), cursor.fetchone(), pg_connect.__exit__(None, None, None)] # Test 2: Setup the mock to trigger an exception backup_manager.executor.server.reset_mock() backup_manager.executor.server.pg_connect.return_value. \ __enter__.return_value. \ cursor.return_value.\ execute.side_effect = psycopg2.Error assert backup_manager.executor.pgespresso_stop_backup( 'test_label1') is None assert backup_manager.server.mock_calls == [ pg_connect, with_pg_connect, cursor, cursor.execute(ANY, ('test_label1',)), pg_connect.__exit__(None, None, None)]