mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-05 23:51:25 +08:00
feat: 优化错误码
This commit is contained in:
+27
-24
@@ -66,18 +66,19 @@ var (
|
|||||||
|
|
||||||
// device related: [50, 70)
|
// device related: [50, 70)
|
||||||
var (
|
var (
|
||||||
DeviceConnectionError = errors.New("device general connection error") // 50
|
DeviceConnectionError = errors.New("device general connection error") // 50
|
||||||
DeviceHTTPDriverError = errors.New("device HTTP driver error") // 51
|
DeviceHTTPDriverError = errors.New("device HTTP driver error") // 51
|
||||||
DeviceUSBDriverError = errors.New("device USB driver error") // 52
|
DeviceUSBDriverError = errors.New("device USB driver error") // 52
|
||||||
DeviceAppNotInstalled = errors.New("device app not installed") // 59
|
DeviceUntrustedCertError = errors.New("device app certificate not trusted") // 53
|
||||||
DeviceGetInfoError = errors.New("device get info error") // 60
|
DeviceAppNotInstalled = errors.New("device app not installed") // 59
|
||||||
DeviceConfigureError = errors.New("device configure error") // 61
|
DeviceGetInfoError = errors.New("device get info error") // 60
|
||||||
DeviceShellExecError = errors.New("device shell exec error") // 62
|
DeviceConfigureError = errors.New("device configure error") // 61
|
||||||
DeviceOfflineError = errors.New("device offline") // 63
|
DeviceShellExecError = errors.New("device shell exec error") // 62
|
||||||
DeviceInstallFailed = errors.New("device install app failed") // 64
|
DeviceOfflineError = errors.New("device offline") // 63
|
||||||
DeviceScreenShotError = errors.New("device screenshot error") // 65
|
DeviceInstallFailed = errors.New("device install app failed") // 64
|
||||||
DeviceCaptureLogError = errors.New("device capture log error") // 66
|
DeviceScreenShotError = errors.New("device screenshot error") // 65
|
||||||
DeviceUIResponseSlow = errors.New("device UI response slow") // 67
|
DeviceCaptureLogError = errors.New("device capture log error") // 66
|
||||||
|
DeviceUIResponseSlow = errors.New("device UI response slow") // 67
|
||||||
)
|
)
|
||||||
|
|
||||||
// UI automation related: [70, 80)
|
// UI automation related: [70, 80)
|
||||||
@@ -176,18 +177,20 @@ var errorsMap = map[error]int{
|
|||||||
UploadFailed: 49,
|
UploadFailed: 49,
|
||||||
|
|
||||||
// device related
|
// device related
|
||||||
DeviceConnectionError: 50,
|
DeviceConnectionError: 50,
|
||||||
DeviceHTTPDriverError: 51,
|
DeviceHTTPDriverError: 51,
|
||||||
DeviceUSBDriverError: 52,
|
DeviceUSBDriverError: 52,
|
||||||
DeviceAppNotInstalled: 59,
|
DeviceUntrustedCertError: 53,
|
||||||
DeviceGetInfoError: 60,
|
DeviceAppNotInstalled: 59,
|
||||||
DeviceConfigureError: 61,
|
DeviceGetInfoError: 60,
|
||||||
DeviceShellExecError: 62,
|
DeviceConfigureError: 61,
|
||||||
DeviceOfflineError: 63,
|
DeviceShellExecError: 62,
|
||||||
DeviceInstallFailed: 64,
|
DeviceOfflineError: 63,
|
||||||
DeviceScreenShotError: 65,
|
DeviceInstallFailed: 64,
|
||||||
DeviceCaptureLogError: 66,
|
DeviceScreenShotError: 65,
|
||||||
DeviceUIResponseSlow: 67,
|
DeviceCaptureLogError: 66,
|
||||||
|
DeviceUIResponseSlow: 67,
|
||||||
|
DeviceUntrustedCertError: 68,
|
||||||
|
|
||||||
// UI automation related
|
// UI automation related
|
||||||
MobileUIDriverAppNotInstalled: 68,
|
MobileUIDriverAppNotInstalled: 68,
|
||||||
|
|||||||
+12
-2
@@ -202,8 +202,13 @@ func (s *DriverSession) RequestWithRetry(method string, urlStr string, rawBody [
|
|||||||
synthesizeEventRetryAdded = true
|
synthesizeEventRetryAdded = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notice: use DeviceHTTPDriverError when request driver failed
|
// Check if it's already a DeviceOfflineError
|
||||||
lastError = errors.Wrap(code.DeviceHTTPDriverError, err.Error())
|
if errors.Is(err, code.DeviceOfflineError) {
|
||||||
|
lastError = err
|
||||||
|
} else {
|
||||||
|
// Use DeviceHTTPDriverError for other errors
|
||||||
|
lastError = errors.Wrap(code.DeviceHTTPDriverError, err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
// If this was the last attempt, break
|
// If this was the last attempt, break
|
||||||
if attempt == maxRetry {
|
if attempt == maxRetry {
|
||||||
@@ -294,6 +299,11 @@ func (s *DriverSession) Request(method string, urlStr string, rawBody []byte, op
|
|||||||
driverResult.RequestTime = time.Now()
|
driverResult.RequestTime = time.Now()
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
if resp, err = s.client.Do(req); err != nil {
|
if resp, err = s.client.Do(req); err != nil {
|
||||||
|
// Check for connection reset or EOF errors and classify as DeviceOfflineError
|
||||||
|
if strings.Contains(err.Error(), "read: connection reset by peer") ||
|
||||||
|
strings.Contains(err.Error(), "EOF") {
|
||||||
|
return nil, errors.Wrap(code.DeviceOfflineError, err.Error())
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
|
|||||||
+15
-1
@@ -436,6 +436,13 @@ func (wd *WDADriver) AppLaunch(bundleId string) (err error) {
|
|||||||
// 超时两分钟
|
// 超时两分钟
|
||||||
_, err = wd.Session.POST(data, "/wings/apps/launch", option.WithTimeout(120))
|
_, err = wd.Session.POST(data, "/wings/apps/launch", option.WithTimeout(120))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// Check for untrusted certificate error
|
||||||
|
errMsg := err.Error()
|
||||||
|
if strings.Contains(errMsg, "has not been explicitly trusted by the user") ||
|
||||||
|
strings.Contains(errMsg, "invalid code signature") ||
|
||||||
|
strings.Contains(errMsg, "inadequate entitlements") {
|
||||||
|
return errors.Wrap(code.DeviceUntrustedCertError, "App certificate not trusted: "+bundleId)
|
||||||
|
}
|
||||||
return errors.Wrap(err, "wda app launch failed")
|
return errors.Wrap(err, "wda app launch failed")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@@ -443,10 +450,17 @@ func (wd *WDADriver) AppLaunch(bundleId string) (err error) {
|
|||||||
|
|
||||||
func (wd *WDADriver) AppLaunchUnattached(bundleId string) (err error) {
|
func (wd *WDADriver) AppLaunchUnattached(bundleId string) (err error) {
|
||||||
log.Info().Str("bundleId", bundleId).Msg("WDADriver.AppLaunchUnattached")
|
log.Info().Str("bundleId", bundleId).Msg("WDADriver.AppLaunchUnattached")
|
||||||
// [[FBRoute POST:@"/wda/apps/launchUnattached"].withoutSession respondWithTarget:self action:@selector(handleLaunchUnattachedApp:)]
|
// [[FBRoute POST:@"/wda/apps/launchUnattached"].withoutSession respondWithTarget:self action:@selector(handleLaunchUnattachedApp:)]]
|
||||||
data := map[string]interface{}{"bundleId": bundleId}
|
data := map[string]interface{}{"bundleId": bundleId}
|
||||||
_, err = wd.Session.POST(data, "/wda/apps/launchUnattached")
|
_, err = wd.Session.POST(data, "/wda/apps/launchUnattached")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// Check for untrusted certificate error
|
||||||
|
errMsg := err.Error()
|
||||||
|
if strings.Contains(errMsg, "has not been explicitly trusted by the user") ||
|
||||||
|
strings.Contains(errMsg, "invalid code signature") ||
|
||||||
|
strings.Contains(errMsg, "inadequate entitlements") {
|
||||||
|
return errors.Wrap(code.DeviceUntrustedCertError, "App certificate not trusted: "+bundleId)
|
||||||
|
}
|
||||||
return errors.Wrap(err, "wda app launchUnattached failed")
|
return errors.Wrap(err, "wda app launchUnattached failed")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user