Skip to content

Commit

Permalink
Add unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
colin-rogers-dbt committed Nov 1, 2024
1 parent 8358c9a commit 7dcb426
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions tests/unit/test_connection.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
from multiprocessing import get_context
from unittest import TestCase, mock

import pytest
from dbt.adapters.exceptions import FailedToConnectError
from unittest.mock import MagicMock, call

import redshift_connector

from dbt.adapters.redshift import (
Plugin as RedshiftPlugin,
RedshiftAdapter,
RedshiftCredentials,
)
from tests.unit.utils import (
config_from_parts_or_dicts,
Expand Down Expand Up @@ -128,3 +132,32 @@ def test_backend_pid_used_in_pg_terminate_backend(self):
call(f"select pg_terminate_backend({backend_pid})"),
]
)

def test_retry_able_exceptions_trigger_retry(self):
with mock.patch.object(self.adapter.connections, "add_query") as add_query:
connection_mock = mock_connection("model", state="closed")
connection_mock.credentials = RedshiftCredentials.from_dict(
{
"type": "redshift",
"dbname": "redshift",
"user": "root",
"host": "thishostshouldnotexist.test.us-east-1",
"pass": "password",
"port": 5439,
"schema": "public",
"retries": 2,
}
)

connect_mock = MagicMock()
connect_mock.side_effect = [
redshift_connector.InterfaceError("retryable interface error<1>"),
redshift_connector.InterfaceError("retryable interface error<2>"),
redshift_connector.InterfaceError("retryable interface error<3>"),
]

with mock.patch("redshift_connector.connect", connect_mock):
with pytest.raises(FailedToConnectError) as e:
connection = self.adapter.connections.open(connection_mock)
assert str(e.value) == "Database Error\n retryable interface error<3>"
assert connect_mock.call_count == 3

0 comments on commit 7dcb426

Please sign in to comment.