|
17 | 17 | GlobalInitScriptDetailsWithContent, |
18 | 18 | Policy, |
19 | 19 | ) |
| 20 | +from databricks.sdk.service.jobs import BaseRun, RunResultState, RunState |
20 | 21 | from databricks.sdk.service.sql import ( |
21 | 22 | Dashboard, |
22 | 23 | DataSource, |
@@ -1002,3 +1003,77 @@ def test_uninstall_no_config_file(ws, mocker): |
1002 | 1003 | ws.workspace.download = lambda _: io.BytesIO(config_bytes) |
1003 | 1004 | ws.workspace.get_status.side_effect = NotFound(...) |
1004 | 1005 | install.uninstall() |
| 1006 | + |
| 1007 | + |
| 1008 | +def test_repair_run(ws, mocker): |
| 1009 | + base = [ |
| 1010 | + BaseRun( |
| 1011 | + job_clusters=None, |
| 1012 | + job_id=677268692725050, |
| 1013 | + job_parameters=None, |
| 1014 | + number_in_job=725118654200173, |
| 1015 | + run_id=725118654200173, |
| 1016 | + run_name="[UCX] assessment", |
| 1017 | + state=RunState(result_state=RunResultState.FAILED), |
| 1018 | + ) |
| 1019 | + ] |
| 1020 | + install = WorkspaceInstaller(ws, promtps=MockPrompts({".*": ""})) |
| 1021 | + mocker.patch("webbrowser.open") |
| 1022 | + install._state.jobs = {"assessment": "123"} |
| 1023 | + ws.jobs.list_runs.return_value = base |
| 1024 | + ws.jobs.list_runs.repair_run = None |
| 1025 | + install.repair_run("assessment") |
| 1026 | + |
| 1027 | + |
| 1028 | +def test_repair_run_success(ws, caplog): |
| 1029 | + base = [ |
| 1030 | + BaseRun( |
| 1031 | + job_clusters=None, |
| 1032 | + job_id=677268692725050, |
| 1033 | + job_parameters=None, |
| 1034 | + number_in_job=725118654200173, |
| 1035 | + run_id=725118654200173, |
| 1036 | + run_name="[UCX] assessment", |
| 1037 | + state=RunState(result_state=RunResultState.SUCCESS), |
| 1038 | + ) |
| 1039 | + ] |
| 1040 | + install = WorkspaceInstaller(ws) |
| 1041 | + install._state.jobs = {"assessment": "123"} |
| 1042 | + ws.jobs.list_runs.return_value = base |
| 1043 | + ws.jobs.list_runs.repair_run = None |
| 1044 | + install.repair_run("assessment") |
| 1045 | + assert "job is not in FAILED state" in caplog.text |
| 1046 | + |
| 1047 | + |
| 1048 | +def test_repair_run_no_job_id(ws): |
| 1049 | + base = [ |
| 1050 | + BaseRun( |
| 1051 | + job_clusters=None, |
| 1052 | + job_id=677268692725050, |
| 1053 | + job_parameters=None, |
| 1054 | + number_in_job=725118654200173, |
| 1055 | + run_id=725118654200173, |
| 1056 | + run_name="[UCX] assessment", |
| 1057 | + state=RunState(result_state=RunResultState.SUCCESS), |
| 1058 | + ) |
| 1059 | + ] |
| 1060 | + install = WorkspaceInstaller(ws) |
| 1061 | + install._state.jobs = {"assessment": ""} |
| 1062 | + ws.jobs.list_runs.return_value = base |
| 1063 | + ws.jobs.list_runs.repair_run = None |
| 1064 | + install.repair_run("workflow") |
| 1065 | + |
| 1066 | + |
| 1067 | +def test_repair_run_no_job_run(ws): |
| 1068 | + install = WorkspaceInstaller(ws) |
| 1069 | + install._state.jobs = {"assessment": "677268692725050"} |
| 1070 | + ws.jobs.list_runs.return_value = "" |
| 1071 | + ws.jobs.list_runs.repair_run = None |
| 1072 | + install.repair_run("assessment") |
| 1073 | + |
| 1074 | + |
| 1075 | +def test_repair_run_exception(ws): |
| 1076 | + install = WorkspaceInstaller(ws) |
| 1077 | + install._state.jobs = {"assessment": "123"} |
| 1078 | + ws.jobs.list_runs.side_effect = InvalidParameterValue("Workflow does not exists") |
| 1079 | + install.repair_run("assessment") |
0 commit comments