mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-13 08:59:44 +08:00
76 lines
2.1 KiB
Go
76 lines
2.1 KiB
Go
package options
|
|
|
|
type AndroidDeviceConfig struct {
|
|
SerialNumber string `json:"serial,omitempty" yaml:"serial,omitempty"`
|
|
STUB bool `json:"stub,omitempty" yaml:"stub,omitempty"` // use stub
|
|
UIA2 bool `json:"uia2,omitempty" yaml:"uia2,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"`
|
|
}
|
|
|
|
func (dev *AndroidDeviceConfig) Options() (deviceOptions []AndroidDeviceOption) {
|
|
if dev.SerialNumber != "" {
|
|
deviceOptions = append(deviceOptions, WithSerialNumber(dev.SerialNumber))
|
|
}
|
|
if dev.UIA2 {
|
|
deviceOptions = append(deviceOptions, WithUIA2(true))
|
|
}
|
|
if dev.UIA2IP != "" {
|
|
deviceOptions = append(deviceOptions, WithUIA2IP(dev.UIA2IP))
|
|
}
|
|
if dev.UIA2Port != 0 {
|
|
deviceOptions = append(deviceOptions, WithUIA2Port(dev.UIA2Port))
|
|
}
|
|
if dev.LogOn {
|
|
deviceOptions = append(deviceOptions, WithAdbLogOn(true))
|
|
}
|
|
return
|
|
}
|
|
|
|
func NewAndroidDeviceConfig(opts ...AndroidDeviceOption) *AndroidDeviceConfig {
|
|
config := &AndroidDeviceConfig{}
|
|
for _, opt := range opts {
|
|
opt(config)
|
|
}
|
|
return config
|
|
}
|
|
|
|
type AndroidDeviceOption func(*AndroidDeviceConfig)
|
|
|
|
func WithSerialNumber(serial string) AndroidDeviceOption {
|
|
return func(device *AndroidDeviceConfig) {
|
|
device.SerialNumber = serial
|
|
}
|
|
}
|
|
|
|
func WithUIA2(uia2On bool) AndroidDeviceOption {
|
|
return func(device *AndroidDeviceConfig) {
|
|
device.UIA2 = uia2On
|
|
}
|
|
}
|
|
|
|
func WithStub(stubOn bool) AndroidDeviceOption {
|
|
return func(device *AndroidDeviceConfig) {
|
|
device.STUB = stubOn
|
|
}
|
|
}
|
|
|
|
func WithUIA2IP(ip string) AndroidDeviceOption {
|
|
return func(device *AndroidDeviceConfig) {
|
|
device.UIA2IP = ip
|
|
}
|
|
}
|
|
|
|
func WithUIA2Port(port int) AndroidDeviceOption {
|
|
return func(device *AndroidDeviceConfig) {
|
|
device.UIA2Port = port
|
|
}
|
|
}
|
|
|
|
func WithAdbLogOn(logOn bool) AndroidDeviceOption {
|
|
return func(device *AndroidDeviceConfig) {
|
|
device.LogOn = logOn
|
|
}
|
|
}
|