mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-09 01:17:30 +08:00
fix iOS conn close
This commit is contained in:
@@ -147,7 +147,7 @@ func (wd *Driver) uia2HttpDELETE(pathElem ...string) (rawResp rawResponse, err e
|
|||||||
return wd.uia2HttpRequest(http.MethodDelete, wd.concatURL(nil, pathElem...), nil)
|
return wd.uia2HttpRequest(http.MethodDelete, wd.concatURL(nil, pathElem...), nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (wd *Driver) resetWDASession() (string, error) {
|
func (wd *Driver) resetWDASession() error {
|
||||||
capabilities := NewCapabilities()
|
capabilities := NewCapabilities()
|
||||||
capabilities.WithDefaultAlertAction(AlertActionAccept)
|
capabilities.WithDefaultAlertAction(AlertActionAccept)
|
||||||
|
|
||||||
@@ -158,13 +158,14 @@ func (wd *Driver) resetWDASession() (string, error) {
|
|||||||
var rawResp rawResponse
|
var rawResp rawResponse
|
||||||
var err error
|
var err error
|
||||||
if rawResp, err = wd.httpPOST(data, "/session"); err != nil {
|
if rawResp, err = wd.httpPOST(data, "/session"); err != nil {
|
||||||
return "", err
|
return err
|
||||||
}
|
}
|
||||||
var sessionInfo SessionInfo
|
var sessionInfo SessionInfo
|
||||||
if sessionInfo, err = rawResp.valueConvertToSessionInfo(); err != nil {
|
if sessionInfo, err = rawResp.valueConvertToSessionInfo(); err != nil {
|
||||||
return "", err
|
return err
|
||||||
}
|
}
|
||||||
return sessionInfo.SessionId, nil
|
wd.sessionId = sessionInfo.SessionId
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (wd *Driver) wdaHttpRequest(method string, rawURL string, rawBody []byte, disableRetry ...bool) (rawResp rawResponse, err error) {
|
func (wd *Driver) wdaHttpRequest(method string, rawURL string, rawBody []byte, disableRetry ...bool) (rawResp rawResponse, err error) {
|
||||||
@@ -174,7 +175,9 @@ func (wd *Driver) wdaHttpRequest(method string, rawURL string, rawBody []byte, d
|
|||||||
if err == nil || disableRetryBool {
|
if err == nil || disableRetryBool {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if _, err = wd.resetWDASession(); err != nil {
|
// wait for WDA to resume automatically
|
||||||
|
time.Sleep(20 * time.Second)
|
||||||
|
if err = wd.resetWDASession(); err != nil {
|
||||||
log.Err(err).Msgf("failed to reset wda session, retry count: %v", retryCount)
|
log.Err(err).Msgf("failed to reset wda session, retry count: %v", retryCount)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -474,7 +474,7 @@ func (dev *IOSDevice) forward(localPort, remotePort int) error {
|
|||||||
rInnerConn, err := device.NewConnect(remotePort)
|
rInnerConn, err := device.NewConnect(remotePort)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Err(err).Msg("connect to ios device failed")
|
log.Error().Err(err).Msg("connect to ios device failed")
|
||||||
os.Exit(code.GetErrorCode(code.IOSDeviceConnectionError))
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
rConn := rInnerConn.RawConn()
|
rConn := rInnerConn.RawConn()
|
||||||
@@ -484,11 +484,15 @@ func (dev *IOSDevice) forward(localPort, remotePort int) error {
|
|||||||
go func(lConn, rConn net.Conn) {
|
go func(lConn, rConn net.Conn) {
|
||||||
if _, err := io.Copy(lConn, rConn); err != nil {
|
if _, err := io.Copy(lConn, rConn); err != nil {
|
||||||
log.Error().Err(err).Msg("copy local -> remote")
|
log.Error().Err(err).Msg("copy local -> remote")
|
||||||
|
rConn.Close()
|
||||||
|
accept.Close()
|
||||||
}
|
}
|
||||||
}(lConn, rConn)
|
}(lConn, rConn)
|
||||||
go func(lConn, rConn net.Conn) {
|
go func(lConn, rConn net.Conn) {
|
||||||
if _, err := io.Copy(rConn, lConn); err != nil {
|
if _, err := io.Copy(rConn, lConn); err != nil {
|
||||||
log.Error().Err(err).Msg("copy local <- remote")
|
log.Error().Err(err).Msg("copy local <- remote")
|
||||||
|
rConn.Close()
|
||||||
|
accept.Close()
|
||||||
}
|
}
|
||||||
}(lConn, rConn)
|
}(lConn, rConn)
|
||||||
}(accept)
|
}(accept)
|
||||||
|
|||||||
Reference in New Issue
Block a user