Skip to content

Commit 930825b

Browse files
larsgeorge-dbnfx
andauthored
Replace experiment fixture with the standard one (#168)
There is no `make_experiment` fixture. The original test created a folder and then in multiple threads created experiment artifacts in that folder (plus the post-test cleanup). Is this todo? --------- Co-authored-by: Serge Smertin <[email protected]> Co-authored-by: Serge Smertin <[email protected]>
1 parent 3fe4174 commit 930825b

File tree

3 files changed

+39
-38
lines changed

3 files changed

+39
-38
lines changed

src/databricks/labs/ucx/providers/mixins/fixtures.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,29 @@ def create(
415415
yield from factory("cluster", create, lambda item: ws.clusters.permanent_delete(item.cluster_id))
416416

417417

418+
@pytest.fixture
419+
def make_experiment(ws, make_random):
420+
def create(
421+
*,
422+
path: str | None = None,
423+
experiment_name: str | None = None,
424+
**kwargs,
425+
):
426+
if path is None:
427+
path = f"/Users/{ws.current_user.me().user_name}/{make_random(4)}"
428+
if experiment_name is None:
429+
experiment_name = f"sdk-{make_random(4)}"
430+
431+
try:
432+
ws.workspace.mkdirs(path)
433+
except DatabricksError:
434+
pass
435+
436+
return ws.experiments.create_experiment(name=f"{path}/{experiment_name}", **kwargs)
437+
438+
yield from factory("experiment", create, lambda item: ws.experiments.delete_experiment(item.experiment_id))
439+
440+
418441
@pytest.fixture
419442
def make_instance_pool(ws, make_random):
420443
def create(*, instance_pool_name=None, node_type_id=None, **kwargs):

tests/integration/conftest.py

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
import databricks.sdk.core
99
import pytest
1010
from databricks.sdk import AccountClient, WorkspaceClient
11-
from databricks.sdk.core import Config, DatabricksError
11+
from databricks.sdk.core import Config
1212
from databricks.sdk.service.compute import CreatePolicyResponse
1313
from databricks.sdk.service.iam import AccessControlRequest, PermissionLevel
14-
from databricks.sdk.service.ml import CreateExperimentResponse, ModelDatabricks
14+
from databricks.sdk.service.ml import ModelDatabricks
1515
from databricks.sdk.service.ml import PermissionLevel as ModelPermissionLevel
1616
from databricks.sdk.service.workspace import ObjectInfo, ObjectType
1717

@@ -36,7 +36,6 @@
3636
NUM_TEST_GROUPS = int(os.environ.get("NUM_TEST_GROUPS", 5))
3737
NUM_TEST_INSTANCE_PROFILES = int(os.environ.get("NUM_TEST_INSTANCE_PROFILES", 3))
3838
NUM_TEST_CLUSTER_POLICIES = int(os.environ.get("NUM_TEST_CLUSTER_POLICIES", 3))
39-
NUM_TEST_EXPERIMENTS = int(os.environ.get("NUM_TEST_EXPERIMENTS", 3))
4039
NUM_TEST_MODELS = int(os.environ.get("NUM_TEST_MODELS", 3))
4140
NUM_TEST_TOKENS = int(os.environ.get("NUM_TEST_TOKENS", 3))
4241

@@ -281,39 +280,6 @@ def cluster_policies(env: EnvironmentInfo, ws: WorkspaceClient) -> list[CreatePo
281280
Threader(executables).run()
282281

283282

284-
@pytest.fixture
285-
def experiments(ws: WorkspaceClient, env: EnvironmentInfo) -> list[CreateExperimentResponse]:
286-
logger.debug("Creating test experiments")
287-
288-
try:
289-
ws.workspace.mkdirs("/experiments")
290-
except DatabricksError:
291-
pass
292-
293-
test_experiments = Threader(
294-
[
295-
partial(ws.experiments.create_experiment, name=f"/experiments/{env.test_uid}-test-{i}")
296-
for i in range(NUM_TEST_EXPERIMENTS)
297-
]
298-
).run()
299-
300-
_set_random_permissions(
301-
test_experiments,
302-
"experiment_id",
303-
RequestObjectType.EXPERIMENTS,
304-
env,
305-
ws,
306-
permission_levels=[PermissionLevel.CAN_MANAGE, PermissionLevel.CAN_READ, PermissionLevel.CAN_EDIT],
307-
)
308-
309-
yield test_experiments
310-
311-
logger.debug("Deleting test experiments")
312-
executables = [partial(ws.experiments.delete_experiment, e.experiment_id) for e in test_experiments]
313-
Threader(executables).run()
314-
logger.debug("Test experiments deleted")
315-
316-
317283
@pytest.fixture
318284
def models(ws: WorkspaceClient, env: EnvironmentInfo) -> list[ModelDatabricks]:
319285
logger.debug("Creating models")
@@ -423,7 +389,6 @@ def workspace_objects(ws: WorkspaceClient, env: EnvironmentInfo) -> WorkspaceObj
423389
@pytest.fixture
424390
def verifiable_objects(
425391
cluster_policies,
426-
experiments,
427392
models,
428393
tokens,
429394
workspace_objects,
@@ -432,7 +397,6 @@ def verifiable_objects(
432397
(workspace_objects, "workspace_objects", None),
433398
(tokens, "tokens", RequestObjectType.AUTHORIZATION),
434399
(cluster_policies, "policy_id", RequestObjectType.CLUSTER_POLICIES),
435-
(experiments, "experiment_id", RequestObjectType.EXPERIMENTS),
436400
(models, "id", RequestObjectType.REGISTERED_MODELS),
437401
]
438402
yield _verifiable_objects

tests/integration/test_e2e.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ def test_e2e(
134134
make_instance_pool_permissions,
135135
make_cluster,
136136
make_cluster_permissions,
137+
make_experiment,
138+
make_experiment_permissions,
137139
make_job,
138140
make_job_permissions,
139141
make_pipeline,
@@ -166,6 +168,18 @@ def test_e2e(
166168
([cluster], "cluster_id", RequestObjectType.CLUSTERS),
167169
)
168170

171+
experiment = make_experiment()
172+
make_experiment_permissions(
173+
object_id=experiment.experiment_id,
174+
permission_level=random.choice(
175+
[PermissionLevel.CAN_MANAGE, PermissionLevel.CAN_READ, PermissionLevel.CAN_EDIT]
176+
),
177+
group_name=ws_group.display_name,
178+
)
179+
verifiable_objects.append(
180+
([experiment], "experiment_id", RequestObjectType.EXPERIMENTS),
181+
)
182+
169183
job = make_job()
170184
make_job_permissions(
171185
object_id=job.job_id,

0 commit comments

Comments
 (0)