blob: e557fcdd6e60602ec3816e83558bcb8c7a094e16 [file] [log] [blame]
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: test/metadata/v1/metadata.proto
// This package contains the definitions for the test metadata generated as
// build artifacts for all supported tests.
//
// This metadata is used for test execution requests, scheduling decisions and
// results analytics in various Test Lab Environments.
//
// Metadata MUST be generated for all tests in supported Remote Test Drivers and
// MUST be respected in all Test Lab Environments.
package metadata
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
_struct "github.com/golang/protobuf/ptypes/struct"
api "go.chromium.org/chromiumos/config/go/api"
lab "go.chromium.org/chromiumos/infra/proto/go/lab"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// The test metadata specification.
//
// Test metadata MUST be generated for each Remote Test Driver as one of the
// test artifacts generated from Chrome OS build system.
type Specification struct {
// A set of Remote Test Driver packages.
//
// In practice, a complete specification of all known Remote Test Drivers may
// consist of multiple Specification instances. In that case the test names
// MUST be unique across different Specification instances.
//
// Unlike tests, a RemoteTestDriver (identified by its name) may be specified
// multiple times, in a single Specification or across different Specification
// instances. In that case, all fields except the list of tests MUST be
// identical across these RemoteTestDriver instances. The list of tests across
// these instances will be concatenated together.
RemoteTestDrivers []*RemoteTestDriver `protobuf:"bytes,1,rep,name=remote_test_drivers,json=remoteTestDrivers,proto3" json:"remote_test_drivers,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Specification) Reset() { *m = Specification{} }
func (m *Specification) String() string { return proto.CompactTextString(m) }
func (*Specification) ProtoMessage() {}
func (*Specification) Descriptor() ([]byte, []int) {
return fileDescriptor_476fe0680946cd89, []int{0}
}
func (m *Specification) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Specification.Unmarshal(m, b)
}
func (m *Specification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Specification.Marshal(b, m, deterministic)
}
func (m *Specification) XXX_Merge(src proto.Message) {
xxx_messageInfo_Specification.Merge(m, src)
}
func (m *Specification) XXX_Size() int {
return xxx_messageInfo_Specification.Size(m)
}
func (m *Specification) XXX_DiscardUnknown() {
xxx_messageInfo_Specification.DiscardUnknown(m)
}
var xxx_messageInfo_Specification proto.InternalMessageInfo
func (m *Specification) GetRemoteTestDrivers() []*RemoteTestDriver {
if m != nil {
return m.RemoteTestDrivers
}
return nil
}
// go/cros-rtd-spec describes the Remote Test Driver bootstrapping flow inside
// the Remote Test Server. Remote Test Driver configures the bootstrapping flow
// for a test invocation.
type RemoteTestDriver struct {
// Globally unique name for a Remote Test Driver package.
//
//
// MUST be a valid resource per https://aip.dev/122.
//
// Pattern: remoteTestDrivers/{remoteTestDriver}
//
// The two most commonly used Remote Test Drivers are named
// - remoteTestDrivers/tauto
// - remoteTestDrivers/tast
// and contain the common public tests written in the Tauto and Tast framework
// respectively.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// A container image containing all the required dependencies and other build
// artifacts required for test invocations.
//
// Test Lab Environments SHOULD fail with an error indicating that the request
// was invalid if the image fails to be found for a test invocation.
Image *BuildArtifact `protobuf:"bytes,2,opt,name=image,proto3" json:"image,omitempty"`
// Command to invoke the Remote Test Driver inside `image`.
//
// Remote Test Servers MUST run `command` as
// $ ${command} -input_json ${input_json}
// where ${command} and ${input_json} are absolute paths inside the container.
//
// Remote Test Servers MUST populate `input_json` with a JSON encoded
// test.invocation.Request message.
Command string `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"`
// Metadata for the smallest schedulable test units.
Tests []*Test `protobuf:"bytes,4,rep,name=tests,proto3" json:"tests,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *RemoteTestDriver) Reset() { *m = RemoteTestDriver{} }
func (m *RemoteTestDriver) String() string { return proto.CompactTextString(m) }
func (*RemoteTestDriver) ProtoMessage() {}
func (*RemoteTestDriver) Descriptor() ([]byte, []int) {
return fileDescriptor_476fe0680946cd89, []int{1}
}
func (m *RemoteTestDriver) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RemoteTestDriver.Unmarshal(m, b)
}
func (m *RemoteTestDriver) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RemoteTestDriver.Marshal(b, m, deterministic)
}
func (m *RemoteTestDriver) XXX_Merge(src proto.Message) {
xxx_messageInfo_RemoteTestDriver.Merge(m, src)
}
func (m *RemoteTestDriver) XXX_Size() int {
return xxx_messageInfo_RemoteTestDriver.Size(m)
}
func (m *RemoteTestDriver) XXX_DiscardUnknown() {
xxx_messageInfo_RemoteTestDriver.DiscardUnknown(m)
}
var xxx_messageInfo_RemoteTestDriver proto.InternalMessageInfo
func (m *RemoteTestDriver) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *RemoteTestDriver) GetImage() *BuildArtifact {
if m != nil {
return m.Image
}
return nil
}
func (m *RemoteTestDriver) GetCommand() string {
if m != nil {
return m.Command
}
return ""
}
func (m *RemoteTestDriver) GetTests() []*Test {
if m != nil {
return m.Tests
}
return nil
}
// A Chrome OS build artifact required for test execution.
type BuildArtifact struct {
// All build artifacts are assumed to be archived in some common directory
// root. `relative_path` is the relative path inside the root archive
// directory.
//
// Infrastructure Test Lab Environment: Chrome OS Continuous Integration
// builders archive build artifacts to a path on Google Storage. The Test
// Platform requests include a reference to the root archival path.
// e.g.,
// * The builder archives all build artifacts to
// gs://chromeos-image-archive/link-release/R64-0.0.0.0/
// * Test Platform request includes this archival path.
// * `relative_path` is set to tast/mighty.bin
// * Then, the full path to the artifact is
// gs://chromeos-image-archive/link-release/R64-0.0.0.0/tast/mighty.bin
//
// Developer Test Lab Environment: For developer flow outside of the
// infrastructure, it is assumed that the build artifacts are available at a
// local path with the same directory layout as the Google Storage archival.
// e.g.,
// * Local build copies all artifacts to /tmp/cbuildbot/archive/
// * Local tooling includes a reference to this path.
// * `relative_path` is set to tauto/ssp.bin
// * Then, the full path to the artifact is
// /tmp/cbuildbot/archive/tauto/ssp.bin
RelativePath string `protobuf:"bytes,1,opt,name=relative_path,json=relativePath,proto3" json:"relative_path,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BuildArtifact) Reset() { *m = BuildArtifact{} }
func (m *BuildArtifact) String() string { return proto.CompactTextString(m) }
func (*BuildArtifact) ProtoMessage() {}
func (*BuildArtifact) Descriptor() ([]byte, []int) {
return fileDescriptor_476fe0680946cd89, []int{2}
}
func (m *BuildArtifact) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildArtifact.Unmarshal(m, b)
}
func (m *BuildArtifact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BuildArtifact.Marshal(b, m, deterministic)
}
func (m *BuildArtifact) XXX_Merge(src proto.Message) {
xxx_messageInfo_BuildArtifact.Merge(m, src)
}
func (m *BuildArtifact) XXX_Size() int {
return xxx_messageInfo_BuildArtifact.Size(m)
}
func (m *BuildArtifact) XXX_DiscardUnknown() {
xxx_messageInfo_BuildArtifact.DiscardUnknown(m)
}
var xxx_messageInfo_BuildArtifact proto.InternalMessageInfo
func (m *BuildArtifact) GetRelativePath() string {
if m != nil {
return m.RelativePath
}
return ""
}
// The smallest schedulable test unit.
//
// A Test is an atomic schdulable unit. In particular, it is not possible to
// modify the behaviour of a Remote Test Driver execution for a given Test by
// supplying test arguments. See the documentation of
// test.metadata.v1.Informational on how paramaterized tests may be in light of
// this restriction.
//
// A single test platform request or Remote Test Driver invocation may contain
// multiple instances of multiple Tests, but each instance of a Test MUST
// correspond to exactly one reported result.
//
// See Also:
// Test Platform request: TODO(pprabhu)
// Remote Test Driver invocation request: test/rtd/invocation.proto
// Remote Test Driver progress API: test/rtd/progress.proto
type Test struct {
// Globally unique name for this test.
//
// MUST be a valid resource per https://aip.dev/122.
//
// Pattern: remoteTestDrivers/{remoteTestDriver}/tests/{test}
// where {remoteTestDriver} is the Remote Test Driver package that contains
// this test.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Attributes are used to include tests in test plans.
//
// See Also:
// Test plans: test/plan/plan.proto
Attributes []*Attribute `protobuf:"bytes,2,rep,name=attributes,proto3" json:"attributes,omitempty"`
// Required condition to be met for each Device Under Test targeted by this
// test.
//
// Condition enforcement is an optional feature for test scheduling, i.e.,
// some Test Lab Environments may ignore conditions entirely.
//
// May be specified multiple times for tests that target more than one Device
// Under Test, once per required device.
Conditions []*DUTCondition `protobuf:"bytes,3,rep,name=conditions,proto3" json:"conditions,omitempty"`
// Metadata about the test that doesn't affect scheduling or execution.
Informational *Informational `protobuf:"bytes,4,opt,name=informational,proto3" json:"informational,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Test) Reset() { *m = Test{} }
func (m *Test) String() string { return proto.CompactTextString(m) }
func (*Test) ProtoMessage() {}
func (*Test) Descriptor() ([]byte, []int) {
return fileDescriptor_476fe0680946cd89, []int{3}
}
func (m *Test) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Test.Unmarshal(m, b)
}
func (m *Test) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Test.Marshal(b, m, deterministic)
}
func (m *Test) XXX_Merge(src proto.Message) {
xxx_messageInfo_Test.Merge(m, src)
}
func (m *Test) XXX_Size() int {
return xxx_messageInfo_Test.Size(m)
}
func (m *Test) XXX_DiscardUnknown() {
xxx_messageInfo_Test.DiscardUnknown(m)
}
var xxx_messageInfo_Test proto.InternalMessageInfo
func (m *Test) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *Test) GetAttributes() []*Attribute {
if m != nil {
return m.Attributes
}
return nil
}
func (m *Test) GetConditions() []*DUTCondition {
if m != nil {
return m.Conditions
}
return nil
}
func (m *Test) GetInformational() *Informational {
if m != nil {
return m.Informational
}
return nil
}
// Attributes used to include tests in test plans.
type Attribute struct {
// Opaque name for this attribute.
//
// Value MUST be valid resource names per https://aip.dev/122.
//
// MUST NOT be interpreted by Test Lab Environments.
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 (m *Attribute) Reset() { *m = Attribute{} }
func (m *Attribute) String() string { return proto.CompactTextString(m) }
func (*Attribute) ProtoMessage() {}
func (*Attribute) Descriptor() ([]byte, []int) {
return fileDescriptor_476fe0680946cd89, []int{4}
}
func (m *Attribute) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Attribute.Unmarshal(m, b)
}
func (m *Attribute) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Attribute.Marshal(b, m, deterministic)
}
func (m *Attribute) XXX_Merge(src proto.Message) {
xxx_messageInfo_Attribute.Merge(m, src)
}
func (m *Attribute) XXX_Size() int {
return xxx_messageInfo_Attribute.Size(m)
}
func (m *Attribute) XXX_DiscardUnknown() {
xxx_messageInfo_Attribute.DiscardUnknown(m)
}
var xxx_messageInfo_Attribute proto.InternalMessageInfo
func (m *Attribute) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// Condition to be met for each Device Under Test targeted by a test.
type DUTCondition struct {
// A Common Expression Language (CEL) expression to specify DUT conditions.
//
// Test Lab Environments may optionally support targeting test requests to
// Device Under Test based on DUTConditions. If this feature is supported, the
// Test Lab Environment MUST interpret `expression` in the scope of the
// protobuf message DUTCondition.Scope as defined below.
//
// The full CEL spec can be found at https://github.com/google/cel-spec.
// This API only currently only supports a small sub-set of the CEL features,
// as described here. Test Lab Environments SHOULD validate the expression and
// reject use of unsupported features.
//
// TODO(crbug.com/1051689) Add reference to the metadata validator package.
//
// ## Examples
//
// Typical instructive examples of expressions are:
//
// - A specific characteristic for a hardware feature, e.g.:
// scope.hardware_topology.screen.milliinch.value == 14000
// - A specific topology for a hardware feature, e.g.:
// scope.hardware_topology.form_factor.id == "fancy_clamshell"
// - Existence of a hardware feature, e.g.:
// scope.hardware_features.lte == scope.hardware_features.PRESENT
// - Exclude certain hardware topologies, e.g.:
// scope.hardware_topology.stylus.id != "pencil"
//
// ## CEL support
//
// Current support for `expression` evaluation is very restricted due to
// limitations in the scheduling platform used by Test Platform. Specifying
// the conditions in CEL will allow gradual lifting of support restrictions.
//
// As this API matures, features will be added to the scheduling
// infrastructure of Test Platform and restrictions here will be lifted based
// on requirements collected from test authors. See milestones in
// go/cros-f20-plan for expected feature iterations.
//
// ### Evaluation context
//
// In general, a CEL expression must be evaluated in some context that
// provides the basic bindings for name resolution.
//
// In this case, `expression` MUST be evaluated in a context that contains
//
// - A variable 'scope' of type DUTCondition.Scope. This variable contains the
// information about a particular Device Under Test being tested for
// acceptance via `expression`.
// - Protobuf definitions in this git project (i.e., rooted at infra/proto/).
//
// ### Syntax
//
// See full syntax definition at
// https://github.com/google/cel-spec/blob/master/doc/langdef.md#syntax
//
// CEL standard syntax allows expressions that evaluate to errors (e.g.,
// syntax allows negation of lists, which has no semantics in CEL).
// Thus, this spec does not attempt to restrict the syntax, but specifies what
// operations are unsupported to aid metadata producers. Ultimately, the
// reference metadata validator is the authority on what expressions are
// allowed.
//
// Unsupported standard CEL semantics:
// - Binary arithmetic operations
// e.g.: +, *, /, % ...
// - Relational Operators beyond (in)equality are not supported.
// e.g.: (>, <, >=, <= ...)
// - Logical OR in expressions is not supported.
// e.g.: (a || b), !(a && b) ...
//
// ### Macros
//
// See full macro definition at
// https://github.com/google/cel-spec/blob/master/doc/langdef.md#macros
//
// Supported macros: has(), e.all()
// Unsupported macros: e.exists(), e.exists_one(), e.map(), e.filter()
//
// ### Standard functions
//
// See full list of standard definitions at
// https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions
//
// Most standard functions are not supported.
//
// - Supported operators: !_, -_, _!=_, _&&_, _=_, _[_]
// - All other operators are not supported.
// - All other standard functions are not supported. In particular take note:
// - size() is not supported.
// - string functions like endsWith() and contains() are not supported.
// - type conversions like int() and string() are not supported.
// - reflection with type(), null_type() and dyn() is not supported.
Expression string `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DUTCondition) Reset() { *m = DUTCondition{} }
func (m *DUTCondition) String() string { return proto.CompactTextString(m) }
func (*DUTCondition) ProtoMessage() {}
func (*DUTCondition) Descriptor() ([]byte, []int) {
return fileDescriptor_476fe0680946cd89, []int{5}
}
func (m *DUTCondition) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DUTCondition.Unmarshal(m, b)
}
func (m *DUTCondition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DUTCondition.Marshal(b, m, deterministic)
}
func (m *DUTCondition) XXX_Merge(src proto.Message) {
xxx_messageInfo_DUTCondition.Merge(m, src)
}
func (m *DUTCondition) XXX_Size() int {
return xxx_messageInfo_DUTCondition.Size(m)
}
func (m *DUTCondition) XXX_DiscardUnknown() {
xxx_messageInfo_DUTCondition.DiscardUnknown(m)
}
var xxx_messageInfo_DUTCondition proto.InternalMessageInfo
func (m *DUTCondition) GetExpression() string {
if m != nil {
return m.Expression
}
return ""
}
// Protocol buffer scope for interpretation of `expression`.
//
// Scope includes the Device Under Test features that can be targeted for test
// targeting.
type DUTCondition_Scope struct {
// Peripherals information about the lab deployment of the device.
Peripherals *lab.Peripherals `protobuf:"bytes,1,opt,name=peripherals,proto3" json:"peripherals,omitempty"`
// The relationship between topology and features is described at
// https://chromium.googlesource.com/chromiumos/config/+/master/proto/api/hardware_topology.md
HardwareTopology *api.HardwareTopology `protobuf:"bytes,2,opt,name=hardware_topology,json=hardwareTopology,proto3" json:"hardware_topology,omitempty"`
HardwareFeatures *api.HardwareFeatures `protobuf:"bytes,3,opt,name=hardware_features,json=hardwareFeatures,proto3" json:"hardware_features,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DUTCondition_Scope) Reset() { *m = DUTCondition_Scope{} }
func (m *DUTCondition_Scope) String() string { return proto.CompactTextString(m) }
func (*DUTCondition_Scope) ProtoMessage() {}
func (*DUTCondition_Scope) Descriptor() ([]byte, []int) {
return fileDescriptor_476fe0680946cd89, []int{5, 0}
}
func (m *DUTCondition_Scope) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DUTCondition_Scope.Unmarshal(m, b)
}
func (m *DUTCondition_Scope) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DUTCondition_Scope.Marshal(b, m, deterministic)
}
func (m *DUTCondition_Scope) XXX_Merge(src proto.Message) {
xxx_messageInfo_DUTCondition_Scope.Merge(m, src)
}
func (m *DUTCondition_Scope) XXX_Size() int {
return xxx_messageInfo_DUTCondition_Scope.Size(m)
}
func (m *DUTCondition_Scope) XXX_DiscardUnknown() {
xxx_messageInfo_DUTCondition_Scope.DiscardUnknown(m)
}
var xxx_messageInfo_DUTCondition_Scope proto.InternalMessageInfo
func (m *DUTCondition_Scope) GetPeripherals() *lab.Peripherals {
if m != nil {
return m.Peripherals
}
return nil
}
func (m *DUTCondition_Scope) GetHardwareTopology() *api.HardwareTopology {
if m != nil {
return m.HardwareTopology
}
return nil
}
func (m *DUTCondition_Scope) GetHardwareFeatures() *api.HardwareFeatures {
if m != nil {
return m.HardwareFeatures
}
return nil
}
// Contains metadata about the test that doesn't affect scheduling or execution.
type Informational struct {
// Contacts for ownership / flakiness notification etc.
Authors []*Contact `protobuf:"bytes,1,rep,name=authors,proto3" json:"authors,omitempty"`
// Machine readable test-specific information.
//
// Remote Test Drivers SHOULD include detailed information to aid analytics.
// For example, test authors may minimize code duplication by writing
// paramterized tests. Thus, multiple test metadata may refer to the
// same test implementation with different arguments. It is useful to include
// this information as details. An example for Tauto:
// {
// "test_project": "chromiumos/third_party/autotest",
// "control_file": "site_tests/dummy_Pass/control.stress",
// "args": {
// "run_count": 35
// }
// }
//
// This field MUST NOT be interpreted by the Test Lab Environments, but Remote
// Test Drivers can enrich analytics by using uniform stable schema for
// details across all their tests.
Details *_struct.Struct `protobuf:"bytes,2,opt,name=details,proto3" json:"details,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Informational) Reset() { *m = Informational{} }
func (m *Informational) String() string { return proto.CompactTextString(m) }
func (*Informational) ProtoMessage() {}
func (*Informational) Descriptor() ([]byte, []int) {
return fileDescriptor_476fe0680946cd89, []int{6}
}
func (m *Informational) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Informational.Unmarshal(m, b)
}
func (m *Informational) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Informational.Marshal(b, m, deterministic)
}
func (m *Informational) XXX_Merge(src proto.Message) {
xxx_messageInfo_Informational.Merge(m, src)
}
func (m *Informational) XXX_Size() int {
return xxx_messageInfo_Informational.Size(m)
}
func (m *Informational) XXX_DiscardUnknown() {
xxx_messageInfo_Informational.DiscardUnknown(m)
}
var xxx_messageInfo_Informational proto.InternalMessageInfo
func (m *Informational) GetAuthors() []*Contact {
if m != nil {
return m.Authors
}
return nil
}
func (m *Informational) GetDetails() *_struct.Struct {
if m != nil {
return m.Details
}
return nil
}
// Contact information of individuals or teams.
type Contact struct {
// Types that are valid to be assigned to Type:
// *Contact_Email
// *Contact_MdbGroup
Type isContact_Type `protobuf_oneof:"type"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Contact) Reset() { *m = Contact{} }
func (m *Contact) String() string { return proto.CompactTextString(m) }
func (*Contact) ProtoMessage() {}
func (*Contact) Descriptor() ([]byte, []int) {
return fileDescriptor_476fe0680946cd89, []int{7}
}
func (m *Contact) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Contact.Unmarshal(m, b)
}
func (m *Contact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Contact.Marshal(b, m, deterministic)
}
func (m *Contact) XXX_Merge(src proto.Message) {
xxx_messageInfo_Contact.Merge(m, src)
}
func (m *Contact) XXX_Size() int {
return xxx_messageInfo_Contact.Size(m)
}
func (m *Contact) XXX_DiscardUnknown() {
xxx_messageInfo_Contact.DiscardUnknown(m)
}
var xxx_messageInfo_Contact proto.InternalMessageInfo
type isContact_Type interface {
isContact_Type()
}
type Contact_Email struct {
Email string `protobuf:"bytes,1,opt,name=email,proto3,oneof"`
}
type Contact_MdbGroup struct {
MdbGroup string `protobuf:"bytes,2,opt,name=mdb_group,json=mdbGroup,proto3,oneof"`
}
func (*Contact_Email) isContact_Type() {}
func (*Contact_MdbGroup) isContact_Type() {}
func (m *Contact) GetType() isContact_Type {
if m != nil {
return m.Type
}
return nil
}
func (m *Contact) GetEmail() string {
if x, ok := m.GetType().(*Contact_Email); ok {
return x.Email
}
return ""
}
func (m *Contact) GetMdbGroup() string {
if x, ok := m.GetType().(*Contact_MdbGroup); ok {
return x.MdbGroup
}
return ""
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*Contact) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*Contact_Email)(nil),
(*Contact_MdbGroup)(nil),
}
}
func init() {
proto.RegisterType((*Specification)(nil), "test.metadata.v1.Specification")
proto.RegisterType((*RemoteTestDriver)(nil), "test.metadata.v1.RemoteTestDriver")
proto.RegisterType((*BuildArtifact)(nil), "test.metadata.v1.BuildArtifact")
proto.RegisterType((*Test)(nil), "test.metadata.v1.Test")
proto.RegisterType((*Attribute)(nil), "test.metadata.v1.Attribute")
proto.RegisterType((*DUTCondition)(nil), "test.metadata.v1.DUTCondition")
proto.RegisterType((*DUTCondition_Scope)(nil), "test.metadata.v1.DUTCondition.Scope")
proto.RegisterType((*Informational)(nil), "test.metadata.v1.Informational")
proto.RegisterType((*Contact)(nil), "test.metadata.v1.Contact")
}
func init() { proto.RegisterFile("test/metadata/v1/metadata.proto", fileDescriptor_476fe0680946cd89) }
var fileDescriptor_476fe0680946cd89 = []byte{
// 637 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x94, 0xdf, 0x6e, 0xd3, 0x30,
0x14, 0xc6, 0xc9, 0xd6, 0xae, 0xec, 0x74, 0x95, 0x3a, 0x23, 0x46, 0x18, 0xb0, 0x4d, 0x01, 0x89,
0x5d, 0x80, 0xa3, 0x75, 0x70, 0x35, 0x09, 0x69, 0xdd, 0x80, 0x71, 0x81, 0x34, 0x79, 0xe5, 0x86,
0x9b, 0xca, 0x49, 0x9c, 0xc4, 0x52, 0x12, 0x47, 0xb6, 0xd3, 0xb1, 0x37, 0xe1, 0x05, 0x78, 0x2d,
0x6e, 0x79, 0x0d, 0x14, 0x27, 0xe9, 0xd2, 0x3f, 0x88, 0x3b, 0xe7, 0xcb, 0xcf, 0x5f, 0x3e, 0xfb,
0x9c, 0x1c, 0x38, 0xd4, 0x4c, 0x69, 0x37, 0x65, 0x9a, 0x06, 0x54, 0x53, 0x77, 0x76, 0x32, 0x5f,
0xe3, 0x5c, 0x0a, 0x2d, 0xd0, 0xb0, 0x04, 0xf0, 0x5c, 0x9c, 0x9d, 0xec, 0x3f, 0x8f, 0x84, 0x88,
0x12, 0xe6, 0x9a, 0xf7, 0x5e, 0x11, 0xba, 0x4a, 0xcb, 0xc2, 0xd7, 0x15, 0xbf, 0xff, 0x38, 0xa1,
0x9e, 0x9b, 0x33, 0xc9, 0xf3, 0x98, 0x49, 0x9a, 0xa8, 0x5a, 0x7e, 0xeb, 0xc7, 0x52, 0xa4, 0xbc,
0x48, 0x85, 0x72, 0x7d, 0x91, 0x85, 0x3c, 0x72, 0x69, 0xce, 0xdd, 0x98, 0xca, 0xe0, 0x96, 0x4a,
0x36, 0xd5, 0x22, 0x17, 0x89, 0x88, 0xee, 0x6a, 0xfc, 0xd5, 0x7a, 0x7c, 0x91, 0x72, 0x7c, 0x18,
0xdc, 0xe4, 0xcc, 0xe7, 0x21, 0xf7, 0xa9, 0xe6, 0x22, 0x43, 0x04, 0x1e, 0x49, 0x96, 0x0a, 0xcd,
0xa6, 0x65, 0xea, 0x69, 0x20, 0xf9, 0x8c, 0x49, 0x65, 0x5b, 0x47, 0x9b, 0xc7, 0xfd, 0x91, 0x83,
0x97, 0x8f, 0x82, 0x89, 0x81, 0x27, 0x4c, 0xe9, 0x4b, 0x83, 0x92, 0x5d, 0xb9, 0xa4, 0x28, 0xe7,
0x97, 0x05, 0xc3, 0x65, 0x0e, 0x21, 0xe8, 0x64, 0x34, 0x65, 0xb6, 0x75, 0x64, 0x1d, 0x6f, 0x13,
0xb3, 0x46, 0xef, 0xa1, 0xcb, 0x53, 0x1a, 0x31, 0x7b, 0xe3, 0xc8, 0x3a, 0xee, 0x8f, 0x0e, 0x57,
0x3f, 0x37, 0x2e, 0x78, 0x12, 0x9c, 0x4b, 0xcd, 0x43, 0xea, 0x6b, 0x52, 0xd1, 0xc8, 0x86, 0x9e,
0x2f, 0xd2, 0x94, 0x66, 0x81, 0xbd, 0x69, 0xdc, 0x9a, 0x47, 0xf4, 0x06, 0xba, 0xa5, 0x85, 0xb2,
0x3b, 0x26, 0xff, 0xde, 0xaa, 0x61, 0x99, 0x88, 0x54, 0x90, 0xf3, 0x0e, 0x06, 0x0b, 0xfe, 0xe8,
0x25, 0x0c, 0x24, 0x4b, 0xa8, 0xe6, 0x33, 0x36, 0xcd, 0xa9, 0x8e, 0xeb, 0xb0, 0x3b, 0x8d, 0x78,
0x4d, 0x75, 0xec, 0xfc, 0xb6, 0xa0, 0x53, 0xba, 0xac, 0x3d, 0xd1, 0x19, 0x00, 0xd5, 0x5a, 0x72,
0xaf, 0xd0, 0x4c, 0xd9, 0x1b, 0x26, 0xc5, 0xb3, 0xd5, 0x14, 0xe7, 0x0d, 0x43, 0x5a, 0x38, 0xfa,
0x00, 0xe0, 0x8b, 0x2c, 0xe0, 0x65, 0x61, 0x94, 0xbd, 0x69, 0x36, 0x1f, 0xac, 0x6e, 0xbe, 0xfc,
0x36, 0xb9, 0x68, 0x30, 0xd2, 0xda, 0x81, 0x3e, 0xc2, 0x80, 0x67, 0xa1, 0x90, 0xa9, 0x29, 0x2d,
0x4d, 0xec, 0xce, 0xbf, 0xae, 0xf5, 0x4b, 0x1b, 0x23, 0x8b, 0xbb, 0x9c, 0x43, 0xd8, 0x9e, 0xe7,
0x5b, 0x77, 0x48, 0xe7, 0xe7, 0x06, 0xec, 0xb4, 0x43, 0xa0, 0x03, 0x00, 0xf6, 0x23, 0x97, 0x4c,
0x29, 0x2e, 0xb2, 0x1a, 0x6d, 0x29, 0xfb, 0x7f, 0x2c, 0xe8, 0xde, 0xf8, 0x22, 0x67, 0x68, 0x04,
0xfd, 0x56, 0xa7, 0x1b, 0xb4, 0x3f, 0x1a, 0xe2, 0x84, 0x7a, 0xf8, 0xfa, 0x5e, 0x27, 0x6d, 0x08,
0x4d, 0x60, 0x77, 0xa5, 0xe9, 0xeb, 0x8e, 0x79, 0x8d, 0xef, 0xbb, 0x1e, 0x57, 0x5d, 0x8f, 0x69,
0xce, 0xf1, 0x55, 0xcd, 0x4f, 0x6a, 0x9c, 0x0c, 0xe3, 0x25, 0x65, 0xc1, 0x35, 0x64, 0x54, 0x17,
0x92, 0x29, 0xd3, 0x4e, 0xff, 0x77, 0xfd, 0x54, 0xe3, 0xf7, 0xae, 0x8d, 0xe2, 0xdc, 0xc2, 0x60,
0xe1, 0x6e, 0xd1, 0x29, 0xf4, 0x68, 0xa1, 0x63, 0x31, 0xff, 0xa7, 0x9e, 0xae, 0x56, 0xe3, 0x42,
0x64, 0xba, 0x6c, 0xef, 0x86, 0x44, 0x27, 0xd0, 0x0b, 0x98, 0xa6, 0x3c, 0x51, 0xf5, 0x39, 0x9f,
0xe0, 0x6a, 0x82, 0xe0, 0x66, 0x82, 0xe0, 0x1b, 0x33, 0x41, 0x48, 0xc3, 0x39, 0x57, 0xd0, 0xab,
0x6d, 0xd0, 0x1e, 0x74, 0x59, 0x4a, 0x79, 0x52, 0x15, 0xe2, 0xea, 0x01, 0xa9, 0x1e, 0xd1, 0x0b,
0xd8, 0x4e, 0x03, 0x6f, 0x1a, 0x49, 0x51, 0xe4, 0xc6, 0xb7, 0x7c, 0xf7, 0x30, 0x0d, 0xbc, 0xcf,
0xa5, 0x32, 0xde, 0x82, 0x8e, 0xbe, 0xcb, 0xd9, 0x78, 0x32, 0x1e, 0x7c, 0xad, 0xc3, 0x5d, 0x97,
0x5f, 0xfb, 0x7e, 0x11, 0x89, 0xf9, 0x85, 0x60, 0x21, 0x23, 0xb7, 0x35, 0x69, 0x78, 0x16, 0x4a,
0x5a, 0xcd, 0x35, 0x37, 0x12, 0xee, 0xf2, 0x68, 0x3c, 0x6b, 0xd6, 0xde, 0x96, 0x61, 0x4e, 0xff,
0x06, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x73, 0x1d, 0x0f, 0x3e, 0x05, 0x00, 0x00,
}