From 586981b072dc2a5b19176d99b8f519e135d566e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=99=E6=B3=93=E9=93=AE?= Date: Thu, 22 Aug 2024 21:48:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hrp/pkg/gadb/device.go | 2 +- hrp/pkg/server/exception.go | 3 - hrp/pkg/server/server.go | 8 +-- hrp/pkg/uixt/android_adb_driver.go | 2 +- hrp/pkg/uixt/android_device.go | 32 +++++----- hrp/pkg/uixt/android_shoots_driver_test.go | 56 ------------------ ...hoots_driver.go => android_stub_driver.go} | 44 +++++++------- hrp/pkg/uixt/android_stub_driver_test.go | 56 ++++++++++++++++++ hrp/pkg/uixt/{eval_tool => evalite} | Bin 9 files changed, 100 insertions(+), 103 deletions(-) delete mode 100644 hrp/pkg/uixt/android_shoots_driver_test.go rename hrp/pkg/uixt/{android_shoots_driver.go => android_stub_driver.go} (74%) create mode 100644 hrp/pkg/uixt/android_stub_driver_test.go rename hrp/pkg/uixt/{eval_tool => evalite} (100%) diff --git a/hrp/pkg/gadb/device.go b/hrp/pkg/gadb/device.go index 882f42bc..aba74103 100644 --- a/hrp/pkg/gadb/device.go +++ b/hrp/pkg/gadb/device.go @@ -292,7 +292,7 @@ func (d *Device) ReverseForwardKill(remoteInterface interface{}) error { return err } -func (d *Device) RunShootsCommand(command []byte, processName string) (res string, err error) { +func (d *Device) RunStubCommand(command []byte, processName string) (res string, err error) { var tp transport if tp, err = d.createDeviceTransport(); err != nil { return "", err diff --git a/hrp/pkg/server/exception.go b/hrp/pkg/server/exception.go index 26cfadda..592a9066 100644 --- a/hrp/pkg/server/exception.go +++ b/hrp/pkg/server/exception.go @@ -7,9 +7,6 @@ const ( InvalidParamErrorCode = 100002 InvalidParamErrorMsg = "Invalid %s Param" - - CodeNotFound = 1004 - MsgNotFound = "Resource not found" ) const ( diff --git a/hrp/pkg/server/server.go b/hrp/pkg/server/server.go index 63a4da48..7f5fd3a8 100644 --- a/hrp/pkg/server/server.go +++ b/hrp/pkg/server/server.go @@ -28,10 +28,10 @@ func NewServer(port int) error { router.POST("/api/v1/:platform/:serial/app/launch", parseDeviceInfo(), launchAppHandler) router.POST("/api/v1/:platform/:serial/app/terminal", parseDeviceInfo(), terminalAppHandler) router.GET("/api/v1/:platform/:serial/screenshot", parseDeviceInfo(), screenshotHandler) - router.GET("/api/v1/:platform/:serial/shoots/source", parseDeviceInfo(), sourceHandler) + router.GET("/api/v1/:platform/:serial/stub/source", parseDeviceInfo(), sourceHandler) router.GET("/api/v1/:platform/:serial/adb/source", parseDeviceInfo(), adbSourceHandler) - router.POST("/api/v1/:platform/:serial/shoots/login", parseDeviceInfo(), loginHandler) - router.POST("/api/v1/:platform/:serial/shoots/logout", parseDeviceInfo(), logoutHandler) + router.POST("/api/v1/:platform/:serial/stub/login", parseDeviceInfo(), loginHandler) + router.POST("/api/v1/:platform/:serial/stub/logout", parseDeviceInfo(), logoutHandler) err := router.Run(fmt.Sprintf("127.0.0.1:%d", port)) if err != nil { @@ -523,7 +523,7 @@ func parseDeviceInfo() gin.HandlerFunc { c.Abort() return } - device, err := uixt.NewAndroidDevice(uixt.WithSerialNumber(serial), uixt.WithShoots(true)) + device, err := uixt.NewAndroidDevice(uixt.WithSerialNumber(serial), uixt.WithStub(true)) if err != nil { log.Error().Err(err).Str("platform", platform).Str("serial", serial).Msg(fmt.Sprintf("[%s]: Device Not Found", c.HandlerName())) c.JSON(http.StatusBadRequest, HttpResponse{ diff --git a/hrp/pkg/uixt/android_adb_driver.go b/hrp/pkg/uixt/android_adb_driver.go index 2adf325c..cec901b5 100644 --- a/hrp/pkg/uixt/android_adb_driver.go +++ b/hrp/pkg/uixt/android_adb_driver.go @@ -719,7 +719,7 @@ func (ad *adbDriver) GetDriverResults() []*DriverResult { } func (ad *adbDriver) GetForegroundApp() (app AppInfo, err error) { - packageInfo, err := ad.adbClient.RunShellCommand("CLASSPATH=/data/local/tmp/eval_tool", "app_process", "/", "com.bytedance.iesqa.eval_process.PackageService") + packageInfo, err := ad.adbClient.RunShellCommand("CLASSPATH=/data/local/tmp/evalite", "app_process", "/", "com.bytedance.iesqa.eval_process.PackageService") if err != nil { return app, err } diff --git a/hrp/pkg/uixt/android_device.go b/hrp/pkg/uixt/android_device.go index 98582c81..6ea92152 100644 --- a/hrp/pkg/uixt/android_device.go +++ b/hrp/pkg/uixt/android_device.go @@ -38,8 +38,8 @@ var ( InstallViaInstallerCommand = "am start -S -n sogou.mobile.explorer/.PackageInstallerActivity -d" ) -//go:embed eval_tool -var evalTool embed.FS +//go:embed evalite +var evalite embed.FS const forwardToPrefix = "forward-to-" @@ -57,9 +57,9 @@ func WithUIA2(uia2On bool) AndroidDeviceOption { } } -func WithShoots(shootsOn bool) AndroidDeviceOption { +func WithStub(stubOn bool) AndroidDeviceOption { return func(device *AndroidDevice) { - device.SHOOTS = shootsOn + device.STUB = stubOn } } @@ -131,11 +131,11 @@ func NewAndroidDevice(options ...AndroidDeviceOption) (device *AndroidDevice, er device.d = dev device.logcat = NewAdbLogcat(device.SerialNumber) - evalToolRaw, err := evalTool.ReadFile("eval_tool") + evalToolRaw, err := evalite.ReadFile("evalite") if err != nil { return nil, errors.Wrap(code.LoadFileError, err.Error()) } - err = dev.Push(bytes.NewReader(evalToolRaw), "/data/local/tmp/eval_tool", time.Now()) + err = dev.Push(bytes.NewReader(evalToolRaw), "/data/local/tmp/evalite", time.Now()) if err != nil { return nil, errors.Wrap(code.AndroidShellExecError, err.Error()) } @@ -181,7 +181,7 @@ type AndroidDevice struct { logcat *AdbLogcat SerialNumber string `json:"serial,omitempty" yaml:"serial,omitempty"` UIA2 bool `json:"uia2,omitempty" yaml:"uia2,omitempty"` // use uiautomator2 - SHOOTS bool `json:"shoots,omitempty" yaml:"uia2,omitempty"` // use uiautomator2 + STUB bool `json:"stub,omitempty" yaml:"stub,omitempty"` // use uiautomator2 UIA2IP string `json:"uia2_ip,omitempty" yaml:"uia2_ip,omitempty"` // uiautomator2 server ip UIA2Port int `json:"uia2_port,omitempty" yaml:"uia2_port,omitempty"` // uiautomator2 server port LogOn bool `json:"log_on,omitempty" yaml:"log_on,omitempty"` @@ -212,8 +212,8 @@ func (dev *AndroidDevice) NewDriver(options ...DriverOption) (driverExt *DriverE var driver WebDriver if dev.UIA2 || dev.LogOn { driver, err = dev.NewUSBDriver(driverOptions.capabilities) - } else if dev.SHOOTS { - driver, err = dev.NewShootsDriver(driverOptions.capabilities) + } else if dev.STUB { + driver, err = dev.NewStubDriver(driverOptions.capabilities) } else { driver, err = dev.NewAdbDriver() } @@ -258,12 +258,12 @@ func (dev *AndroidDevice) NewUSBDriver(capabilities Capabilities) (driver WebDri return uiaDriver, nil } -func (dev *AndroidDevice) NewShootsDriver(capabilities Capabilities) (driver *ShootsAndroidDriver, err error) { - socketLocalPort, err := dev.d.Forward(ShootsSocketName) +func (dev *AndroidDevice) NewStubDriver(capabilities Capabilities) (driver *stubAndroidDriver, err error) { + socketLocalPort, err := dev.d.Forward(StubSocketName) if err != nil { return nil, errors.Wrap(code.AndroidDeviceConnectionError, fmt.Sprintf("forward port %d->%s failed: %v", - socketLocalPort, ShootsSocketName, err)) + socketLocalPort, StubSocketName, err)) } serverLocalPort, err := dev.d.Forward(DouyinServerPort) @@ -276,16 +276,16 @@ func (dev *AndroidDevice) NewShootsDriver(capabilities Capabilities) (driver *Sh rawURL := fmt.Sprintf("http://%s%d:%d", forwardToPrefix, serverLocalPort, DouyinServerPort) - shootsDriver, err := newShootsAndroidDriver(fmt.Sprintf("127.0.0.1:%d", socketLocalPort), rawURL) + stubDriver, err := newStubAndroidDriver(fmt.Sprintf("127.0.0.1:%d", socketLocalPort), rawURL) if err != nil { _ = dev.d.ForwardKill(socketLocalPort) _ = dev.d.ForwardKill(serverLocalPort) return nil, errors.Wrap(code.AndroidDeviceConnectionError, err.Error()) } - shootsDriver.adbClient = dev.d - shootsDriver.logcat = dev.logcat + stubDriver.adbClient = dev.d + stubDriver.logcat = dev.logcat - return shootsDriver, nil + return stubDriver, nil } // NewHTTPDriver creates new remote HTTP client, this will also start a new session. diff --git a/hrp/pkg/uixt/android_shoots_driver_test.go b/hrp/pkg/uixt/android_shoots_driver_test.go deleted file mode 100644 index 99d1db7b..00000000 --- a/hrp/pkg/uixt/android_shoots_driver_test.go +++ /dev/null @@ -1,56 +0,0 @@ -package uixt - -import "testing" - -var shootsDriver *ShootsAndroidDriver - -func setupShootsDriver(t *testing.T) { - device, err := NewAndroidDevice() - checkErr(t, err) - device.SHOOTS = true - shootsDriver, err = device.NewShootsDriver(Capabilities{}) - checkErr(t, err) -} - -func TestHello(t *testing.T) { - setupShootsDriver(t) - status, err := shootsDriver.Status() - if err != nil { - t.Fatal(err) - } - t.Log(status) -} - -func TestSource(t *testing.T) { - setupShootsDriver(t) - source, err := shootsDriver.Source() - if err != nil { - t.Fatal(err) - } - t.Log(source) -} - -func TestIsLogin(t *testing.T) { - setupShootsDriver(t) - res, err := shootsDriver.isLogin("com.ss.android.ugc.aweme") - if err != nil { - t.Fatal(err) - } - t.Log(res) -} - -func TestLogin(t *testing.T) { - setupShootsDriver(t) - err := shootsDriver.LoginNoneUI("com.ss.android.ugc.aweme", "12342316231", "8517") - if err != nil { - t.Fatal(err) - } -} - -func TestLogout(t *testing.T) { - setupShootsDriver(t) - err := shootsDriver.LogoutNoneUI("com.ss.android.ugc.aweme") - if err != nil { - t.Fatal(err) - } -} diff --git a/hrp/pkg/uixt/android_shoots_driver.go b/hrp/pkg/uixt/android_stub_driver.go similarity index 74% rename from hrp/pkg/uixt/android_shoots_driver.go rename to hrp/pkg/uixt/android_stub_driver.go index ea55d324..2f92a436 100644 --- a/hrp/pkg/uixt/android_shoots_driver.go +++ b/hrp/pkg/uixt/android_stub_driver.go @@ -15,18 +15,18 @@ import ( "github.com/httprunner/httprunner/v4/hrp/internal/json" ) -type ShootsAndroidDriver struct { +type stubAndroidDriver struct { socket net.Conn seq int timeout time.Duration adbDriver } -const ShootsSocketName = "com.bytest.device" +const StubSocketName = "com.bytest.device" -// newShootsAndroidDriver -// 创建shoots Driver address为forward后的端口格式127.0.0.1:${port} -func newShootsAndroidDriver(address string, urlPrefix string, readTimeout ...time.Duration) (*ShootsAndroidDriver, error) { +// newStubAndroidDriver +// 创建stub Driver address为forward后的端口格式127.0.0.1:${port} +func newStubAndroidDriver(address string, urlPrefix string, readTimeout ...time.Duration) (*stubAndroidDriver, error) { timeout := 10 * time.Second if len(readTimeout) > 0 { timeout = readTimeout[0] @@ -38,7 +38,7 @@ func newShootsAndroidDriver(address string, urlPrefix string, readTimeout ...tim return nil, err } - driver := &ShootsAndroidDriver{ + driver := &stubAndroidDriver{ socket: conn, timeout: timeout, } @@ -50,7 +50,7 @@ func newShootsAndroidDriver(address string, urlPrefix string, readTimeout ...tim return driver, nil } -func (sad *ShootsAndroidDriver) httpGET(pathElem ...string) (rawResp rawResponse, err error) { +func (sad *stubAndroidDriver) httpGET(pathElem ...string) (rawResp rawResponse, err error) { var localPort int { tmpURL, _ := url.Parse(sad.urlPrefix.String()) @@ -68,7 +68,7 @@ func (sad *ShootsAndroidDriver) httpGET(pathElem ...string) (rawResp rawResponse return sad.httpRequest(http.MethodGet, sad.concatURL(nil, pathElem...), nil) } -func (sad *ShootsAndroidDriver) httpPOST(data interface{}, pathElem ...string) (rawResp rawResponse, err error) { +func (sad *stubAndroidDriver) httpPOST(data interface{}, pathElem ...string) (rawResp rawResponse, err error) { var localPort int { tmpURL, _ := url.Parse(sad.urlPrefix.String()) @@ -93,11 +93,11 @@ func (sad *ShootsAndroidDriver) httpPOST(data interface{}, pathElem ...string) ( return sad.httpRequest(http.MethodPost, sad.concatURL(nil, pathElem...), bsJSON) } -func (sad *ShootsAndroidDriver) NewSession(capabilities Capabilities) (SessionInfo, error) { +func (sad *stubAndroidDriver) NewSession(capabilities Capabilities) (SessionInfo, error) { return SessionInfo{}, errDriverNotImplemented } -func (sad *ShootsAndroidDriver) sendCommand(packageName string, cmdType string, params map[string]interface{}, readTimeout ...time.Duration) (interface{}, error) { +func (sad *stubAndroidDriver) sendCommand(packageName string, cmdType string, params map[string]interface{}, readTimeout ...time.Duration) (interface{}, error) { sad.seq++ packet := map[string]interface{}{ "Seq": sad.seq, @@ -115,7 +115,7 @@ func (sad *ShootsAndroidDriver) sendCommand(packageName string, cmdType string, return nil, err } - res, err := sad.adbClient.RunShootsCommand(append(data, '\n'), packageName) + res, err := sad.adbClient.RunStubCommand(append(data, '\n'), packageName) if err != nil { return nil, err } @@ -124,24 +124,24 @@ func (sad *ShootsAndroidDriver) sendCommand(packageName string, cmdType string, return nil, err } if resultMap["Error"] != nil { - return nil, fmt.Errorf("failed to call shoots command: %s", resultMap["Error"].(string)) + return nil, fmt.Errorf("failed to call stub command: %s", resultMap["Error"].(string)) } return resultMap["Result"], nil } -func (sad *ShootsAndroidDriver) DeleteSession() error { +func (sad *stubAndroidDriver) DeleteSession() error { return sad.close() } -func (sad *ShootsAndroidDriver) close() error { +func (sad *stubAndroidDriver) close() error { if sad.socket != nil { return sad.socket.Close() } return nil } -func (sad *ShootsAndroidDriver) Status() (DeviceStatus, error) { +func (sad *stubAndroidDriver) Status() (DeviceStatus, error) { app, err := sad.GetForegroundApp() if err != nil { return DeviceStatus{}, err @@ -150,11 +150,11 @@ func (sad *ShootsAndroidDriver) Status() (DeviceStatus, error) { if err != nil { return DeviceStatus{}, err } - log.Info().Msg(fmt.Sprintf("pint shoots result :%v", res)) + log.Info().Msg(fmt.Sprintf("ping stub result :%v", res)) return DeviceStatus{}, nil } -func (sad *ShootsAndroidDriver) Source(srcOpt ...SourceOption) (source string, err error) { +func (sad *stubAndroidDriver) Source(srcOpt ...SourceOption) (source string, err error) { app, err := sad.GetForegroundApp() if err != nil { return "", err @@ -172,7 +172,7 @@ func (sad *ShootsAndroidDriver) Source(srcOpt ...SourceOption) (source string, e return res.(string), nil } -func (sad *ShootsAndroidDriver) LoginNoneUIBak(packageName, phoneNumber, captcha string) error { +func (sad *stubAndroidDriver) LoginNoneUIBak(packageName, phoneNumber, captcha string) error { _, err := sad.adbClient.RunShellCommand("am", "broadcast", "-a", fmt.Sprintf("%s.util.crony.action_login", packageName), "-e", "phone", phoneNumber, "-e", "code", captcha) time.Sleep(10 * time.Second) login, err := sad.isLogin(packageName) @@ -183,7 +183,7 @@ func (sad *ShootsAndroidDriver) LoginNoneUIBak(packageName, phoneNumber, captcha return err } -func (sad *ShootsAndroidDriver) LoginNoneUI(packageName, phoneNumber, captcha string) error { +func (sad *stubAndroidDriver) LoginNoneUI(packageName, phoneNumber, captcha string) error { params := map[string]interface{}{ "phone": phoneNumber, "code": captcha, @@ -213,7 +213,7 @@ func (sad *ShootsAndroidDriver) LoginNoneUI(packageName, phoneNumber, captcha st return nil } -func (sad *ShootsAndroidDriver) LogoutNoneUI(packageName string) error { +func (sad *stubAndroidDriver) LogoutNoneUI(packageName string) error { resp, err := sad.httpGET("/host", "/logout") if err != nil { return err @@ -235,7 +235,7 @@ func (sad *ShootsAndroidDriver) LogoutNoneUI(packageName string) error { return nil } -func (sad *ShootsAndroidDriver) LoginNoneUIDynamic(packageName, phoneNumber string, captcha string) error { +func (sad *stubAndroidDriver) LoginNoneUIDynamic(packageName, phoneNumber string, captcha string) error { params := map[string]interface{}{ "ClassName": "qe.python.test.LoginUtil", "Method": "loginSync", @@ -250,7 +250,7 @@ func (sad *ShootsAndroidDriver) LoginNoneUIDynamic(packageName, phoneNumber stri return nil } -func (sad *ShootsAndroidDriver) isLogin(packageName string) (login bool, err error) { +func (sad *stubAndroidDriver) isLogin(packageName string) (login bool, err error) { resp, err := sad.httpGET("/host", "/login", "/check") if err != nil { return false, err diff --git a/hrp/pkg/uixt/android_stub_driver_test.go b/hrp/pkg/uixt/android_stub_driver_test.go new file mode 100644 index 00000000..2d5cd3b3 --- /dev/null +++ b/hrp/pkg/uixt/android_stub_driver_test.go @@ -0,0 +1,56 @@ +package uixt + +import "testing" + +var androidStubDriver *stubAndroidDriver + +func setupStubDriver(t *testing.T) { + device, err := NewAndroidDevice() + checkErr(t, err) + device.STUB = true + androidStubDriver, err = device.NewStubDriver(Capabilities{}) + checkErr(t, err) +} + +func TestHello(t *testing.T) { + setupStubDriver(t) + status, err := androidStubDriver.Status() + if err != nil { + t.Fatal(err) + } + t.Log(status) +} + +func TestSource(t *testing.T) { + setupStubDriver(t) + source, err := androidStubDriver.Source() + if err != nil { + t.Fatal(err) + } + t.Log(source) +} + +func TestIsLogin(t *testing.T) { + setupStubDriver(t) + res, err := androidStubDriver.isLogin("com.ss.android.ugc.aweme") + if err != nil { + t.Fatal(err) + } + t.Log(res) +} + +func TestLogin(t *testing.T) { + setupStubDriver(t) + err := androidStubDriver.LoginNoneUI("com.ss.android.ugc.aweme", "12342316231", "8517") + if err != nil { + t.Fatal(err) + } +} + +func TestLogout(t *testing.T) { + setupStubDriver(t) + err := androidStubDriver.LogoutNoneUI("com.ss.android.ugc.aweme") + if err != nil { + t.Fatal(err) + } +} diff --git a/hrp/pkg/uixt/eval_tool b/hrp/pkg/uixt/evalite similarity index 100% rename from hrp/pkg/uixt/eval_tool rename to hrp/pkg/uixt/evalite