Skip to content

Commit 2eb968f

Browse files
committed
WIP Use AGA instead of plugin in CI
loading_cora did not work while working from the train
1 parent 4b94b8b commit 2eb968f

File tree

4 files changed

+124
-806
lines changed

4 files changed

+124
-806
lines changed

examples/gds-example.ipynb

Lines changed: 75 additions & 778 deletions
Large diffs are not rendered by default.

python-wrapper/pyproject.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ dependencies = [
3333
"ipython >=7, <10",
3434
"pydantic >=2 , <3",
3535
"pydantic-extra-types >=2, <3",
36-
"enum-tools==0.13.0"
36+
"enum-tools==0.13.0",
37+
"python-dotenv>=1.2.1",
3738
]
3839
requires-python = ">=3.10"
3940

@@ -72,7 +73,7 @@ notebook = [
7273
"palettable>=3.3.3",
7374
"matplotlib>=3.9.4",
7475
"snowflake-snowpark-python==1.42.0",
75-
"dotenv"
76+
"python-dotenv"
7677
]
7778

7879
[project.urls]

python-wrapper/tests/conftest.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import random
23
from typing import Any, Generator
34

45
import pytest
@@ -31,45 +32,56 @@ def pytest_collection_modifyitems(config: Any, items: Any) -> None:
3132

3233

3334
@pytest.fixture(scope="package")
34-
def aura_ds_instance() -> Generator[Any, None, None]:
35+
def aura_db_instance() -> Generator[Any, None, None]:
3536
if os.environ.get("AURA_API_CLIENT_ID", None) is None:
3637
yield None
3738
return
3839

39-
from tests.gds_helper import aura_api, create_aurads_instance
40+
from tests.gds_helper import aura_api, create_auradb_instance
4041

4142
api = aura_api()
42-
id, dbms_connection_info = create_aurads_instance(api)
43+
dbms_connection_info = create_auradb_instance(api)
4344

45+
old_uri = os.environ.get("NEO4J_URI", "")
4446
# setting as environment variables to run notebooks with this connection
4547
os.environ["NEO4J_URI"] = dbms_connection_info.get_uri()
4648
assert isinstance(dbms_connection_info.username, str)
4749
os.environ["NEO4J_USER"] = dbms_connection_info.username
4850
assert isinstance(dbms_connection_info.password, str)
4951
os.environ["NEO4J_PASSWORD"] = dbms_connection_info.password
52+
old_instance = os.environ.get("AURA_INSTANCEID", "")
53+
if dbms_connection_info.aura_instance_id:
54+
os.environ["AURA_INSTANCEID"] = dbms_connection_info.aura_instance_id
55+
5056
yield dbms_connection_info
5157

5258
# Clear Neo4j_URI after test (rerun should create a new instance)
53-
os.environ["NEO4J_URI"] = ""
54-
api.delete_instance(id)
59+
os.environ["NEO4J_URI"] = old_uri
60+
os.environ["AURA_INSTANCEID"] = old_instance
61+
assert dbms_connection_info.aura_instance_id is not None
62+
api.delete_instance(dbms_connection_info.aura_instance_id)
5563

5664

5765
@pytest.fixture(scope="package")
58-
def gds(aura_ds_instance: Any) -> Generator[Any, None, None]:
59-
from graphdatascience import GraphDataScience
66+
def gds(aura_db_instance: Any) -> Generator[Any, None, None]:
67+
from graphdatascience.session import SessionMemory
6068

61-
from tests.gds_helper import connect_to_plugin_gds
69+
from tests.gds_helper import connect_to_plugin_gds, gds_sessions
6270

63-
if aura_ds_instance:
64-
yield GraphDataScience(
65-
endpoint=aura_ds_instance.uri,
66-
auth=(aura_ds_instance.username, aura_ds_instance.password),
67-
aura_ds=True,
68-
database="neo4j",
71+
if aura_db_instance:
72+
sessions = gds_sessions()
73+
74+
gds = sessions.get_or_create(
75+
f"neo4j-viz-ci-{os.environ.get('GITHUB_RUN_ID', random.randint(0, 10**6))}",
76+
memory=SessionMemory.m_2GB,
77+
db_connection=aura_db_instance,
6978
)
79+
80+
yield gds
81+
gds.delete()
7082
else:
71-
NEO4J_URI = os.environ.get("NEO4J_URI", "neo4j://localhost:7687")
72-
gds = connect_to_plugin_gds(NEO4J_URI)
83+
NEO4J_URI = os.environ["NEO4J_URI"]
84+
gds = connect_to_plugin_gds(NEO4J_URI) # type: ignore
7385
yield gds
7486
gds.close()
7587

python-wrapper/tests/gds_helper.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import os
22
import re
33

4-
from graphdatascience import GraphDataScience
4+
from graphdatascience import GdsSessions, GraphDataScience
55
from graphdatascience.semantic_version.semantic_version import SemanticVersion
6-
from graphdatascience.session import DbmsConnectionInfo, SessionMemory
6+
from graphdatascience.session import AuraAPICredentials, DbmsConnectionInfo, SessionMemory
77
from graphdatascience.session.aura_api import AuraApi
88
from graphdatascience.session.aura_api_responses import InstanceCreateDetails
99
from graphdatascience.version import __version__
@@ -49,21 +49,29 @@ def aura_api() -> AuraApi:
4949
)
5050

5151

52-
def create_aurads_instance(api: AuraApi) -> tuple[str, DbmsConnectionInfo]:
53-
# Switch to Sessions once they can be created without a DB
52+
def gds_sessions() -> GdsSessions:
53+
return GdsSessions(
54+
api_credentials=AuraAPICredentials(
55+
client_id=os.environ["AURA_API_CLIENT_ID"],
56+
client_secret=os.environ["AURA_API_CLIENT_SECRET"],
57+
project_id=os.environ.get("AURA_API_TENANT_ID"),
58+
)
59+
)
60+
61+
62+
def create_auradb_instance(api: AuraApi) -> DbmsConnectionInfo:
5463
instance_details: InstanceCreateDetails = api.create_instance(
55-
name="ci-neo4j-viz-session",
56-
memory=SessionMemory.m_8GB.value,
64+
name="ci-neo4j-viz-db",
65+
memory=SessionMemory.m_2GB.value,
5766
cloud_provider="gcp",
5867
region="europe-west1",
68+
type="enterprise-db",
5969
)
6070

6171
wait_result = api.wait_for_instance_running(instance_id=instance_details.id)
6272
if wait_result.error:
6373
raise Exception(f"Error while waiting for instance to be running: {wait_result.error}")
6474

65-
return instance_details.id, DbmsConnectionInfo(
66-
uri=wait_result.connection_url,
67-
username="neo4j",
68-
password=instance_details.password,
75+
return DbmsConnectionInfo(
76+
username="neo4j", password=instance_details.password, aura_instance_id=instance_details.id
6977
)

0 commit comments

Comments
 (0)