# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/config/api/test/rtd/v1/invocation.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from chromiumos.config.api.test.rtd.v1 import progress_pb2 as chromiumos_dot_config_dot_api_dot_test_dot_rtd_dot_v1_dot_progress__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='chromiumos/config/api/test/rtd/v1/invocation.proto',
  package='chromiumos.config.api.test.rtd.v1',
  syntax='proto3',
  serialized_options=_b('Z8go.chromium.org/chromiumos/config/go/api/test/rtd/v1;rtd'),
  serialized_pb=_b('\n2chromiumos/config/api/test/rtd/v1/invocation.proto\x12!chromiumos.config.api.test.rtd.v1\x1a\x30\x63hromiumos/config/api/test/rtd/v1/progress.proto\"\x87\x03\n\nInvocation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12`\n\x1bprogress_sink_client_config\x18\x02 \x01(\x0b\x32;.chromiumos.config.api.test.rtd.v1.ProgressSinkClientConfig\x12T\n\x18test_lab_services_config\x18\x03 \x01(\x0b\x32\x32.chromiumos.config.api.test.rtd.v1.TLSClientConfig\x12\x34\n\x04\x64uts\x18\x04 \x03(\x0b\x32&.chromiumos.config.api.test.rtd.v1.DUT\x12\x0c\n\x04test\x18\x05 \x01(\t\x12N\n\x0b\x65nvironment\x18\x06 \x01(\x0b\x32\x39.chromiumos.config.api.test.rtd.v1.Invocation.Environment\x1a\x1f\n\x0b\x45nvironment\x12\x10\n\x08work_dir\x18\x01 \x01(\t\"\x1b\n\x03\x44UT\x12\x14\n\x0ctls_dut_name\x18\x01 \x01(\t\"_\n\x0fTLSClientConfig\x12\x13\n\x0btls_address\x18\x01 \x01(\t\x12\x10\n\x08tls_port\x18\x02 \x01(\x05\x12\x13\n\x0btlw_address\x18\x03 \x01(\t\x12\x10\n\x08tlw_port\x18\x04 \x01(\x05\x42:Z8go.chromium.org/chromiumos/config/go/api/test/rtd/v1;rtdb\x06proto3')
  ,
  dependencies=[chromiumos_dot_config_dot_api_dot_test_dot_rtd_dot_v1_dot_progress__pb2.DESCRIPTOR,])




_INVOCATION_ENVIRONMENT = _descriptor.Descriptor(
  name='Environment',
  full_name='chromiumos.config.api.test.rtd.v1.Invocation.Environment',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='work_dir', full_name='chromiumos.config.api.test.rtd.v1.Invocation.Environment.work_dir', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=500,
  serialized_end=531,
)

_INVOCATION = _descriptor.Descriptor(
  name='Invocation',
  full_name='chromiumos.config.api.test.rtd.v1.Invocation',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='name', full_name='chromiumos.config.api.test.rtd.v1.Invocation.name', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='progress_sink_client_config', full_name='chromiumos.config.api.test.rtd.v1.Invocation.progress_sink_client_config', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='test_lab_services_config', full_name='chromiumos.config.api.test.rtd.v1.Invocation.test_lab_services_config', index=2,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='duts', full_name='chromiumos.config.api.test.rtd.v1.Invocation.duts', index=3,
      number=4, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='test', full_name='chromiumos.config.api.test.rtd.v1.Invocation.test', index=4,
      number=5, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='environment', full_name='chromiumos.config.api.test.rtd.v1.Invocation.environment', index=5,
      number=6, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[_INVOCATION_ENVIRONMENT, ],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=140,
  serialized_end=531,
)


_DUT = _descriptor.Descriptor(
  name='DUT',
  full_name='chromiumos.config.api.test.rtd.v1.DUT',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='tls_dut_name', full_name='chromiumos.config.api.test.rtd.v1.DUT.tls_dut_name', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=533,
  serialized_end=560,
)


_TLSCLIENTCONFIG = _descriptor.Descriptor(
  name='TLSClientConfig',
  full_name='chromiumos.config.api.test.rtd.v1.TLSClientConfig',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='tls_address', full_name='chromiumos.config.api.test.rtd.v1.TLSClientConfig.tls_address', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='tls_port', full_name='chromiumos.config.api.test.rtd.v1.TLSClientConfig.tls_port', index=1,
      number=2, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='tlw_address', full_name='chromiumos.config.api.test.rtd.v1.TLSClientConfig.tlw_address', index=2,
      number=3, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='tlw_port', full_name='chromiumos.config.api.test.rtd.v1.TLSClientConfig.tlw_port', index=3,
      number=4, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      serialized_options=None, file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=562,
  serialized_end=657,
)

_INVOCATION_ENVIRONMENT.containing_type = _INVOCATION
_INVOCATION.fields_by_name['progress_sink_client_config'].message_type = chromiumos_dot_config_dot_api_dot_test_dot_rtd_dot_v1_dot_progress__pb2._PROGRESSSINKCLIENTCONFIG
_INVOCATION.fields_by_name['test_lab_services_config'].message_type = _TLSCLIENTCONFIG
_INVOCATION.fields_by_name['duts'].message_type = _DUT
_INVOCATION.fields_by_name['environment'].message_type = _INVOCATION_ENVIRONMENT
DESCRIPTOR.message_types_by_name['Invocation'] = _INVOCATION
DESCRIPTOR.message_types_by_name['DUT'] = _DUT
DESCRIPTOR.message_types_by_name['TLSClientConfig'] = _TLSCLIENTCONFIG
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

Invocation = _reflection.GeneratedProtocolMessageType('Invocation', (_message.Message,), dict(

  Environment = _reflection.GeneratedProtocolMessageType('Environment', (_message.Message,), dict(
    DESCRIPTOR = _INVOCATION_ENVIRONMENT,
    __module__ = 'chromiumos.config.api.test.rtd.v1.invocation_pb2'
    # @@protoc_insertion_point(class_scope:chromiumos.config.api.test.rtd.v1.Invocation.Environment)
    ))
  ,
  DESCRIPTOR = _INVOCATION,
  __module__ = 'chromiumos.config.api.test.rtd.v1.invocation_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.config.api.test.rtd.v1.Invocation)
  ))
_sym_db.RegisterMessage(Invocation)
_sym_db.RegisterMessage(Invocation.Environment)

DUT = _reflection.GeneratedProtocolMessageType('DUT', (_message.Message,), dict(
  DESCRIPTOR = _DUT,
  __module__ = 'chromiumos.config.api.test.rtd.v1.invocation_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.config.api.test.rtd.v1.DUT)
  ))
_sym_db.RegisterMessage(DUT)

TLSClientConfig = _reflection.GeneratedProtocolMessageType('TLSClientConfig', (_message.Message,), dict(
  DESCRIPTOR = _TLSCLIENTCONFIG,
  __module__ = 'chromiumos.config.api.test.rtd.v1.invocation_pb2'
  # @@protoc_insertion_point(class_scope:chromiumos.config.api.test.rtd.v1.TLSClientConfig)
  ))
_sym_db.RegisterMessage(TLSClientConfig)


DESCRIPTOR._options = None
# @@protoc_insertion_point(module_scope)
