From b0e7a6609f7aa63da4a7416a136fd54ad3c63a57 Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Tue, 30 May 2023 21:31:51 +0800 Subject: [PATCH] change: check android device offline --- hrp/pkg/gadb/device.go | 3 +++ hrp/pkg/gadb/transport.go | 19 +++++++++++++++---- hrp/pkg/uixt/video_crawler.go | 1 + 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/hrp/pkg/gadb/device.go b/hrp/pkg/gadb/device.go index 8bbf7e92..2245c5af 100644 --- a/hrp/pkg/gadb/device.go +++ b/hrp/pkg/gadb/device.go @@ -246,6 +246,9 @@ func (d *Device) ReverseForwardKillAll() error { func (d *Device) RunShellCommand(cmd string, args ...string) (string, error) { raw, err := d.RunShellCommandWithBytes(cmd, args...) if err != nil { + if errors.Is(err, code.AndroidDeviceConnectionError) { + return "", err + } return "", errors.Wrap(code.AndroidShellExecError, err.Error()) } return string(raw), nil diff --git a/hrp/pkg/gadb/transport.go b/hrp/pkg/gadb/transport.go index c450d053..b59ed42e 100644 --- a/hrp/pkg/gadb/transport.go +++ b/hrp/pkg/gadb/transport.go @@ -1,15 +1,18 @@ package gadb import ( - "errors" "fmt" "io" "io/ioutil" "net" + "regexp" "strconv" "time" + "github.com/pkg/errors" "github.com/rs/zerolog/log" + + "github.com/httprunner/httprunner/v4/hrp/internal/code" ) var ErrConnBroken = errors.New("socket connection broken") @@ -45,6 +48,8 @@ func (t transport) Conn() net.Conn { return t.sock } +var regexDeviceOffline = regexp.MustCompile("device .* not found") + func (t transport) VerifyResponse() (err error) { var status string if status, err = t.ReadStringN(4); err != nil { @@ -58,9 +63,15 @@ func (t transport) VerifyResponse() (err error) { if sError, err = t.UnpackString(); err != nil { return err } - err = fmt.Errorf("command failed: %s", sError) - log.Error().Str("status", status).Str("err", sError).Msg("verify adb response failed") - return + + if regexDeviceOffline.MatchString(sError) { + // device offline + return errors.Wrap(code.AndroidDeviceConnectionError, sError) + } + + log.Warn().Str("status", status).Str("err", sError). + Msg("verify adb response failed") + return errors.New(sError) } func (t transport) ReadStringAll() (s string, err error) { diff --git a/hrp/pkg/uixt/video_crawler.go b/hrp/pkg/uixt/video_crawler.go index 440e5ded..40ee16e6 100644 --- a/hrp/pkg/uixt/video_crawler.go +++ b/hrp/pkg/uixt/video_crawler.go @@ -462,6 +462,7 @@ var popups = [][]string{ {".*定位.*", ".*允许.*"}, {".*拍照.*", "仅.*允许"}, {".*录音.*", "仅.*允许"}, + {"管理使用时间", ".*忽略.*"}, } func (dExt *DriverExt) autoPopupHandler(ocrResult *OcrResult) error {