From e2bb90a80dc44859af80285fb41bb536e7d78d9d Mon Sep 17 00:00:00 2001 From: shaw Date: Thu, 16 Jul 2026 09:51:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(test):=20tls.peet.ws=20=E7=AB=99=E7=82=B9?= =?UTF-8?q?=E6=95=85=E9=9A=9C=E6=97=B6=E8=B7=B3=E8=BF=87=20TLS=20=E6=8C=87?= =?UTF-8?q?=E7=BA=B9=E9=9B=86=E6=88=90=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit skipIfExternalServiceUnavailable 的不可用特征清单漏掉 EOF/connection reset/broken pipe,站点半死返回空响应断开时测试走 Fatalf 导致 CI 必红。 补齐特征清单,并把读体失败、非 200 状态码、响应体非法 JSON 一并归为 外部服务不可用跳过;站点健康时指纹校验行为不变。 --- .../tlsfingerprint/dialer_integration_test.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/backend/internal/pkg/tlsfingerprint/dialer_integration_test.go b/backend/internal/pkg/tlsfingerprint/dialer_integration_test.go index 38cddd0d9..9912ddb3b 100644 --- a/backend/internal/pkg/tlsfingerprint/dialer_integration_test.go +++ b/backend/internal/pkg/tlsfingerprint/dialer_integration_test.go @@ -28,6 +28,9 @@ func skipIfExternalServiceUnavailable(t *testing.T, err error) { if strings.Contains(errStr, "certificate has expired") || strings.Contains(errStr, "certificate is not yet valid") || strings.Contains(errStr, "connection refused") || + strings.Contains(errStr, "connection reset") || + strings.Contains(errStr, "broken pipe") || + strings.Contains(errStr, "EOF") || strings.Contains(errStr, "no such host") || strings.Contains(errStr, "network is unreachable") || strings.Contains(errStr, "timeout") || @@ -74,14 +77,15 @@ func TestJA3Fingerprint(t *testing.T) { defer func() { _ = resp.Body.Close() }() body, err := io.ReadAll(resp.Body) - if err != nil { - t.Fatalf("failed to read response: %v", err) + skipIfExternalServiceUnavailable(t, err) + if resp.StatusCode != http.StatusOK { + t.Skipf("skipping test: external service unhealthy: status %d", resp.StatusCode) } var fpResp FingerprintResponse if err := json.Unmarshal(body, &fpResp); err != nil { t.Logf("Response body: %s", string(body)) - t.Fatalf("failed to parse fingerprint response: %v", err) + t.Skipf("skipping test: external service returned unparsable response: %v", err) } t.Logf("JA3: %s", fpResp.TLS.JA3) @@ -207,16 +211,15 @@ func fetchFingerprint(t *testing.T, profile *Profile) *TLSInfo { defer func() { _ = resp.Body.Close() }() body, err := io.ReadAll(resp.Body) - if err != nil { - t.Fatalf("failed to read response: %v", err) - return nil + skipIfExternalServiceUnavailable(t, err) + if resp.StatusCode != http.StatusOK { + t.Skipf("skipping test: external service unhealthy: status %d", resp.StatusCode) } var fpResp FingerprintResponse if err := json.Unmarshal(body, &fpResp); err != nil { t.Logf("Response body: %s", string(body)) - t.Fatalf("failed to parse fingerprint response: %v", err) - return nil + t.Skipf("skipping test: external service returned unparsable response: %v", err) } return &fpResp.TLS