|
12 | 12 | InstanceCreateDetails, |
13 | 13 | InstanceDetails, |
14 | 14 | InstanceSpecificDetails, |
| 15 | + TenantDetails, |
15 | 16 | ) |
16 | 17 | from graphdatascience.gds_session.dbms_connection_info import DbmsConnectionInfo |
17 | 18 | from graphdatascience.gds_session.gds_sessions import ( |
@@ -80,6 +81,11 @@ def wait_for_instance_running( |
80 | 81 | ) -> Optional[str]: |
81 | 82 | return super().wait_for_instance_running(instance_id, sleep_time=0.0001, max_sleep_time=0.001) |
82 | 83 |
|
| 84 | + def tenant_details(self) -> TenantDetails: |
| 85 | + return TenantDetails( |
| 86 | + id=self._tenant_id, ds_type="fake-ds", regions_per_provider={"aws": {"leipzig-1", "dresden-2"}} |
| 87 | + ) |
| 88 | + |
83 | 89 |
|
84 | 90 | @pytest.fixture |
85 | 91 | def aura_api() -> AuraApi: |
@@ -176,6 +182,31 @@ def test_create_default_session(mocker: MockerFixture, aura_api: AuraApi) -> Non |
176 | 182 | assert instance_details.memory == "8GB" |
177 | 183 |
|
178 | 184 |
|
| 185 | +def test_create_session_override_region(mocker: MockerFixture, aura_api: AuraApi) -> None: |
| 186 | + _setup_db_instance(aura_api) |
| 187 | + |
| 188 | + sessions = GdsSessions(AuraAPICredentials("", "", "placeholder")) |
| 189 | + sessions._aura_api = aura_api |
| 190 | + |
| 191 | + mocker.patch( |
| 192 | + "graphdatascience.gds_session.gds_sessions.GdsSessions._construct_client", lambda *args, **kwargs: kwargs |
| 193 | + ) |
| 194 | + mocker.patch( |
| 195 | + "graphdatascience.gds_session.gds_sessions.GdsSessions._change_initial_pw", lambda *args, **kwargs: kwargs |
| 196 | + ) |
| 197 | + |
| 198 | + sessions.get_or_create( |
| 199 | + "my-session", |
| 200 | + SessionSizeByMemory.DEFAULT, |
| 201 | + DbmsConnectionInfo("neo4j+ssc://ffff0.databases.neo4j.io", "dbuser", "db_pw"), |
| 202 | + region="dresden-2", |
| 203 | + ) |
| 204 | + instance_details: InstanceSpecificDetails = aura_api.list_instance("ffff1") # type: ignore |
| 205 | + assert instance_details.cloud_provider == "aws" |
| 206 | + assert instance_details.region == "dresden-2" |
| 207 | + assert instance_details.memory == "8GB" |
| 208 | + |
| 209 | + |
179 | 210 | def test_get_or_create(mocker: MockerFixture, aura_api: AuraApi) -> None: |
180 | 211 | _setup_db_instance(aura_api) |
181 | 212 |
|
@@ -368,5 +399,22 @@ def test_create_waiting_forever() -> None: |
368 | 399 | ) |
369 | 400 |
|
370 | 401 |
|
| 402 | +def test_create_session_invalid_region(aura_api: AuraApi) -> None: |
| 403 | + aura_api.create_instance("test", "8GB", "aws", "only-db-region") |
| 404 | + |
| 405 | + sessions = GdsSessions(AuraAPICredentials("", "", "placeholder")) |
| 406 | + sessions._aura_api = aura_api |
| 407 | + |
| 408 | + expected_message = ( |
| 409 | + "Region `only-db-region` is not supported by the tenant `tenant_id`." " Supported regions: {'leipzig-1'}." |
| 410 | + ) |
| 411 | + with pytest.raises(ValueError, match=expected_message): |
| 412 | + sessions.get_or_create( |
| 413 | + "my-session", |
| 414 | + SessionSizes.by_memory().X5L, |
| 415 | + DbmsConnectionInfo("neo4j+ssc://ffff0.databases.neo4j.io", "dbuser", "db_pw"), |
| 416 | + ) |
| 417 | + |
| 418 | + |
371 | 419 | def _setup_db_instance(aura_api: AuraApi) -> None: |
372 | 420 | aura_api.create_instance("test", "8GB", "aws", "leipzig-1") |
0 commit comments