import "go.chromium.org/chromiumos/config/go/api/test/tls"
var CallServoXmlRpcResponse_Status_name = map[int32]string{ 0: "STATUS_UNKNOWN", 1: "STATUS_OK", 2: "STATUS_BAD_DUT", 3: "STATUS_NO_METHOD", 4: "STATUS_NO_SERVO", 5: "STATUS_SERVO_ERROR", }
var CallServoXmlRpcResponse_Status_value = map[string]int32{ "STATUS_UNKNOWN": 0, "STATUS_OK": 1, "STATUS_BAD_DUT": 2, "STATUS_NO_METHOD": 3, "STATUS_NO_SERVO": 4, "STATUS_SERVO_ERROR": 5, }
var FakeOmaha_Payload_Type_name = map[int32]string{ 0: "TYPE_UNSPECIFIED", 1: "FULL", 2: "DELTA", }
var FakeOmaha_Payload_Type_value = map[string]int32{ "TYPE_UNSPECIFIED": 0, "FULL": 1, "DELTA": 2, }
var ProvisionDutResponse_Reason_name = map[int32]string{ 0: "REASON_INVALID_REQUEST", 1: "REASON_DUT_UNREACHABLE_PRE_PROVISION", 2: "REASON_DOWNLOADING_IMAGE_FAILED", 3: "REASON_PROVISIONING_TIMEDOUT", 4: "REASON_PROVISIONING_FAILED", 5: "REASON_DUT_UNREACHABLE_POST_PROVISION", }
var ProvisionDutResponse_Reason_value = map[string]int32{ "REASON_INVALID_REQUEST": 0, "REASON_DUT_UNREACHABLE_PRE_PROVISION": 1, "REASON_DOWNLOADING_IMAGE_FAILED": 2, "REASON_PROVISIONING_TIMEDOUT": 3, "REASON_PROVISIONING_FAILED": 4, "REASON_DUT_UNREACHABLE_POST_PROVISION": 5, }
var SetDutPowerSupplyRequest_State_name = map[int32]string{ 0: "STATE_UNKNOWN", 1: "STATE_ON", 2: "STATE_OFF", }
var SetDutPowerSupplyRequest_State_value = map[string]int32{ "STATE_UNKNOWN": 0, "STATE_ON": 1, "STATE_OFF": 2, }
var SetDutPowerSupplyResponse_Status_name = map[int32]string{ 0: "STATUS_UNKNOWN", 1: "STATUS_OK", 2: "STATUS_BAD_DUT", 3: "STATUS_BAD_REQUEST", 4: "STATUS_NO_RPM", 5: "STATUS_RPM_ERROR", }
var SetDutPowerSupplyResponse_Status_value = map[string]int32{ "STATUS_UNKNOWN": 0, "STATUS_OK": 1, "STATUS_BAD_DUT": 2, "STATUS_BAD_REQUEST": 3, "STATUS_NO_RPM": 4, "STATUS_RPM_ERROR": 5, }
func RegisterCommonServer(s *grpc.Server, srv CommonServer)
func RegisterWiringServer(s *grpc.Server, srv WiringServer)
type CacheForDutMetadata struct { XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*CacheForDutMetadata) Descriptor() ([]byte, []int)
func (*CacheForDutMetadata) ProtoMessage()
func (m *CacheForDutMetadata) Reset()
func (m *CacheForDutMetadata) String() string
func (m *CacheForDutMetadata) XXX_DiscardUnknown()
func (m *CacheForDutMetadata) XXX_Merge(src proto.Message)
func (m *CacheForDutMetadata) XXX_Size() int
func (m *CacheForDutMetadata) XXX_Unmarshal(b []byte) error
type CacheForDutRequest struct { // url identifies the resource to cache. // Only http, https, and gs schemes are supported. The resource to cache MUST // be accessible from the service. The implementation MAY use // implementation-specific credentials to attempt to access resources. Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` // dut_name is the resource name for the DUT. // The DUT name is passed to the RTD when the RTD is started. // It is not specified whether the name is the DUT hostname. // (-- aip.dev/not-precedent: This preceded the AIP standards. // Ordinarily, this field should be either `name` or `dut`, // depending on whether this is a method on Dut resources. --) DutName string `protobuf:"bytes,2,opt,name=dut_name,json=dutName,proto3" json:"dut_name,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Code:
var invocation rtd.Invocation
tlsConfig := invocation.GetTestLabServicesConfig()
dutName := invocation.GetDuts()[0].GetTlsDutName()
gsURL := "gs://my-bucket/path/to/file"
conn, err := grpc.Dial(fmt.Sprintf("%s:%d", tlsConfig.GetTlwAddress(), tlsConfig.GetTlwPort()))
if err != nil {
panic(err)
}
defer conn.Close()
c := tls.NewWiringClient(conn)
opcli := longrunning.NewOperationsClient(conn)
ctx := context.Background()
req := tls.CacheForDutRequest{
Url: gsURL,
DutName: dutName,
}
op, err := c.CacheForDut(ctx, &req)
if err != nil {
panic("RPC error")
}
op, err = opcli.WaitOperation(ctx, &longrunning.WaitOperationRequest{
Name: op.GetName(),
Timeout: &duration.Duration{
Seconds: 300,
},
})
if err != nil {
panic("RPC error")
}
if errStatus := op.GetError(); errStatus != nil {
panic("Operation error")
}
resp := &tls.CacheForDutResponse{}
if err := ptypes.UnmarshalAny(op.GetResponse(), resp); err != nil {
panic("Unmarshal response error")
}
// Handle the response in various ways.
_ = resp
func (*CacheForDutRequest) Descriptor() ([]byte, []int)
func (m *CacheForDutRequest) GetDutName() string
func (m *CacheForDutRequest) GetUrl() string
func (*CacheForDutRequest) ProtoMessage()
func (m *CacheForDutRequest) Reset()
func (m *CacheForDutRequest) String() string
func (m *CacheForDutRequest) XXX_DiscardUnknown()
func (m *CacheForDutRequest) XXX_Merge(src proto.Message)
func (m *CacheForDutRequest) XXX_Size() int
func (m *CacheForDutRequest) XXX_Unmarshal(b []byte) error
type CacheForDutResponse struct { // url is where the resource is cached at. // This MUST be accessible to the DUT. // If the host part of the url is a name, it MUST be resolvable by the DUT // via standard name resolution facilities. Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*CacheForDutResponse) Descriptor() ([]byte, []int)
func (m *CacheForDutResponse) GetUrl() string
func (*CacheForDutResponse) ProtoMessage()
func (m *CacheForDutResponse) Reset()
func (m *CacheForDutResponse) String() string
func (m *CacheForDutResponse) XXX_DiscardUnknown()
func (m *CacheForDutResponse) XXX_Merge(src proto.Message)
func (m *CacheForDutResponse) XXX_Size() int
func (m *CacheForDutResponse) XXX_Unmarshal(b []byte) error
type CallServoXmlRpcRequest struct { Dut string `protobuf:"bytes,1,opt,name=dut,proto3" json:"dut,omitempty"` Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` Args []*xmlrpc.Value `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*CallServoXmlRpcRequest) Descriptor() ([]byte, []int)
func (m *CallServoXmlRpcRequest) GetArgs() []*xmlrpc.Value
func (m *CallServoXmlRpcRequest) GetDut() string
func (m *CallServoXmlRpcRequest) GetMethod() string
func (*CallServoXmlRpcRequest) ProtoMessage()
func (m *CallServoXmlRpcRequest) Reset()
func (m *CallServoXmlRpcRequest) String() string
func (m *CallServoXmlRpcRequest) XXX_DiscardUnknown()
func (m *CallServoXmlRpcRequest) XXX_Merge(src proto.Message)
func (m *CallServoXmlRpcRequest) XXX_Size() int
func (m *CallServoXmlRpcRequest) XXX_Unmarshal(b []byte) error
type CallServoXmlRpcResponse struct { Status CallServoXmlRpcResponse_Status `protobuf:"varint,1,opt,name=status,proto3,enum=chromiumos.config.api.test.tls.CallServoXmlRpcResponse_Status" json:"status,omitempty"` Value *xmlrpc.Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // fault indicates that the servo XML-RPC returned a fault. // The fault value is stored in the value field. Fault bool `protobuf:"varint,3,opt,name=fault,proto3" json:"fault,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*CallServoXmlRpcResponse) Descriptor() ([]byte, []int)
func (m *CallServoXmlRpcResponse) GetFault() bool
func (m *CallServoXmlRpcResponse) GetStatus() CallServoXmlRpcResponse_Status
func (m *CallServoXmlRpcResponse) GetValue() *xmlrpc.Value
func (*CallServoXmlRpcResponse) ProtoMessage()
func (m *CallServoXmlRpcResponse) Reset()
func (m *CallServoXmlRpcResponse) String() string
func (m *CallServoXmlRpcResponse) XXX_DiscardUnknown()
func (m *CallServoXmlRpcResponse) XXX_Merge(src proto.Message)
func (m *CallServoXmlRpcResponse) XXX_Size() int
func (m *CallServoXmlRpcResponse) XXX_Unmarshal(b []byte) error
const ( CallServoXmlRpcResponse_STATUS_UNKNOWN CallServoXmlRpcResponse_Status = 0 CallServoXmlRpcResponse_STATUS_OK CallServoXmlRpcResponse_Status = 1 // STATUS_BAD_DUT indicates that the DUT is not known, // or the caller does not have access to it. CallServoXmlRpcResponse_STATUS_BAD_DUT CallServoXmlRpcResponse_Status = 2 // STATUS_NO_METHOD indicates that the requested method does not // exist. CallServoXmlRpcResponse_STATUS_NO_METHOD CallServoXmlRpcResponse_Status = 3 CallServoXmlRpcResponse_STATUS_NO_SERVO CallServoXmlRpcResponse_Status = 4 CallServoXmlRpcResponse_STATUS_SERVO_ERROR CallServoXmlRpcResponse_Status = 5 )
func (CallServoXmlRpcResponse_Status) EnumDescriptor() ([]byte, []int)
func (x CallServoXmlRpcResponse_Status) String() string
type ChromeOsImage struct { // Types that are valid to be assigned to PathOneof: // *ChromeOsImage_GsPathPrefix PathOneof isChromeOsImage_PathOneof `protobuf_oneof:"path_oneof"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*ChromeOsImage) Descriptor() ([]byte, []int)
func (m *ChromeOsImage) GetGsPathPrefix() string
func (m *ChromeOsImage) GetPathOneof() isChromeOsImage_PathOneof
func (*ChromeOsImage) ProtoMessage()
func (m *ChromeOsImage) Reset()
func (m *ChromeOsImage) String() string
func (m *ChromeOsImage) XXX_DiscardUnknown()
func (m *ChromeOsImage) XXX_Merge(src proto.Message)
func (*ChromeOsImage) XXX_OneofWrappers() []interface{}
XXX_OneofWrappers is for the internal use of the proto package.
func (m *ChromeOsImage) XXX_Size() int
func (m *ChromeOsImage) XXX_Unmarshal(b []byte) error
type ChromeOsImage_GsPathPrefix struct { GsPathPrefix string `protobuf:"bytes,1,opt,name=gs_path_prefix,json=gsPathPrefix,proto3,oneof"` }
type CommonClient interface { // ExecDutCommand runs a command on a DUT. // // The working directory is /. // A tty is not spawned for the command. // The user and group is root. // All signals have their default dispositions and are not masked. // The umask is set to 0. // // The environment contains: // // TERM=dumb // PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin // LANG=en_US.UTF-8 // USER=root // HOME=/root // // The environment MAY also contain SSH client variables. // The environment SHALL NOT contain variables not mentioned above. // // If the stream is interrupted, the implementation MAY attempt to // stop the command by sending SIGINT, SIGHUP, SIGTERM, or SIGKILL. ExecDutCommand(ctx context.Context, in *ExecDutCommandRequest, opts ...grpc.CallOption) (Common_ExecDutCommandClient, error) // ProvisionDut installs a specified version of Chrome OS on the DUT, along // with any specified DLCs. // // If the DUT is already on the specified version of Chrome OS, the OS will // not be provisioned. // // If the DUT already has the specified list of DLCs, only the missing DLCs // will be provisioned. ProvisionDut(ctx context.Context, in *ProvisionDutRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) // FetchCrashes gets a stream of all crash reports currently on the DUT. // // The stream returned may split up a crash over multiple // `FetchCrashesResponse` protos. See the definition of that proto for // details. // // This call is read-only: it doesn't delete the crashes that it reads. FetchCrashes(ctx context.Context, in *FetchCrashesRequest, opts ...grpc.CallOption) (Common_FetchCrashesClient, error) // CreateFakeOmaha starts a fake Omaha service on TLS and exposes the // listened port to the DUT. CreateFakeOmaha(ctx context.Context, in *CreateFakeOmahaRequest, opts ...grpc.CallOption) (*FakeOmaha, error) // DeleteFakeOmaha deletes the specified fake Omaha resource created by // CreateFakeOmaha. DeleteFakeOmaha(ctx context.Context, in *DeleteFakeOmahaRequest, opts ...grpc.CallOption) (*empty.Empty, error) }
CommonClient is the client API for Common service.
For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
func NewCommonClient(cc *grpc.ClientConn) CommonClient
type CommonServer interface { // ExecDutCommand runs a command on a DUT. // // The working directory is /. // A tty is not spawned for the command. // The user and group is root. // All signals have their default dispositions and are not masked. // The umask is set to 0. // // The environment contains: // // TERM=dumb // PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin // LANG=en_US.UTF-8 // USER=root // HOME=/root // // The environment MAY also contain SSH client variables. // The environment SHALL NOT contain variables not mentioned above. // // If the stream is interrupted, the implementation MAY attempt to // stop the command by sending SIGINT, SIGHUP, SIGTERM, or SIGKILL. ExecDutCommand(*ExecDutCommandRequest, Common_ExecDutCommandServer) error // ProvisionDut installs a specified version of Chrome OS on the DUT, along // with any specified DLCs. // // If the DUT is already on the specified version of Chrome OS, the OS will // not be provisioned. // // If the DUT already has the specified list of DLCs, only the missing DLCs // will be provisioned. ProvisionDut(context.Context, *ProvisionDutRequest) (*longrunning.Operation, error) // FetchCrashes gets a stream of all crash reports currently on the DUT. // // The stream returned may split up a crash over multiple // `FetchCrashesResponse` protos. See the definition of that proto for // details. // // This call is read-only: it doesn't delete the crashes that it reads. FetchCrashes(*FetchCrashesRequest, Common_FetchCrashesServer) error // CreateFakeOmaha starts a fake Omaha service on TLS and exposes the // listened port to the DUT. CreateFakeOmaha(context.Context, *CreateFakeOmahaRequest) (*FakeOmaha, error) // DeleteFakeOmaha deletes the specified fake Omaha resource created by // CreateFakeOmaha. DeleteFakeOmaha(context.Context, *DeleteFakeOmahaRequest) (*empty.Empty, error) }
CommonServer is the server API for Common service.
type Common_ExecDutCommandClient interface { Recv() (*ExecDutCommandResponse, error) grpc.ClientStream }
type Common_ExecDutCommandServer interface { Send(*ExecDutCommandResponse) error grpc.ServerStream }
type Common_FetchCrashesClient interface { Recv() (*FetchCrashesResponse, error) grpc.ClientStream }
type Common_FetchCrashesServer interface { Send(*FetchCrashesResponse) error grpc.ServerStream }
type CrashBlob struct { // This value is a UTF8, human-readable, description of the data. // This should be passed as the 'name' to the crash server. // For instance, upload_file_fake_payload Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // The value is a blob (e.g. a file from sysfs or a minidump), which need // not be valid UTF-8, and may be large. Blob []byte `protobuf:"bytes,2,opt,name=blob,proto3" json:"blob,omitempty"` // The basename of the file. Must be specified as the filename in data // uploaded to the crash server. // e.g. foo_binary.20201027.102345.0.dmp Filename string `protobuf:"bytes,3,opt,name=filename,proto3" json:"filename,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Arbitrary non-UTF8 key-value pair from crash report metadata files.
type CrashInfo struct { // Name of executable that crashed (e.g. "chrome") ExecName string `protobuf:"bytes,1,opt,name=exec_name,json=execName,proto3" json:"exec_name,omitempty"` // Product name (e.g. "Chrome_ChromeOS" or "ChromeOS") Prod string `protobuf:"bytes,2,opt,name=prod,proto3" json:"prod,omitempty"` // Product version (e.g. "12345.0.0") Ver string `protobuf:"bytes,3,opt,name=ver,proto3" json:"ver,omitempty"` // Crash signature (may not be populated for all crashes) Sig string `protobuf:"bytes,4,opt,name=sig,proto3" json:"sig,omitempty"` // The name of the integration test that was running when this crash // happened, if any. InProgressIntegrationTest string `protobuf:"bytes,5,opt,name=in_progress_integration_test,json=inProgressIntegrationTest,proto3" json:"in_progress_integration_test,omitempty"` // The name of the collector (e.g. chrome_collector, arc_collector) Collector string `protobuf:"bytes,6,opt,name=collector,proto3" json:"collector,omitempty"` // Additional key-value pairs of metadata (e.g. "crash_loop_mode = true"). // These should be included in any POSTs to the crash server in a standard // POST form, as seen in CreateCrashFormData. // (despite the fact that this message is a subfield, it should be a flat // structure in any POSTs). Fields []*CrashMetadata `protobuf:"bytes,7,rep,name=fields,proto3" json:"fields,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
The data in this proto matches the metadata from crash-reporter's meta files. Sender::CreateCrashFormData puts this data into crash upload POST requests. (See src/platform2/crash-reporter/crash_sender_util.cc.) The names in this proto MUST match the names that crash-reporter uses so that, when crashes are uploaded to the crash server, they are interpreted as they are when crash-reporter uploads them. Similarly, when this proto is converted into a POST request to send to the crash server, the names must not be altered.
func (m *CrashInfo) GetFields() []*CrashMetadata
type CrashMetadata struct { // This value is a UTF8, human-readable, description of the data. Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // The value will be a human-readable string (e.g. "12345.0.0"), which must // be valid UTF-8. Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Arbitrary text-only key-value pair corresponding to the key-value pairs in crash report metadata files.
func (*CrashMetadata) Descriptor() ([]byte, []int)
func (m *CrashMetadata) GetKey() string
func (m *CrashMetadata) GetText() string
func (*CrashMetadata) ProtoMessage()
func (m *CrashMetadata) Reset()
func (m *CrashMetadata) String() string
func (m *CrashMetadata) XXX_DiscardUnknown()
func (m *CrashMetadata) XXX_Merge(src proto.Message)
func (m *CrashMetadata) XXX_Size() int
func (m *CrashMetadata) XXX_Unmarshal(b []byte) error
type CreateFakeOmahaRequest struct { // fake_omaha is the fake omaha service to be created. FakeOmaha *FakeOmaha `protobuf:"bytes,1,opt,name=fake_omaha,json=fakeOmaha,proto3" json:"fake_omaha,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Code:
var invocation rtd.Invocation
tlsConfig := invocation.GetTestLabServicesConfig()
dutName := invocation.GetDuts()[0].GetTlsDutName()
conn, err := grpc.Dial(fmt.Sprintf("%s:%d", tlsConfig.GetTlsAddress(), tlsConfig.GetTlsPort()), grpc.WithInsecure())
if err != nil {
panic(err)
}
defer conn.Close()
c := tls.NewCommonClient(conn)
req := tls.CreateFakeOmahaRequest{
FakeOmaha: &tls.FakeOmaha{
Dut: dutName,
TargetBuild: &tls.ChromeOsImage{
PathOneof: &tls.ChromeOsImage_GsPathPrefix{
GsPathPrefix: "gs://chromeos-image-archive/eve-release/R87-13457.0.0",
},
},
Payloads: []*tls.FakeOmaha_Payload{
&tls.FakeOmaha_Payload{
Id: "ROOTFS",
Type: tls.FakeOmaha_Payload_FULL,
},
},
},
}
ctx := context.Background()
omaha, err := c.CreateFakeOmaha(ctx, &req)
if err != nil {
panic("RPC CreateFakeOmaha error")
}
defer c.DeleteFakeOmaha(ctx, &tls.DeleteFakeOmahaRequest{Name: omaha.GetName()})
result, err := c.ExecDutCommand(ctx, &tls.ExecDutCommandRequest{
Name: dutName,
Command: "update_engine_client",
Args: []string{"--update_url", omaha.GetOmahaUrl(), "--update"},
})
if err != nil {
panic("RPC ExecDutCommand error")
}
// Check the return code of ExecDutCommand.
_ = result
func (*CreateFakeOmahaRequest) Descriptor() ([]byte, []int)
func (m *CreateFakeOmahaRequest) GetFakeOmaha() *FakeOmaha
func (*CreateFakeOmahaRequest) ProtoMessage()
func (m *CreateFakeOmahaRequest) Reset()
func (m *CreateFakeOmahaRequest) String() string
func (m *CreateFakeOmahaRequest) XXX_DiscardUnknown()
func (m *CreateFakeOmahaRequest) XXX_Merge(src proto.Message)
func (m *CreateFakeOmahaRequest) XXX_Size() int
func (m *CreateFakeOmahaRequest) XXX_Unmarshal(b []byte) error
type DeleteFakeOmahaRequest struct { // The resource name of the fake Omaha service to stop. // Format: fakeOmahaServices/{fake-omaha-id} Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*DeleteFakeOmahaRequest) Descriptor() ([]byte, []int)
func (m *DeleteFakeOmahaRequest) GetName() string
func (*DeleteFakeOmahaRequest) ProtoMessage()
func (m *DeleteFakeOmahaRequest) Reset()
func (m *DeleteFakeOmahaRequest) String() string
func (m *DeleteFakeOmahaRequest) XXX_DiscardUnknown()
func (m *DeleteFakeOmahaRequest) XXX_Merge(src proto.Message)
func (m *DeleteFakeOmahaRequest) XXX_Size() int
func (m *DeleteFakeOmahaRequest) XXX_Unmarshal(b []byte) error
type ExecDutCommandRequest struct { // name is the resource name for the DUT. // The DUT name is passed to the RTD when the RTD is started. // It is not specified whether the name is the DUT hostname. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // command is the command to run. // If this contains no slashes, it is resolved using PATH. // If this starts with /, it is used as an absolute path to the // program to run. // Otherwise, this is treated as a path relative to the working // directory. Command string `protobuf:"bytes,2,opt,name=command,proto3" json:"command,omitempty"` // args are the arguments to pass to the command. Args []string `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` // stdin is passed to the command as the program's stdin. // The stream does not support seeking. // An empty bytes is not treated specially; if the command reads // from stdin, it will receive zero bytes. Stdin []byte `protobuf:"bytes,4,opt,name=stdin,proto3" json:"stdin,omitempty"` // stdout indicates how to handle the command's stdout. Stdout Output `protobuf:"varint,5,opt,name=stdout,proto3,enum=chromiumos.config.api.test.tls.Output" json:"stdout,omitempty"` // stderr indicates how to handle the command's stderr. Stderr Output `protobuf:"varint,6,opt,name=stderr,proto3,enum=chromiumos.config.api.test.tls.Output" json:"stderr,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Code:
// The RTD will receive this in its invocation spec. var ( addr string dutName string ) conn, err := grpc.Dial(addr) if err != nil { panic(err) } defer conn.Close() c := tls.NewCommonClient(conn) ctx := context.Background() req := tls.ExecDutCommandRequest{ Name: dutName, Command: "echo", Args: []string{"hello world"}, } stream, err := c.ExecDutCommand(ctx, &req) if err != nil { panic("RPC error") } // Handle stream in various ways. _ = stream
func (*ExecDutCommandRequest) Descriptor() ([]byte, []int)
func (m *ExecDutCommandRequest) GetArgs() []string
func (m *ExecDutCommandRequest) GetCommand() string
func (m *ExecDutCommandRequest) GetName() string
func (m *ExecDutCommandRequest) GetStderr() Output
func (m *ExecDutCommandRequest) GetStdin() []byte
func (m *ExecDutCommandRequest) GetStdout() Output
func (*ExecDutCommandRequest) ProtoMessage()
func (m *ExecDutCommandRequest) Reset()
func (m *ExecDutCommandRequest) String() string
func (m *ExecDutCommandRequest) XXX_DiscardUnknown()
func (m *ExecDutCommandRequest) XXX_Merge(src proto.Message)
func (m *ExecDutCommandRequest) XXX_Size() int
func (m *ExecDutCommandRequest) XXX_Unmarshal(b []byte) error
type ExecDutCommandResponse struct { // exit_info contains exit information. // This is set when the command has exited or failed to start. // This is set on the last message in the response stream. ExitInfo *ExecDutCommandResponse_ExitInfo `protobuf:"bytes,1,opt,name=exit_info,json=exitInfo,proto3" json:"exit_info,omitempty"` // stdout contains the shell command's stdout output since the last // response in the stream. // The implementation MAY batch or delay output to later // responses in the stream. Stdout []byte `protobuf:"bytes,2,opt,name=stdout,proto3" json:"stdout,omitempty"` // stderr contains the shell command's stderr output since the last // response in the stream. // The implementation MAY batch or delay output to later // responses in the stream. Stderr []byte `protobuf:"bytes,3,opt,name=stderr,proto3" json:"stderr,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*ExecDutCommandResponse) Descriptor() ([]byte, []int)
func (m *ExecDutCommandResponse) GetExitInfo() *ExecDutCommandResponse_ExitInfo
func (m *ExecDutCommandResponse) GetStderr() []byte
func (m *ExecDutCommandResponse) GetStdout() []byte
func (*ExecDutCommandResponse) ProtoMessage()
func (m *ExecDutCommandResponse) Reset()
func (m *ExecDutCommandResponse) String() string
func (m *ExecDutCommandResponse) XXX_DiscardUnknown()
func (m *ExecDutCommandResponse) XXX_Merge(src proto.Message)
func (m *ExecDutCommandResponse) XXX_Size() int
func (m *ExecDutCommandResponse) XXX_Unmarshal(b []byte) error
type ExecDutCommandResponse_ExitInfo struct { // status provides information about how the command process // terminated. // // If the command failed to start, status is set to an arbitrary // non-zero value. // // If signaled is set, status is set to the signal that caused // the command to terminate. // // Otherwise, status is set to the exit status of the process. // Exit statuses outside of 0 to 255 inclusive are not supported; // they will be mapped to an arbitrary non-zero value. // // status is zero if and only if the process was successfully // started and exited with a zero status. Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` // signaled indicates whether the command exited due to a signal. // If set, status contains the signal. Signaled bool `protobuf:"varint,2,opt,name=signaled,proto3" json:"signaled,omitempty"` // started indicates whether the command was started. Started bool `protobuf:"varint,3,opt,name=started,proto3" json:"started,omitempty"` // error_message provides a human readable explanation for some errors. // This MUST NOT be inspected by programs. ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*ExecDutCommandResponse_ExitInfo) Descriptor() ([]byte, []int)
func (m *ExecDutCommandResponse_ExitInfo) GetErrorMessage() string
func (m *ExecDutCommandResponse_ExitInfo) GetSignaled() bool
func (m *ExecDutCommandResponse_ExitInfo) GetStarted() bool
func (m *ExecDutCommandResponse_ExitInfo) GetStatus() int32
func (*ExecDutCommandResponse_ExitInfo) ProtoMessage()
func (m *ExecDutCommandResponse_ExitInfo) Reset()
func (m *ExecDutCommandResponse_ExitInfo) String() string
func (m *ExecDutCommandResponse_ExitInfo) XXX_DiscardUnknown()
func (m *ExecDutCommandResponse_ExitInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (m *ExecDutCommandResponse_ExitInfo) XXX_Merge(src proto.Message)
func (m *ExecDutCommandResponse_ExitInfo) XXX_Size() int
func (m *ExecDutCommandResponse_ExitInfo) XXX_Unmarshal(b []byte) error
type ExposePortToDutRequest struct { // dut_name is the resource name for the DUT. // The DUT name is passed to the RTD when the RTD is started. // It is not specified whether the name is the DUT hostname. // (-- aip.dev/not-precedent: This preceded the AIP standards. // Ordinarily, this field should be either `name` or `dut`, // depending on whether this is a method on Dut resources. --) DutName string `protobuf:"bytes,1,opt,name=dut_name,json=dutName,proto3" json:"dut_name,omitempty"` // local_port is the port of a service running inside the RTD container to // expose. It MUST be in the range of [1, 65535] as defined in RFC 1700 // (http://https://tools.ietf.org/html/rfc1700). // A client MAY bind to the special port number "0" from inside an RTD to get // an OS assigned free port number without race condition. Then the client // MUST get the real port number assigned and pass it to "local_port" here. LocalPort int32 `protobuf:"varint,2,opt,name=local_port,json=localPort,proto3" json:"local_port,omitempty"` // require_remote_proxy indicates if the implementation SHOULD use a DUT // reachable server as a proxy and return the address and port of the proxy // server. // If require_remote_proxy is set, the exposed port SHOULD persist across DUT // reboots. // If require_remote_proxy is set but an implementation cannot provide a // remote proxy, the implementation SHOULD return FAILED_PRECONDITION. // If require_remote_proxy is not set, the implementation MAY expose a port // that cannot persist across DUT reboots. // If require_remote_proxy is not set, the implementation MAY use 'localhost' // as the exposed address. RequireRemoteProxy bool `protobuf:"varint,3,opt,name=require_remote_proxy,json=requireRemoteProxy,proto3" json:"require_remote_proxy,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Code:
var invocation rtd.Invocation tlsConfig := invocation.GetTestLabServicesConfig() dutName := invocation.GetDuts()[0].GetTlsDutName() conn, err := grpc.Dial(fmt.Sprintf("%s:%d", tlsConfig.GetTlwAddress(), tlsConfig.GetTlwPort())) if err != nil { panic(err) } defer conn.Close() c := tls.NewWiringClient(conn) ctx := context.Background() // Start a service inside RTD to bind to a local port. s := http.Server{} http.HandleFunc("/foo", func(w http.ResponseWriter, _ *http.Request) { fmt.Fprint(w, "Hello world!\n") }) // Use port "0" to request OS to assign an unused port number. ln, _ := net.Listen("tcp", ":0") go func() { s.Serve(ln) }() defer s.Shutdown(context.Background()) req := tls.ExposePortToDutRequest{ DutName: dutName, LocalPort: int32(ln.Addr().(*net.TCPAddr).Port), } resp, err := c.ExposePortToDut(ctx, &req) if err != nil { panic("RPC error") } // Handle the response in various ways. For example: // Run a client command to access the service started. // Dummy example, see ExecDutCommandRequest for a possible implementation. runCommandOnDut := func(args []string) {} runCommandOnDut([]string{"curl", fmt.Sprintf("%s:%d/foo", resp.ExposedAddress, resp.ExposedPort)})
func (*ExposePortToDutRequest) Descriptor() ([]byte, []int)
func (m *ExposePortToDutRequest) GetDutName() string
func (m *ExposePortToDutRequest) GetLocalPort() int32
func (m *ExposePortToDutRequest) GetRequireRemoteProxy() bool
func (*ExposePortToDutRequest) ProtoMessage()
func (m *ExposePortToDutRequest) Reset()
func (m *ExposePortToDutRequest) String() string
func (m *ExposePortToDutRequest) XXX_DiscardUnknown()
func (m *ExposePortToDutRequest) XXX_Merge(src proto.Message)
func (m *ExposePortToDutRequest) XXX_Size() int
func (m *ExposePortToDutRequest) XXX_Unmarshal(b []byte) error
type ExposePortToDutResponse struct { // exposed_address is the address reachable by the requesting DUT. // TLEs SHOULD return an IPv4 or IPv6 address to avoid name resolution // issues. // IPv4 addresses MUST be in standard dotted decimal notation. // IPv6 addresses MUST be formatted according to RFC4291, Section 2.2. The // mixed IPv4 and IPv6 form MUST NOT be used. // If TLEs return a hostname, they SHOULD ensure that the hostname can be // resolved by the DUT via standard name resolution facilities. ExposedAddress string `protobuf:"bytes,1,opt,name=exposed_address,json=exposedAddress,proto3" json:"exposed_address,omitempty"` // exposed_port is the port on the exposed_address which is reachable from // the DUT. ExposedPort int32 `protobuf:"varint,2,opt,name=exposed_port,json=exposedPort,proto3" json:"exposed_port,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*ExposePortToDutResponse) Descriptor() ([]byte, []int)
func (m *ExposePortToDutResponse) GetExposedAddress() string
func (m *ExposePortToDutResponse) GetExposedPort() int32
func (*ExposePortToDutResponse) ProtoMessage()
func (m *ExposePortToDutResponse) Reset()
func (m *ExposePortToDutResponse) String() string
func (m *ExposePortToDutResponse) XXX_DiscardUnknown()
func (m *ExposePortToDutResponse) XXX_Merge(src proto.Message)
func (m *ExposePortToDutResponse) XXX_Size() int
func (m *ExposePortToDutResponse) XXX_Unmarshal(b []byte) error
type FakeOmaha struct { // name is the resource name of the fake Omaha service. // Format: fakeOmaha/{fake-omaha-id} // The implementation MUST set it after creating the fake Omaha service. // Clients SHOULD NOT set it. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // dut is the resource name for the DUT. // The DUT name is passed to the RTD when the RTD is started. // It is not specified whether the name is the DUT hostname. Dut string `protobuf:"bytes,2,opt,name=dut,proto3" json:"dut,omitempty"` // target_build is the ChromeOS build that the fake Omaha service will serve // payloads for. TargetBuild *ChromeOsImage `protobuf:"bytes,3,opt,name=target_build,json=targetBuild,proto3" json:"target_build,omitempty"` // payloads is the payloads can be served by the fake Omaha service. Payloads []*FakeOmaha_Payload `protobuf:"bytes,4,rep,name=payloads,proto3" json:"payloads,omitempty"` // exposed_via_proxy indicates that the fake Omaha service is exposed to a // DUT via a proxy server, instead of exposing to the DUT directly. So the // service exposing won't be impacted by rebooting the DUT, disconnecting the // DUT network, etc. ExposedViaProxy bool `protobuf:"varint,5,opt,name=exposed_via_proxy,json=exposedViaProxy,proto3" json:"exposed_via_proxy,omitempty"` // critical_update instructs the fake Omaha created that the update is // critical if set. CriticalUpdate bool `protobuf:"varint,6,opt,name=critical_update,json=criticalUpdate,proto3" json:"critical_update,omitempty"` // return_noupdate_starting indicates from which update check to start returning noupdate. // It MUST be 0 or greater. // When set to 0 (the default value), disables returning noupdate. // If set to positive N, returns noupdate for the Nth check and for every // check thereafter. // For example, if set to 1, returns noupdate starting from the first check, // i.e., always returns noupdate. ReturnNoupdateStarting int32 `protobuf:"varint,7,opt,name=return_noupdate_starting,json=returnNoupdateStarting,proto3" json:"return_noupdate_starting,omitempty"` // omaha_url is the current fake Omaha service URL which is reachable from // the specified DUT. // The URL can be used as input of the update engine client of the DUT. // The implementation MUST set it after creating the fake Omaha service. // Clients SHOULD NOT set it. OmahaUrl string `protobuf:"bytes,8,opt,name=omaha_url,json=omahaUrl,proto3" json:"omaha_url,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (m *FakeOmaha) GetPayloads() []*FakeOmaha_Payload
func (m *FakeOmaha) GetTargetBuild() *ChromeOsImage
type FakeOmaha_Payload struct { // id is the id of the payload. It MAY be "ROOTFS" or a DLC id, etc. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // type is the payload type, e.g. TYPE_FULL or TYPE_DELTA. Type FakeOmaha_Payload_Type `protobuf:"varint,2,opt,name=type,proto3,enum=chromiumos.config.api.test.tls.FakeOmaha_Payload_Type" json:"type,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*FakeOmaha_Payload) Descriptor() ([]byte, []int)
func (m *FakeOmaha_Payload) GetId() string
func (m *FakeOmaha_Payload) GetType() FakeOmaha_Payload_Type
func (*FakeOmaha_Payload) ProtoMessage()
func (m *FakeOmaha_Payload) Reset()
func (m *FakeOmaha_Payload) String() string
func (m *FakeOmaha_Payload) XXX_DiscardUnknown()
func (m *FakeOmaha_Payload) XXX_Merge(src proto.Message)
func (m *FakeOmaha_Payload) XXX_Size() int
func (m *FakeOmaha_Payload) XXX_Unmarshal(b []byte) error
const ( FakeOmaha_Payload_TYPE_UNSPECIFIED FakeOmaha_Payload_Type = 0 FakeOmaha_Payload_FULL FakeOmaha_Payload_Type = 1 FakeOmaha_Payload_DELTA FakeOmaha_Payload_Type = 2 )
func (FakeOmaha_Payload_Type) EnumDescriptor() ([]byte, []int)
func (x FakeOmaha_Payload_Type) String() string
type FetchCrashesRequest struct { // dut is the resource name for the DUT from which to fetch crashes. // The DUT name is passed to the RTD when the RTD is started. // It is not specified whether the name is the DUT hostname. Dut string `protobuf:"bytes,1,opt,name=dut,proto3" json:"dut,omitempty"` // If true, fetch the core file. // For uploads to the crash server, that should generally be false. // If the crash file is likely to be used for manual debugging (e.g. on // a manually-invoked test suite run), this might be true. // Coredumps can be extremely large (even gigabytes), so if resource usage // is a concern, this should probably be false. FetchCore bool `protobuf:"varint,2,opt,name=fetch_core,json=fetchCore,proto3" json:"fetch_core,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Code:
var invocation rtd.Invocation
tlsConfig := invocation.GetTestLabServicesConfig()
dutName := invocation.GetDuts()[0].GetTlsDutName()
conn, err := grpc.Dial(fmt.Sprintf("%s:%d", tlsConfig.GetTlwAddress(), tlsConfig.GetTlwPort()), grpc.WithInsecure())
if err != nil {
panic(err)
}
defer conn.Close()
c := tls.NewCommonClient(conn)
req := tls.FetchCrashesRequest{
Dut: dutName,
FetchCore: true,
}
ctx := context.Background()
stream, err := c.FetchCrashes(ctx, &req)
if err != nil {
panic(err)
}
crashes := make(map[int64]*tls.CrashInfo)
cores := make(map[int64][]byte)
blobs := make(map[int64]map[string][]byte)
readStream:
for {
resp, err := stream.Recv()
if err != nil {
if err == io.EOF {
break readStream
}
panic(fmt.Sprintf("RPC error: %v", err))
}
id := resp.CrashId
switch x := resp.Data.(type) {
case *tls.FetchCrashesResponse_Crash:
crashes[id] = x.Crash
// Start on next crash -- assume we get CrashInfo before
// any blobs.
blobs[id] = make(map[string][]byte)
case *tls.FetchCrashesResponse_Blob:
b := x.Blob
blobs[id][b.Key] = append(blobs[id][b.Key], b.Blob...)
case *tls.FetchCrashesResponse_Core:
cores[id] = append(cores[id], x.Core...)
default:
panic(fmt.Sprintf("invalid type %T", x))
}
}
func (*FetchCrashesRequest) Descriptor() ([]byte, []int)
func (m *FetchCrashesRequest) GetDut() string
func (m *FetchCrashesRequest) GetFetchCore() bool
func (*FetchCrashesRequest) ProtoMessage()
func (m *FetchCrashesRequest) Reset()
func (m *FetchCrashesRequest) String() string
func (m *FetchCrashesRequest) XXX_DiscardUnknown()
func (m *FetchCrashesRequest) XXX_Merge(src proto.Message)
func (m *FetchCrashesRequest) XXX_Size() int
func (m *FetchCrashesRequest) XXX_Unmarshal(b []byte) error
type FetchCrashesResponse struct { // Crash id. unique only within responses to a single FetchCrashes request. // Used to assemble multiple streamed |FetchCrashesResponse| protos into a // single crash report. CrashId int64 `protobuf:"varint,1,opt,name=crash_id,json=crashId,proto3" json:"crash_id,omitempty"` // Types that are valid to be assigned to Data: // *FetchCrashesResponse_Crash // *FetchCrashesResponse_Blob // *FetchCrashesResponse_Core Data isFetchCrashesResponse_Data `protobuf_oneof:"data"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
When this response is streamed, the first proto with a given crash ID will always contain the CrashInfo. Files and core dumps (if present) may be streamed. If they are, subsequent protos with the same crash ID will follow, each containing a chunk of file/coredump. To reassemble these, concatenate the bytes received from each subsequent proto with a matching crash_id (concatenate blobs that have matching crash_ids and keys). Additional crashes may be reported in the same stream with a new crash ID.
func (*FetchCrashesResponse) Descriptor() ([]byte, []int)
func (m *FetchCrashesResponse) GetBlob() *CrashBlob
func (m *FetchCrashesResponse) GetCore() []byte
func (m *FetchCrashesResponse) GetCrash() *CrashInfo
func (m *FetchCrashesResponse) GetCrashId() int64
func (m *FetchCrashesResponse) GetData() isFetchCrashesResponse_Data
func (*FetchCrashesResponse) ProtoMessage()
func (m *FetchCrashesResponse) Reset()
func (m *FetchCrashesResponse) String() string
func (m *FetchCrashesResponse) XXX_DiscardUnknown()
func (m *FetchCrashesResponse) XXX_Merge(src proto.Message)
func (*FetchCrashesResponse) XXX_OneofWrappers() []interface{}
XXX_OneofWrappers is for the internal use of the proto package.
func (m *FetchCrashesResponse) XXX_Size() int
func (m *FetchCrashesResponse) XXX_Unmarshal(b []byte) error
type FetchCrashesResponse_Blob struct { Blob *CrashBlob `protobuf:"bytes,3,opt,name=blob,proto3,oneof"` }
type FetchCrashesResponse_Core struct { Core []byte `protobuf:"bytes,4,opt,name=core,proto3,oneof"` }
type FetchCrashesResponse_Crash struct { Crash *CrashInfo `protobuf:"bytes,2,opt,name=crash,proto3,oneof"` }
type OpenDutPortRequest struct { // name is the resource name for the DUT. // The DUT name is passed to the RTD when the RTD is started. // It is not specified whether the name is the DUT hostname. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // port is the port to open on the DUT. Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*OpenDutPortRequest) Descriptor() ([]byte, []int)
func (m *OpenDutPortRequest) GetName() string
func (m *OpenDutPortRequest) GetPort() int32
func (*OpenDutPortRequest) ProtoMessage()
func (m *OpenDutPortRequest) Reset()
func (m *OpenDutPortRequest) String() string
func (m *OpenDutPortRequest) XXX_DiscardUnknown()
func (m *OpenDutPortRequest) XXX_Merge(src proto.Message)
func (m *OpenDutPortRequest) XXX_Size() int
func (m *OpenDutPortRequest) XXX_Unmarshal(b []byte) error
type OpenDutPortResponse struct { // address for which a port is forwarded to the DUT. // TLEs SHOULD return an IPv4 or IPv6 address to avoid name // resolution issues. // IPv4 addresses MUST be in standard dotted decimal notation. // IPv6 addresses MUST be formatted according to RFC4291, Section // 2.2. The mixed IPv4 and IPv6 form MUST NOT be used. // If TLEs return a hostname, they SHOULD ensure that the hostname // can be resolved by the RTD via standard name resolution // facilities. Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // port on the address which is forwarded to the DUT. Port int32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*OpenDutPortResponse) Descriptor() ([]byte, []int)
func (m *OpenDutPortResponse) GetAddress() string
func (m *OpenDutPortResponse) GetPort() int32
func (*OpenDutPortResponse) ProtoMessage()
func (m *OpenDutPortResponse) Reset()
func (m *OpenDutPortResponse) String() string
func (m *OpenDutPortResponse) XXX_DiscardUnknown()
func (m *OpenDutPortResponse) XXX_Merge(src proto.Message)
func (m *OpenDutPortResponse) XXX_Size() int
func (m *OpenDutPortResponse) XXX_Unmarshal(b []byte) error
Output enumeration for ExecDutCommandRequest.
const ( // OUTPUT_PIPE means to collect output and return it. Output_OUTPUT_PIPE Output = 0 // OUTPUT_STDOUT is a special value for stderr which means to merge stderr // into stdout. Output_OUTPUT_STDOUT Output = 1 )
type ProvisionDutMetadata struct { XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*ProvisionDutMetadata) Descriptor() ([]byte, []int)
func (*ProvisionDutMetadata) ProtoMessage()
func (m *ProvisionDutMetadata) Reset()
func (m *ProvisionDutMetadata) String() string
func (m *ProvisionDutMetadata) XXX_DiscardUnknown()
func (m *ProvisionDutMetadata) XXX_Merge(src proto.Message)
func (m *ProvisionDutMetadata) XXX_Size() int
func (m *ProvisionDutMetadata) XXX_Unmarshal(b []byte) error
type ProvisionDutRequest struct { // name is the resource name for the DUT. // The DUT name is passed to the RTD when the RTD is started. // It is not specified whether the name is the DUT hostname. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // image specifies the Chrome OS image with which to provision the DUT. Image *ProvisionDutRequest_ChromeOSImage `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"` // dlc_specs specifies which DLCs to install on the DUT after provisioning. DlcSpecs []*ProvisionDutRequest_DLCSpec `protobuf:"bytes,3,rep,name=dlc_specs,json=dlcSpecs,proto3" json:"dlc_specs,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Code:
var invocation rtd.Invocation
tlsConfig := invocation.GetTestLabServicesConfig()
dutName := invocation.GetDuts()[0].GetTlsDutName()
conn, err := grpc.Dial(fmt.Sprintf("%s:%d", tlsConfig.GetTlwAddress(), tlsConfig.GetTlwPort()), grpc.WithInsecure())
if err != nil {
panic(err)
}
defer conn.Close()
c := tls.NewCommonClient(conn)
req := tls.ProvisionDutRequest{
Name: dutName,
Image: &tls.ProvisionDutRequest_ChromeOSImage{
PathOneof: &tls.ProvisionDutRequest_ChromeOSImage_GsPathPrefix{
GsPathPrefix: "gs://chromeos-image-archive/eve-release/R87-13457.0.0",
},
},
DlcSpecs: []*tls.ProvisionDutRequest_DLCSpec{
&tls.ProvisionDutRequest_DLCSpec{
Id: "sample-dlc",
},
},
}
ctx := context.Background()
op, err := c.ProvisionDut(ctx, &req)
if err != nil {
panic(err)
}
opcli := longrunning.NewOperationsClient(conn)
op, err = opcli.WaitOperation(ctx, &longrunning.WaitOperationRequest{
Name: op.GetName(),
Timeout: &duration.Duration{
Seconds: 3600,
},
})
if err != nil {
panic("RPC error")
}
if errStatus := op.GetError(); errStatus != nil {
panic(fmt.Sprintf("Operation error details: %v", errStatus.GetDetails()))
}
// Provisioned OS + DLC.
func (*ProvisionDutRequest) Descriptor() ([]byte, []int)
func (m *ProvisionDutRequest) GetDlcSpecs() []*ProvisionDutRequest_DLCSpec
func (m *ProvisionDutRequest) GetImage() *ProvisionDutRequest_ChromeOSImage
func (m *ProvisionDutRequest) GetName() string
func (*ProvisionDutRequest) ProtoMessage()
func (m *ProvisionDutRequest) Reset()
func (m *ProvisionDutRequest) String() string
func (m *ProvisionDutRequest) XXX_DiscardUnknown()
func (m *ProvisionDutRequest) XXX_Merge(src proto.Message)
func (m *ProvisionDutRequest) XXX_Size() int
func (m *ProvisionDutRequest) XXX_Unmarshal(b []byte) error
type ProvisionDutRequest_ChromeOSImage struct { // Types that are valid to be assigned to PathOneof: // *ProvisionDutRequest_ChromeOSImage_GsPathPrefix PathOneof isProvisionDutRequest_ChromeOSImage_PathOneof `protobuf_oneof:"path_oneof"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
TODO(crbug.com/1155247) Deprecate this nested message and replace with top level ChromeOsImage.
func (*ProvisionDutRequest_ChromeOSImage) Descriptor() ([]byte, []int)
func (m *ProvisionDutRequest_ChromeOSImage) GetGsPathPrefix() string
func (m *ProvisionDutRequest_ChromeOSImage) GetPathOneof() isProvisionDutRequest_ChromeOSImage_PathOneof
func (*ProvisionDutRequest_ChromeOSImage) ProtoMessage()
func (m *ProvisionDutRequest_ChromeOSImage) Reset()
func (m *ProvisionDutRequest_ChromeOSImage) String() string
func (m *ProvisionDutRequest_ChromeOSImage) XXX_DiscardUnknown()
func (m *ProvisionDutRequest_ChromeOSImage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (m *ProvisionDutRequest_ChromeOSImage) XXX_Merge(src proto.Message)
func (*ProvisionDutRequest_ChromeOSImage) XXX_OneofWrappers() []interface{}
XXX_OneofWrappers is for the internal use of the proto package.
func (m *ProvisionDutRequest_ChromeOSImage) XXX_Size() int
func (m *ProvisionDutRequest_ChromeOSImage) XXX_Unmarshal(b []byte) error
type ProvisionDutRequest_ChromeOSImage_GsPathPrefix struct { GsPathPrefix string `protobuf:"bytes,1,opt,name=gs_path_prefix,json=gsPathPrefix,proto3,oneof"` }
type ProvisionDutRequest_DLCSpec struct { // id is the DLC ID which is a unique identifier. // The DLC ID must follow a specific format that can be found in the DLC // developer doc below. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
Reference DLCs developer documentation: https://source.corp.google.com/chromeos_public/src/platform2/dlcservice/docs/developer.md
func (*ProvisionDutRequest_DLCSpec) Descriptor() ([]byte, []int)
func (m *ProvisionDutRequest_DLCSpec) GetId() string
func (*ProvisionDutRequest_DLCSpec) ProtoMessage()
func (m *ProvisionDutRequest_DLCSpec) Reset()
func (m *ProvisionDutRequest_DLCSpec) String() string
func (m *ProvisionDutRequest_DLCSpec) XXX_DiscardUnknown()
func (m *ProvisionDutRequest_DLCSpec) XXX_Merge(src proto.Message)
func (m *ProvisionDutRequest_DLCSpec) XXX_Size() int
func (m *ProvisionDutRequest_DLCSpec) XXX_Unmarshal(b []byte) error
type ProvisionDutResponse struct { XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*ProvisionDutResponse) Descriptor() ([]byte, []int)
func (*ProvisionDutResponse) ProtoMessage()
func (m *ProvisionDutResponse) Reset()
func (m *ProvisionDutResponse) String() string
func (m *ProvisionDutResponse) XXX_DiscardUnknown()
func (m *ProvisionDutResponse) XXX_Merge(src proto.Message)
func (m *ProvisionDutResponse) XXX_Size() int
func (m *ProvisionDutResponse) XXX_Unmarshal(b []byte) error
When the status code is other than OK, details in Status message should be parsed for ErrorInfo message with the following Reasons as the reason.
const ( // status code: INVALID_ARGUMENT ProvisionDutResponse_REASON_INVALID_REQUEST ProvisionDutResponse_Reason = 0 // status code: FAILED_PRECONDITION ProvisionDutResponse_REASON_DUT_UNREACHABLE_PRE_PROVISION ProvisionDutResponse_Reason = 1 // status code: FAILED_PRECONDITION ProvisionDutResponse_REASON_DOWNLOADING_IMAGE_FAILED ProvisionDutResponse_Reason = 2 // status code: DEADLINE_EXCEEDED ProvisionDutResponse_REASON_PROVISIONING_TIMEDOUT ProvisionDutResponse_Reason = 3 // status code: ABORTED ProvisionDutResponse_REASON_PROVISIONING_FAILED ProvisionDutResponse_Reason = 4 // status code: ABORTED ProvisionDutResponse_REASON_DUT_UNREACHABLE_POST_PROVISION ProvisionDutResponse_Reason = 5 )
func (ProvisionDutResponse_Reason) EnumDescriptor() ([]byte, []int)
func (x ProvisionDutResponse_Reason) String() string
type SetDutPowerSupplyRequest struct { Dut string `protobuf:"bytes,1,opt,name=dut,proto3" json:"dut,omitempty"` State SetDutPowerSupplyRequest_State `protobuf:"varint,2,opt,name=state,proto3,enum=chromiumos.config.api.test.tls.SetDutPowerSupplyRequest_State" json:"state,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*SetDutPowerSupplyRequest) Descriptor() ([]byte, []int)
func (m *SetDutPowerSupplyRequest) GetDut() string
func (m *SetDutPowerSupplyRequest) GetState() SetDutPowerSupplyRequest_State
func (*SetDutPowerSupplyRequest) ProtoMessage()
func (m *SetDutPowerSupplyRequest) Reset()
func (m *SetDutPowerSupplyRequest) String() string
func (m *SetDutPowerSupplyRequest) XXX_DiscardUnknown()
func (m *SetDutPowerSupplyRequest) XXX_Merge(src proto.Message)
func (m *SetDutPowerSupplyRequest) XXX_Size() int
func (m *SetDutPowerSupplyRequest) XXX_Unmarshal(b []byte) error
const ( SetDutPowerSupplyRequest_STATE_UNKNOWN SetDutPowerSupplyRequest_State = 0 SetDutPowerSupplyRequest_STATE_ON SetDutPowerSupplyRequest_State = 1 SetDutPowerSupplyRequest_STATE_OFF SetDutPowerSupplyRequest_State = 2 )
func (SetDutPowerSupplyRequest_State) EnumDescriptor() ([]byte, []int)
func (x SetDutPowerSupplyRequest_State) String() string
type SetDutPowerSupplyResponse struct { Status SetDutPowerSupplyResponse_Status `protobuf:"varint,1,opt,name=status,proto3,enum=chromiumos.config.api.test.tls.SetDutPowerSupplyResponse_Status" json:"status,omitempty"` // reason provides human friendly context for any error status. Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` }
func (*SetDutPowerSupplyResponse) Descriptor() ([]byte, []int)
func (m *SetDutPowerSupplyResponse) GetReason() string
func (m *SetDutPowerSupplyResponse) GetStatus() SetDutPowerSupplyResponse_Status
func (*SetDutPowerSupplyResponse) ProtoMessage()
func (m *SetDutPowerSupplyResponse) Reset()
func (m *SetDutPowerSupplyResponse) String() string
func (m *SetDutPowerSupplyResponse) XXX_DiscardUnknown()
func (m *SetDutPowerSupplyResponse) XXX_Merge(src proto.Message)
func (m *SetDutPowerSupplyResponse) XXX_Size() int
func (m *SetDutPowerSupplyResponse) XXX_Unmarshal(b []byte) error
const ( SetDutPowerSupplyResponse_STATUS_UNKNOWN SetDutPowerSupplyResponse_Status = 0 SetDutPowerSupplyResponse_STATUS_OK SetDutPowerSupplyResponse_Status = 1 // STATUS_BAD_DUT indicates that the DUT is not known, // or the caller does not have access to it. SetDutPowerSupplyResponse_STATUS_BAD_DUT SetDutPowerSupplyResponse_Status = 2 // STATUS_BAD_REQUEST indicates that the request was invalid, // e.g., passing an invalid state. SetDutPowerSupplyResponse_STATUS_BAD_REQUEST SetDutPowerSupplyResponse_Status = 3 SetDutPowerSupplyResponse_STATUS_NO_RPM SetDutPowerSupplyResponse_Status = 4 SetDutPowerSupplyResponse_STATUS_RPM_ERROR SetDutPowerSupplyResponse_Status = 5 )
func (SetDutPowerSupplyResponse_Status) EnumDescriptor() ([]byte, []int)
func (x SetDutPowerSupplyResponse_Status) String() string
type UnimplementedCommonServer struct { }
UnimplementedCommonServer can be embedded to have forward compatible implementations.
func (*UnimplementedCommonServer) CreateFakeOmaha(ctx context.Context, req *CreateFakeOmahaRequest) (*FakeOmaha, error)
func (*UnimplementedCommonServer) DeleteFakeOmaha(ctx context.Context, req *DeleteFakeOmahaRequest) (*empty.Empty, error)
func (*UnimplementedCommonServer) ExecDutCommand(req *ExecDutCommandRequest, srv Common_ExecDutCommandServer) error
func (*UnimplementedCommonServer) FetchCrashes(req *FetchCrashesRequest, srv Common_FetchCrashesServer) error
func (*UnimplementedCommonServer) ProvisionDut(ctx context.Context, req *ProvisionDutRequest) (*longrunning.Operation, error)
type UnimplementedWiringServer struct { }
UnimplementedWiringServer can be embedded to have forward compatible implementations.
func (*UnimplementedWiringServer) CacheForDut(ctx context.Context, req *CacheForDutRequest) (*longrunning.Operation, error)
func (*UnimplementedWiringServer) CallServoXmlRpc(ctx context.Context, req *CallServoXmlRpcRequest) (*CallServoXmlRpcResponse, error)
func (*UnimplementedWiringServer) ExposePortToDut(ctx context.Context, req *ExposePortToDutRequest) (*ExposePortToDutResponse, error)
func (*UnimplementedWiringServer) OpenDutPort(ctx context.Context, req *OpenDutPortRequest) (*OpenDutPortResponse, error)
func (*UnimplementedWiringServer) SetDutPowerSupply(ctx context.Context, req *SetDutPowerSupplyRequest) (*SetDutPowerSupplyResponse, error)
type WiringClient interface { // Open a port on the DUT and return an address which the client can // use to connect to the port on the DUT. // The TLE SHOULD attempt to keep this address-to-port connection open for // the duration of the RTD's runtime. // The connection is not restarted if it is interrupted. // // If the connection from a previous call with the same arguments is // still open, this RPC SHOULD do nothing and return the same // response. // If the previous connection was closed, the implementation SHOULD // attempt to rebind and return the same address. // If the implementation lost and cannot reobtain the previous // address, it MAY return a new address. // // This RPC does NOT ensure that there is a service running on the // DUT for the given port. // A service running on the given port MUST NOT required for this RPC // to succeed. // It is not specified whether this RPC will open the given port in // the DUT's firewall, if the DUT has a firewall. OpenDutPort(ctx context.Context, in *OpenDutPortRequest, opts ...grpc.CallOption) (*OpenDutPortResponse, error) // SetDutPowerSupply sets the connected power state for the DUT. It is // the caller's responsibility to wait for the effects of the call // to propagate, e.g. waiting in between calls to set the power OFF // and ON. // // EXPERIMENTAL SetDutPowerSupply(ctx context.Context, in *SetDutPowerSupplyRequest, opts ...grpc.CallOption) (*SetDutPowerSupplyResponse, error) // CacheForDut caches some data to be accessible for the DUT. // This will be made available to the DUT via a returned URL. // The implementation MUST ensure the returned URL is usable at least for the // lifetime of the RTD invocation. CacheForDut(ctx context.Context, in *CacheForDutRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) // CallServoXmlRpc performs an XML-RPC call against the servo connected to a // DUT. // // This RPC mirrors the XML-RPC specification (http://xmlrpc.com/spec.md). // // EXPERIMENTAL CallServoXmlRpc(ctx context.Context, in *CallServoXmlRpcRequest, opts ...grpc.CallOption) (*CallServoXmlRpcResponse, error) // ExposePortToDut exposes an RTD port to the specified DUT. // // The TLE SHOULD attempt to keep this address-to-port connection open for // the duration of the RTD's runtime. // The connection is not restarted if it is interrupted. // By default, the implementation MAY expose a port that cannot persist // across DUT reboots. // By default, the implementation MAY use 'localhost' as the exposed address. ExposePortToDut(ctx context.Context, in *ExposePortToDutRequest, opts ...grpc.CallOption) (*ExposePortToDutResponse, error) }
WiringClient is the client API for Wiring service.
For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
func NewWiringClient(cc *grpc.ClientConn) WiringClient
type WiringServer interface { // Open a port on the DUT and return an address which the client can // use to connect to the port on the DUT. // The TLE SHOULD attempt to keep this address-to-port connection open for // the duration of the RTD's runtime. // The connection is not restarted if it is interrupted. // // If the connection from a previous call with the same arguments is // still open, this RPC SHOULD do nothing and return the same // response. // If the previous connection was closed, the implementation SHOULD // attempt to rebind and return the same address. // If the implementation lost and cannot reobtain the previous // address, it MAY return a new address. // // This RPC does NOT ensure that there is a service running on the // DUT for the given port. // A service running on the given port MUST NOT required for this RPC // to succeed. // It is not specified whether this RPC will open the given port in // the DUT's firewall, if the DUT has a firewall. OpenDutPort(context.Context, *OpenDutPortRequest) (*OpenDutPortResponse, error) // SetDutPowerSupply sets the connected power state for the DUT. It is // the caller's responsibility to wait for the effects of the call // to propagate, e.g. waiting in between calls to set the power OFF // and ON. // // EXPERIMENTAL SetDutPowerSupply(context.Context, *SetDutPowerSupplyRequest) (*SetDutPowerSupplyResponse, error) // CacheForDut caches some data to be accessible for the DUT. // This will be made available to the DUT via a returned URL. // The implementation MUST ensure the returned URL is usable at least for the // lifetime of the RTD invocation. CacheForDut(context.Context, *CacheForDutRequest) (*longrunning.Operation, error) // CallServoXmlRpc performs an XML-RPC call against the servo connected to a // DUT. // // This RPC mirrors the XML-RPC specification (http://xmlrpc.com/spec.md). // // EXPERIMENTAL CallServoXmlRpc(context.Context, *CallServoXmlRpcRequest) (*CallServoXmlRpcResponse, error) // ExposePortToDut exposes an RTD port to the specified DUT. // // The TLE SHOULD attempt to keep this address-to-port connection open for // the duration of the RTD's runtime. // The connection is not restarted if it is interrupted. // By default, the implementation MAY expose a port that cannot persist // across DUT reboots. // By default, the implementation MAY use 'localhost' as the exposed address. ExposePortToDut(context.Context, *ExposePortToDutRequest) (*ExposePortToDutResponse, error) }
WiringServer is the server API for Wiring service.
Path | Synopsis |
---|---|
dependencies/longrunning |
Package tls imports 10 packages (graph) and is imported by 6 packages. Updated 2021-01-19. Refresh now. Tools for package owners.