# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: test_platform/side_effects/config.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()




DESCRIPTOR = _descriptor.FileDescriptor(
  name='test_platform/side_effects/config.proto',
  package='test_platform.side_effects',
  syntax='proto3',
  serialized_options=_b('ZDgo.chromium.org/chromiumos/infra/proto/go/test_platform/side_effects'),
  serialized_pb=_b('\n\'test_platform/side_effects/config.proto\x12\x1atest_platform.side_effects\"\x81\x01\n\tTKOConfig\x12\"\n\x0cproxy_socket\x18\x01 \x01(\tR\x0cproxy_socket\x12\x1e\n\nmysql_user\x18\x02 \x01(\tR\nmysql_user\x12\x30\n\x13mysql_password_file\x18\x03 \x01(\tR\x13mysql_password_file\"Q\n\x13GoogleStorageConfig\x12\x0e\n\x06\x62ucket\x18\x01 \x01(\t\x12*\n\x10\x63redentials_file\x18\x02 \x01(\tR\x10\x63redentials_file\"#\n\x10\x43hromePerfConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\"\x1c\n\tCTSConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\"\x99\x02\n\x06\x43onfig\x12\x32\n\x03tko\x18\x01 \x01(\x0b\x32%.test_platform.side_effects.TKOConfig\x12W\n\x0egoogle_storage\x18\x02 \x01(\x0b\x32/.test_platform.side_effects.GoogleStorageConfigR\x0egoogle_storage\x12N\n\x0b\x63hrome_perf\x18\x03 \x01(\x0b\x32,.test_platform.side_effects.ChromePerfConfigR\x0b\x63hrome_perf\x12\x32\n\x03\x63ts\x18\x04 \x01(\x0b\x32%.test_platform.side_effects.CTSConfigBFZDgo.chromium.org/chromiumos/infra/proto/go/test_platform/side_effectsb\x06proto3')
)




_TKOCONFIG = _descriptor.Descriptor(
  name='TKOConfig',
  full_name='test_platform.side_effects.TKOConfig',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='proxy_socket', full_name='test_platform.side_effects.TKOConfig.proxy_socket', 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, json_name='proxy_socket', file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='mysql_user', full_name='test_platform.side_effects.TKOConfig.mysql_user', index=1,
      number=2, 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, json_name='mysql_user', file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='mysql_password_file', full_name='test_platform.side_effects.TKOConfig.mysql_password_file', 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, json_name='mysql_password_file', file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=72,
  serialized_end=201,
)


_GOOGLESTORAGECONFIG = _descriptor.Descriptor(
  name='GoogleStorageConfig',
  full_name='test_platform.side_effects.GoogleStorageConfig',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='bucket', full_name='test_platform.side_effects.GoogleStorageConfig.bucket', 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='credentials_file', full_name='test_platform.side_effects.GoogleStorageConfig.credentials_file', index=1,
      number=2, 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, json_name='credentials_file', file=DESCRIPTOR),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=203,
  serialized_end=284,
)


_CHROMEPERFCONFIG = _descriptor.Descriptor(
  name='ChromePerfConfig',
  full_name='test_platform.side_effects.ChromePerfConfig',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='enabled', full_name='test_platform.side_effects.ChromePerfConfig.enabled', index=0,
      number=1, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      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=286,
  serialized_end=321,
)


_CTSCONFIG = _descriptor.Descriptor(
  name='CTSConfig',
  full_name='test_platform.side_effects.CTSConfig',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='enabled', full_name='test_platform.side_effects.CTSConfig.enabled', index=0,
      number=1, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      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=323,
  serialized_end=351,
)


_CONFIG = _descriptor.Descriptor(
  name='Config',
  full_name='test_platform.side_effects.Config',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='tko', full_name='test_platform.side_effects.Config.tko', index=0,
      number=1, 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='google_storage', full_name='test_platform.side_effects.Config.google_storage', 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, json_name='google_storage', file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='chrome_perf', full_name='test_platform.side_effects.Config.chrome_perf', 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, json_name='chrome_perf', file=DESCRIPTOR),
    _descriptor.FieldDescriptor(
      name='cts', full_name='test_platform.side_effects.Config.cts', index=3,
      number=4, 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=[],
  enum_types=[
  ],
  serialized_options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=354,
  serialized_end=635,
)

_CONFIG.fields_by_name['tko'].message_type = _TKOCONFIG
_CONFIG.fields_by_name['google_storage'].message_type = _GOOGLESTORAGECONFIG
_CONFIG.fields_by_name['chrome_perf'].message_type = _CHROMEPERFCONFIG
_CONFIG.fields_by_name['cts'].message_type = _CTSCONFIG
DESCRIPTOR.message_types_by_name['TKOConfig'] = _TKOCONFIG
DESCRIPTOR.message_types_by_name['GoogleStorageConfig'] = _GOOGLESTORAGECONFIG
DESCRIPTOR.message_types_by_name['ChromePerfConfig'] = _CHROMEPERFCONFIG
DESCRIPTOR.message_types_by_name['CTSConfig'] = _CTSCONFIG
DESCRIPTOR.message_types_by_name['Config'] = _CONFIG
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

TKOConfig = _reflection.GeneratedProtocolMessageType('TKOConfig', (_message.Message,), dict(
  DESCRIPTOR = _TKOCONFIG,
  __module__ = 'test_platform.side_effects.config_pb2'
  # @@protoc_insertion_point(class_scope:test_platform.side_effects.TKOConfig)
  ))
_sym_db.RegisterMessage(TKOConfig)

GoogleStorageConfig = _reflection.GeneratedProtocolMessageType('GoogleStorageConfig', (_message.Message,), dict(
  DESCRIPTOR = _GOOGLESTORAGECONFIG,
  __module__ = 'test_platform.side_effects.config_pb2'
  # @@protoc_insertion_point(class_scope:test_platform.side_effects.GoogleStorageConfig)
  ))
_sym_db.RegisterMessage(GoogleStorageConfig)

ChromePerfConfig = _reflection.GeneratedProtocolMessageType('ChromePerfConfig', (_message.Message,), dict(
  DESCRIPTOR = _CHROMEPERFCONFIG,
  __module__ = 'test_platform.side_effects.config_pb2'
  # @@protoc_insertion_point(class_scope:test_platform.side_effects.ChromePerfConfig)
  ))
_sym_db.RegisterMessage(ChromePerfConfig)

CTSConfig = _reflection.GeneratedProtocolMessageType('CTSConfig', (_message.Message,), dict(
  DESCRIPTOR = _CTSCONFIG,
  __module__ = 'test_platform.side_effects.config_pb2'
  # @@protoc_insertion_point(class_scope:test_platform.side_effects.CTSConfig)
  ))
_sym_db.RegisterMessage(CTSConfig)

Config = _reflection.GeneratedProtocolMessageType('Config', (_message.Message,), dict(
  DESCRIPTOR = _CONFIG,
  __module__ = 'test_platform.side_effects.config_pb2'
  # @@protoc_insertion_point(class_scope:test_platform.side_effects.Config)
  ))
_sym_db.RegisterMessage(Config)


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