Skip to content

Commit 7997179

Browse files
authored
Fix test failing due to groups not being created yet (#1669)
## Changes (We think that) sometimes groups are not created before the test run, e.g. [this](https://github.com/databrickslabs/ucx/actions/runs/9002466231?pr=1532) and [that](#1616). This PR extends the `make_group` with an optional flag to wait for the groups to be created before continuing with the test. To limit impact on performance, we don't wait for the groups to be created by default. ### Linked issues Hopefully esolves #1616 ### Functionality - [ ] added relevant user documentation - [ ] added new CLI command - [ ] modified existing command: `databricks labs ucx ...` - [ ] added a new workflow - [ ] modified existing workflow: `...` - [ ] added a new table - [ ] modified existing table: `...` ### Tests <!-- How is this tested? Please see the checklist below and also describe any other relevant tests --> - [x] manually tested - [ ] added unit tests - [ ] added integration tests - [ ] verified on staging environment (screenshot attached)
1 parent 7018156 commit 7997179

File tree

3 files changed

+15
-3
lines changed

3 files changed

+15
-3
lines changed

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,7 @@ def create(
625625
roles: list[str] | None = None,
626626
entitlements: list[str] | None = None,
627627
display_name: str | None = None,
628+
wait_for_provisioning: bool = False,
628629
**kwargs,
629630
):
630631
kwargs["display_name"] = f"sdk-{make_random(4)}" if display_name is None else display_name
@@ -640,6 +641,14 @@ def create(
640641
logger.info(f"Account group {group.display_name}: {cfg.host}/users/groups/{group.id}/members")
641642
else:
642643
logger.info(f"Workspace group {group.display_name}: {cfg.host}#setting/accounts/groups/{group.id}")
644+
645+
@retried(on=[NotFound], timeout=timedelta(minutes=2))
646+
def _wait_for_provisioning() -> None:
647+
interface.get(group.id)
648+
649+
if wait_for_provisioning:
650+
_wait_for_provisioning()
651+
643652
return group
644653

645654
yield from factory(name, create, lambda item: interface.delete(item.id))

tests/integration/conftest.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ def __init__( # pylint: disable=too-many-arguments
569569
self._make_acc_group = make_acc_group_fixture
570570
self._make_user = make_user_fixture
571571

572-
def make_ucx_group(self, workspace_group_name=None, account_group_name=None):
572+
def make_ucx_group(self, workspace_group_name=None, account_group_name=None, wait_for_provisioning=False):
573573
if not workspace_group_name:
574574
workspace_group_name = f"ucx_G{self._make_random(4)}"
575575
if not account_group_name:
@@ -580,8 +580,11 @@ def make_ucx_group(self, workspace_group_name=None, account_group_name=None):
580580
display_name=workspace_group_name,
581581
members=members,
582582
entitlements=["allow-cluster-create"],
583+
wait_for_provisioning=wait_for_provisioning,
584+
)
585+
acc_group = self._make_acc_group(
586+
display_name=account_group_name, members=members, wait_for_provisioning=wait_for_provisioning
583587
)
584-
acc_group = self._make_acc_group(display_name=account_group_name, members=members)
585588
return ws_group, acc_group
586589

587590
@cached_property

tests/integration/test_ext_hms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def test_running_real_assessment_job_ext_hms(
153153
r"Choose a cluster policy": "0",
154154
},
155155
)
156-
ws_group_a, _ = ext_hms_ctx.make_ucx_group()
156+
ws_group_a, _ = ext_hms_ctx.make_ucx_group(wait_for_provisioning=True)
157157

158158
cluster_policy = make_cluster_policy()
159159
make_cluster_policy_permissions(

0 commit comments

Comments
 (0)