change: check WDA server status when request WDA failed

This commit is contained in:
lilong.129
2024-12-12 12:16:50 +08:00
parent 27da246527
commit a5ab516a92
3 changed files with 17 additions and 19 deletions

View File

@@ -1 +1 @@
v5.0.0+2412121206
v5.0.0+2412121405

View File

@@ -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 {

View File

@@ -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 {