|
38 | 38 | from pyspark.sql.connect.proto import Command, ConfigResponse, ExecutePlanRequest, Plan, Relation, SQL, SqlCommand, UserContext |
39 | 39 | from unittest import mock |
40 | 40 |
|
| 41 | +_DATAPROC_SESSIONS_BASE_URL = ( |
| 42 | + "https://console.cloud.google.com/dataproc/interactive" |
| 43 | +) |
| 44 | + |
41 | 45 |
|
42 | 46 | class DataprocRemoteSparkSessionBuilderTests(unittest.TestCase): |
43 | 47 |
|
@@ -163,7 +167,7 @@ def test_create_spark_session_with_default_notebook_behavior( |
163 | 167 | mock_ipython_utils = mock.sys.modules[ |
164 | 168 | "google.cloud.aiplatform.utils" |
165 | 169 | ]._ipython_utils |
166 | | - test_session_url = f"https://console.cloud.google.com/dataproc/interactive/sessions/{session_id}/locations/test-region?project=test-project" |
| 170 | + test_session_url = f"{_DATAPROC_SESSIONS_BASE_URL}/test-region/{session_id}?project=test-project" |
167 | 171 | mock_display_link = mock_ipython_utils.display_link |
168 | 172 | mock.patch.dict( |
169 | 173 | os.environ, |
@@ -1189,7 +1193,7 @@ def test_display_button_with_aiplatform_installed_ipython_interactive( |
1189 | 1193 | mock_ipython_utils = mock.sys.modules[ |
1190 | 1194 | "google.cloud.aiplatform.utils" |
1191 | 1195 | ]._ipython_utils |
1192 | | - test_session_url = "https://console.cloud.google.com/dataproc/interactive/sessions/test_session/locations/test-region?project=test-project" |
| 1196 | + test_session_url = f"{_DATAPROC_SESSIONS_BASE_URL}/test-region/test_session?project=test-project" |
1193 | 1197 |
|
1194 | 1198 | mock_display_link = mock_ipython_utils.display_link |
1195 | 1199 | DataprocSparkSession.builder._display_view_session_details_button( |
@@ -1230,6 +1234,56 @@ def test_display_button_with_aiplatform_installed_ipython_non_interactive( |
1230 | 1234 | ) |
1231 | 1235 | mock_display_link.assert_not_called() |
1232 | 1236 |
|
| 1237 | + @mock.patch( |
| 1238 | + "IPython.core.interactiveshell.InteractiveShell.initialized", |
| 1239 | + return_value=False, |
| 1240 | + ) |
| 1241 | + @mock.patch("IPython.display.display") |
| 1242 | + def test_display_session_link_on_creation_colab_enterprise( |
| 1243 | + self, |
| 1244 | + mock_display, |
| 1245 | + _mock_ipy, |
| 1246 | + ): |
| 1247 | + mock.patch.dict( |
| 1248 | + os.environ, |
| 1249 | + { |
| 1250 | + "VERTEX_PRODUCT": "COLAB_ENTERPRISE", |
| 1251 | + }, |
| 1252 | + ).start() |
| 1253 | + DataprocSparkSession.builder._display_session_link_on_creation( |
| 1254 | + "test_session" |
| 1255 | + ) |
| 1256 | + |
| 1257 | + mock_display.assert_called_once() |
| 1258 | + args, _ = mock_display.call_args |
| 1259 | + html_output = args[0].data |
| 1260 | + self.assertIn("Creating Dataproc Spark Session", html_output) |
| 1261 | + self.assertNotIn("Dataproc Session", html_output) |
| 1262 | + |
| 1263 | + @mock.patch( |
| 1264 | + "IPython.core.interactiveshell.InteractiveShell.initialized", |
| 1265 | + return_value=False, |
| 1266 | + ) |
| 1267 | + @mock.patch("IPython.display.display") |
| 1268 | + def test_display_session_link_on_creation_not_colab_enterprise( |
| 1269 | + self, |
| 1270 | + mock_display, |
| 1271 | + _mock_ipy, |
| 1272 | + ): |
| 1273 | + mock.patch.dict( |
| 1274 | + os.environ, |
| 1275 | + {}, |
| 1276 | + ).start() |
| 1277 | + DataprocSparkSession.builder._display_session_link_on_creation( |
| 1278 | + "test_session" |
| 1279 | + ) |
| 1280 | + |
| 1281 | + mock_display.assert_called_once() |
| 1282 | + args, _ = mock_display.call_args |
| 1283 | + html_output = args[0].data |
| 1284 | + self.assertIn("Creating Dataproc Spark Session", html_output) |
| 1285 | + self.assertIn("Dataproc Session", html_output) |
| 1286 | + |
1233 | 1287 | def test_is_valid_label_value(self): |
1234 | 1288 | # Valid label values |
1235 | 1289 | self.assertTrue(_is_valid_label_value("valid-label-123")) |
|
0 commit comments