diff --git a/acceptance/acceptance_test.go b/acceptance/acceptance_test.go index afdc42abc..0aa252900 100644 --- a/acceptance/acceptance_test.go +++ b/acceptance/acceptance_test.go @@ -296,6 +296,10 @@ func runTest(t *testing.T, dir, coverDir string, repls testdiff.ReplacementsCont items := strings.Split(stub.Pattern, " ") require.Len(t, items, 2) server.Handle(items[0], items[1], func(req testserver.Request) any { + if stub.DelaySeconds > 0 { + time.Sleep(time.Duration(stub.DelaySeconds) * time.Second) + } + return stub.Response }) } diff --git a/acceptance/config_test.go b/acceptance/config_test.go index cc5257c65..0f5bcc6a1 100644 --- a/acceptance/config_test.go +++ b/acceptance/config_test.go @@ -67,6 +67,9 @@ type ServerStub struct { // The response body to return. Response testserver.Response + + // Artificial delay in seconds to simulate slow responses. + DelaySeconds int } // FindConfigs finds all the config relevant for this test, diff --git a/acceptance/telemetry/partial-success-debug-logs/out.requests.txt b/acceptance/telemetry/partial-success-debug-logs/out.requests.txt index d7b4c5713..69633b190 100644 --- a/acceptance/telemetry/partial-success-debug-logs/out.requests.txt +++ b/acceptance/telemetry/partial-success-debug-logs/out.requests.txt @@ -10,8 +10,8 @@ "uploadTime": "UNIX_TIME_MILLIS", "items": [], "protoLogs": [ - "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\",\"execution_time_ms\":1},\"cli_test_event\":{\"name\":\"VALUE1\"}}}}", - "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\",\"execution_time_ms\":1},\"cli_test_event\":{\"name\":\"VALUE2\"}}}}" + "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\"},\"cli_test_event\":{\"name\":\"VALUE1\"}}}}", + "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\"},\"cli_test_event\":{\"name\":\"VALUE2\"}}}}" ] } } @@ -27,8 +27,8 @@ "uploadTime": "UNIX_TIME_MILLIS", "items": [], "protoLogs": [ - "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\",\"execution_time_ms\":1},\"cli_test_event\":{\"name\":\"VALUE1\"}}}}", - "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\",\"execution_time_ms\":1},\"cli_test_event\":{\"name\":\"VALUE2\"}}}}" + "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\"},\"cli_test_event\":{\"name\":\"VALUE1\"}}}}", + "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\"},\"cli_test_event\":{\"name\":\"VALUE2\"}}}}" ] } } @@ -44,8 +44,8 @@ "uploadTime": "UNIX_TIME_MILLIS", "items": [], "protoLogs": [ - "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\",\"execution_time_ms\":1},\"cli_test_event\":{\"name\":\"VALUE1\"}}}}", - "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\",\"execution_time_ms\":1},\"cli_test_event\":{\"name\":\"VALUE2\"}}}}" + "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\"},\"cli_test_event\":{\"name\":\"VALUE1\"}}}}", + "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\"},\"cli_test_event\":{\"name\":\"VALUE2\"}}}}" ] } } diff --git a/acceptance/telemetry/partial-success-debug-logs/output.txt b/acceptance/telemetry/partial-success-debug-logs/output.txt index 7f74b1318..2bd9bf300 100644 --- a/acceptance/telemetry/partial-success-debug-logs/output.txt +++ b/acceptance/telemetry/partial-success-debug-logs/output.txt @@ -6,8 +6,8 @@ HH:MM:SS Debug: POST /telemetry-ext > { > "items": null, > "protoLogs": [ -> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)", -> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)" +> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (210 more bytes)", +> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (210 more bytes)" > ], > "uploadTime": "UNIX_TIME_MILLIS" > } @@ -22,8 +22,8 @@ HH:MM:SS Debug: POST /telemetry-ext > { > "items": null, > "protoLogs": [ -> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)", -> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)" +> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (210 more bytes)", +> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (210 more bytes)" > ], > "uploadTime": "UNIX_TIME_MILLIS" > } @@ -38,8 +38,8 @@ HH:MM:SS Debug: POST /telemetry-ext > { > "items": null, > "protoLogs": [ -> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)", -> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)" +> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (210 more bytes)", +> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (210 more bytes)" > ], > "uploadTime": "UNIX_TIME_MILLIS" > } diff --git a/acceptance/telemetry/timeout/out.requests.txt b/acceptance/telemetry/timeout/out.requests.txt new file mode 100644 index 000000000..57574b976 --- /dev/null +++ b/acceptance/telemetry/timeout/out.requests.txt @@ -0,0 +1,17 @@ +{ + "headers": { + "Authorization": [ + "Bearer [DATABRICKS_TOKEN]" + ] + }, + "method": "POST", + "path": "/telemetry-ext", + "body": { + "uploadTime": "UNIX_TIME_MILLIS", + "items": [], + "protoLogs": [ + "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\",\"execution_time_ms\":1},\"cli_test_event\":{\"name\":\"VALUE1\"}}}}", + "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"execution_context\":{\"cmd_exec_id\":\"[UUID]\",\"version\":\"[DEV_VERSION]\",\"command\":\"selftest_send-telemetry\",\"operating_system\":\"[OS]\",\"execution_time_ms\":1},\"cli_test_event\":{\"name\":\"VALUE2\"}}}}" + ] + } +} diff --git a/acceptance/telemetry/timeout/output.txt b/acceptance/telemetry/timeout/output.txt new file mode 100644 index 000000000..8dad2627a --- /dev/null +++ b/acceptance/telemetry/timeout/output.txt @@ -0,0 +1,16 @@ + +>>> [CLI] selftest send-telemetry --debug +HH:MM:SS Info: start pid=PID version=[DEV_VERSION] args="[CLI], selftest, send-telemetry, --debug" +HH:MM:SS Info: completed execution pid=PID exit_code=0 +HH:MM:SS Debug: POST /telemetry-ext +> { +> "items": null, +> "protoLogs": [ +> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)", +> "{\"frontend_log_event_id\":\"[UUID]\",\"entry\":{\"databricks_cli_log\":{\"... (232 more bytes)" +> ], +> "uploadTime": "UNIX_TIME_MILLIS" +> } +< Error: Post "[DATABRICKS_URL]/telemetry-ext": context deadline exceeded pid=PID sdk=true +HH:MM:SS Debug: non-retriable error: Post "[DATABRICKS_URL]/telemetry-ext": context deadline exceeded pid=PID sdk=true +HH:MM:SS Debug: failed to upload telemetry: uploading telemetry logs timed out: context deadline exceeded pid=PID diff --git a/acceptance/telemetry/timeout/script b/acceptance/telemetry/timeout/script new file mode 100644 index 000000000..7fe85f0cd --- /dev/null +++ b/acceptance/telemetry/timeout/script @@ -0,0 +1 @@ +trace $CLI selftest send-telemetry --debug diff --git a/acceptance/telemetry/timeout/test.toml b/acceptance/telemetry/timeout/test.toml new file mode 100644 index 000000000..65da6edb0 --- /dev/null +++ b/acceptance/telemetry/timeout/test.toml @@ -0,0 +1,18 @@ +[[Server]] +Pattern = "POST /telemetry-ext" +Response.Body = ''' +{ + "errors": [], + "numProtoSuccess": 2 +} +''' +DelaySeconds = 5 + + +[[Repls]] +Old = "(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]" +New = "HH:MM:SS" + +[[Repls]] +Old = "pid=[0-9]+" +New = "pid=PID"