From a5ab516a9273268b4ea63da7b81a1a13e0f19906 Mon Sep 17 00:00:00 2001 From: "lilong.129" Date: Thu, 12 Dec 2024 12:16:50 +0800 Subject: [PATCH] change: check WDA server status when request WDA failed --- hrp/internal/version/VERSION | 2 +- hrp/pkg/uixt/ios_device.go | 18 +++--------------- hrp/pkg/uixt/ios_wda_driver.go | 16 +++++++++++++--- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/hrp/internal/version/VERSION b/hrp/internal/version/VERSION index b9d34488..c24c3103 100644 --- a/hrp/internal/version/VERSION +++ b/hrp/internal/version/VERSION @@ -1 +1 @@ -v5.0.0+2412121206 +v5.0.0+2412121405 diff --git a/hrp/pkg/uixt/ios_device.go b/hrp/pkg/uixt/ios_device.go index d7cc57d8..cd3295be 100644 --- a/hrp/pkg/uixt/ios_device.go +++ b/hrp/pkg/uixt/ios_device.go @@ -636,18 +636,18 @@ func (dev *IOSDevice) MountImage(imagePath string) (err error) { func (dev *IOSDevice) AutoMountImage(basedir string) (err error) { imagePath, err := imagemounter.DownloadImageFor(dev.d, basedir) if err != nil { - log.Error().Err(err).Msg("failed to auto mount image") + log.Error().Err(err).Msg("failed to download ios developer image") return } conn, err := imagemounter.NewImageMounter(dev.d) if err != nil { - log.Error().Err(err).Msg("failed to auto mount image") + log.Error().Err(err).Msg("failed to init image mounter") return } defer conn.Close() err = conn.MountImage(imagePath) if err != nil { - log.Error().Err(err).Msg("failed to auto mount image") + log.Error().Err(err).Msg("failed to mount ios developer image") return } return nil @@ -774,18 +774,6 @@ func (dev *IOSDevice) NewHTTPDriver(capabilities Capabilities) (driver IWebDrive return nil, errors.Wrap(code.DeviceHTTPDriverError, err.Error()) } - // check WDA server status - status, err := wd.Status() - if err != nil { - return nil, errors.Wrapf(code.DeviceHTTPDriverError, - "get WDA server status failed: %s", err.Error()) - } - log.Info().Interface("status", status).Msg("get WDA server status") - if status.State != "success" { - return nil, errors.Wrap(code.DeviceHTTPDriverError, - "WDA server status is not success") - } - // create new session var sessionInfo SessionInfo if sessionInfo, err = wd.NewSession(capabilities); err != nil { diff --git a/hrp/pkg/uixt/ios_wda_driver.go b/hrp/pkg/uixt/ios_wda_driver.go index abcc4e28..30f56f78 100644 --- a/hrp/pkg/uixt/ios_wda_driver.go +++ b/hrp/pkg/uixt/ios_wda_driver.go @@ -55,12 +55,22 @@ func (wd *wdaDriver) httpRequest(method string, rawURL string, rawBody []byte) ( if err == nil { return } - // TODO: polling WDA to check if resumed automatically + + // check WDA server status + status, err := wd.Status() + if err != nil { + log.Err(err).Msg("get WDA server status failed") + } else if status.State != "success" { + log.Warn().Interface("status", status).Msg("WDA server status is not success") + } else { + log.Info().Interface("status", status).Msg("get WDA server status") + } + retryInterval = retryInterval * 2 time.Sleep(retryInterval) oldSessionID := wd.session.ID if err2 := wd.resetSession(); err2 != nil { - log.Err(err2).Msgf("failed to reset wda driver, retry count: %v", retryCount) + log.Err(err2).Msgf("failed to reset wda driver session, retry count: %v", retryCount) continue } log.Debug().Str("new session", wd.session.ID).Str("old session", oldSessionID). @@ -104,7 +114,7 @@ func (wd *wdaDriver) NewSession(capabilities Capabilities) (sessionInfo SessionI } var rawResp rawResponse - if rawResp, err = wd.Driver.httpPOST(data, "/session"); err != nil { + if rawResp, err = wd.httpPOST(data, "/session"); err != nil { return SessionInfo{}, err } if sessionInfo, err = rawResp.valueConvertToSessionInfo(); err != nil {