package code import ( "github.com/pkg/errors" ) // general: [0, 2) const ( Success = 0 GeneralFail = 1 ) // environment: [2, 10) var ( ConfigureError = errors.New("configure error") // 3 UnauthorizedError = errors.New("unauthorized error") // 4 NetworkError = errors.New("network error") // 5 InvalidPython3Venv = errors.New("prepare python3 venv failed") // 9 ) // loader: [10, 20) var ( LoadFileError = errors.New("load file error") // 10 LoadJSONError = errors.New("load json error") // 11 LoadYAMLError = errors.New("load yaml error") // 12 LoadEnvError = errors.New("load .env error") // 13 LoadCSVError = errors.New("load csv error") // 14 InvalidCaseError = errors.New("invalid case error") // 15 UnsupportedFileExtension = errors.New("unsupported file extension") // 16 ReferencedFileNotFound = errors.New("referenced file not found") // 17 InvalidPluginFile = errors.New("invalid plugin file") // 18 ) // parser: [20, 30) var ( ParseError = errors.New("parse error") // 20 VariableNotFound = errors.New("variable not found") // 21 ParseFunctionError = errors.New("parse function failed") // 22 CallFunctionError = errors.New("call function failed") // 23 ParseVariablesError = errors.New("parse variables failed") // 24 FFmpegError = errors.New("ffmpeg error") // 25 FFprobeError = errors.New("ffprobe error") // 26 ) // runner: [30, 40) var ( StartRunnerFailed = errors.New("start runner failed") // 30 InitPluginFailed = errors.New("init plugin failed") // 31 BuildGoPluginFailed = errors.New("build go plugin failed") // 32 BuildPyPluginFailed = errors.New("build py plugin failed") // 33 MaxRetryError = errors.New("max retry error") // 37 InterruptError = errors.New("interrupt error") // 38 TimeoutError = errors.New("timeout error") // 39 ) // summary: [40, 50) var ( GenSummaryFailed = errors.New("generate summary failed") // 40 CollectValidResultFailed = errors.New("no valid result") // 44 DownloadFailed = errors.New("download failed") // 48 UploadFailed = errors.New("upload failed") // 49 ) // device related: [50, 70) var ( DeviceConnectionError = errors.New("device general connection error") // 50 DeviceHTTPDriverError = errors.New("device HTTP driver error") // 51 DeviceUSBDriverError = errors.New("device USB driver error") // 52 DeviceGetInfoError = errors.New("device get info error") // 60 DeviceConfigureError = errors.New("device configure error") // 61 DeviceShellExecError = errors.New("device shell exec error") // 62 DeviceOfflineError = errors.New("device offline") // 63 DeviceScreenShotError = errors.New("device screenshot error") // 65 DeviceCaptureLogError = errors.New("device capture log error") // 66 DeviceUIResponseSlow = errors.New("device UI response slow") // 67 ) // UI automation related: [70, 80) var ( MobileUIDriverAppNotInstalled = errors.New("mobile UI driver app not installed") // 68 MobileUIDriverAppCrashed = errors.New("mobile UI driver app crashed") // 69 MobileUIDriverError = errors.New("mobile UI driver error") // 70 MobileUILaunchAppError = errors.New("mobile UI launch app error") // 71 MobileUITapError = errors.New("mobile UI tap error") // 72 MobileUISwipeError = errors.New("mobile UI swipe error") // 73 MobileUIInputError = errors.New("mobile UI input error") // 74 MobileUIValidationError = errors.New("mobile UI validation error") // 75 MobileUIAssertForegroundAppError = errors.New("mobile UI assert foreground app error") // 76 MobileUIAssertForegroundActivityError = errors.New("mobile UI assert foreground activity error") // 77 MobileUIPopupError = errors.New("mobile UI popup error") // 78 LoopActionNotFoundError = errors.New("loop action not found error") // 79 ) // AI related: [80, 90) var ( CVEnvMissedError = errors.New("CV env missed error") // 80 CVRequestError = errors.New("CV prepare request error") // 81 CVServiceConnectionError = errors.New("CV service connect error") // 82 CVResponseError = errors.New("CV parse response error") // 83 CVResultNotFoundError = errors.New("CV result not found") // 84 StateUnknowError = errors.New("detect state failed") // 85 ) // trackings related: [90, 100) var ( TrackingGetError = errors.New("get trackings failed") // 90 TrackingFomatError = errors.New("tracking format error") // 91 ) // risk control related: [100, 110) var ( RiskControlLogout = errors.New("risk control logout") // 100 RiskControlSlideVerification = errors.New("risk control slide verification") // 101 RiskControlAccountActivation = errors.New("risk control account activation") // 102 ) var errorsMap = map[error]int{ // environment ConfigureError: 3, UnauthorizedError: 4, NetworkError: 5, InvalidPython3Venv: 9, // loader LoadFileError: 10, LoadJSONError: 11, LoadYAMLError: 12, LoadEnvError: 13, LoadCSVError: 14, InvalidCaseError: 15, UnsupportedFileExtension: 16, ReferencedFileNotFound: 17, InvalidPluginFile: 18, // parser ParseError: 20, VariableNotFound: 21, ParseFunctionError: 22, CallFunctionError: 23, ParseVariablesError: 24, FFmpegError: 25, FFprobeError: 26, // runner StartRunnerFailed: 30, InitPluginFailed: 31, BuildGoPluginFailed: 32, BuildPyPluginFailed: 33, MaxRetryError: 37, InterruptError: 38, TimeoutError: 39, // summary GenSummaryFailed: 40, CollectValidResultFailed: 44, DownloadFailed: 48, UploadFailed: 49, // device related DeviceConnectionError: 50, DeviceHTTPDriverError: 51, DeviceUSBDriverError: 52, DeviceGetInfoError: 60, DeviceConfigureError: 61, DeviceShellExecError: 62, DeviceOfflineError: 63, DeviceScreenShotError: 65, DeviceCaptureLogError: 66, DeviceUIResponseSlow: 67, // UI automation related MobileUIDriverAppNotInstalled: 68, MobileUIDriverAppCrashed: 69, MobileUIDriverError: 70, MobileUILaunchAppError: 71, MobileUITapError: 72, MobileUISwipeError: 73, MobileUIInputError: 74, MobileUIValidationError: 75, MobileUIAssertForegroundAppError: 76, MobileUIAssertForegroundActivityError: 77, MobileUIPopupError: 78, LoopActionNotFoundError: 79, // AI related CVEnvMissedError: 80, CVRequestError: 81, CVServiceConnectionError: 82, CVResponseError: 83, CVResultNotFoundError: 84, StateUnknowError: 85, // trackings related TrackingGetError: 90, TrackingFomatError: 91, // risk control related RiskControlLogout: 100, RiskControlSlideVerification: 101, RiskControlAccountActivation: 102, } func IsErrorPredefined(err error) bool { _, ok := errorsMap[errors.Cause(err)] return ok } func GetErrorCode(err error) (errCode int) { if err == nil { return Success } e := errors.Cause(err) if code, ok := errorsMap[e]; ok { errCode = code } else { errCode = GeneralFail } return }