# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromite/api/test_metadata.proto
"""Generated protocol buffer code."""
from chromite.third_party.google.protobuf.internal import builder as _builder
from chromite.third_party.google.protobuf import descriptor as _descriptor
from chromite.third_party.google.protobuf import descriptor_pool as _descriptor_pool
from chromite.third_party.google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from chromite.api.gen.chromite.api import build_api_pb2 as chromite_dot_api_dot_build__api__pb2
from chromite.api.gen.chromite.api import sysroot_pb2 as chromite_dot_api_dot_sysroot__pb2
from chromite.api.gen.chromiumos import common_pb2 as chromiumos_dot_common__pb2


DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n chromite/api/test_metadata.proto\x12\x0c\x63hromite.api\x1a\x1c\x63hromite/api/build_api.proto\x1a\x1a\x63hromite/api/sysroot.proto\x1a\x17\x63hromiumos/common.proto\"a\n\x13TestMetadataRequest\x12\"\n\x06\x63hroot\x18\x01 \x01(\x0b\x32\x12.chromiumos.Chroot\x12&\n\x07sysroot\x18\x02 \x01(\x0b\x32\x15.chromite.api.Sysroot\"L\n\x14TestMetadataResponse\x12\x34\n\x08\x61utotest\x18\x01 \x01(\x0b\x32\".chromite.api.AutotestTestMetadata\"n\n\x14\x41utotestTestMetadata\x12+\n\x06suites\x18\x01 \x03(\x0b\x32\x1b.chromite.api.AutotestSuite\x12)\n\x05tests\x18\x02 \x03(\x0b\x32\x1a.chromite.api.AutotestTest\"\xd8\x01\n\rAutotestSuite\x12\x0c\n\x04name\x18\x01 \x01(\t\x12@\n\x12\x63hild_dependencies\x18\x02 \x03(\x0b\x32$.chromite.api.AutotestTaskDependency\x12\x1e\n\x16\x63hild_task_timeout_sec\x18\x03 \x01(\x05\x12\x38\n\x05tests\x18\x04 \x03(\x0b\x32).chromite.api.AutotestSuite.TestReference\x1a\x1d\n\rTestReference\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x97\x03\n\x0c\x41utotestTest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12:\n\x0c\x64\x65pendencies\x18\x02 \x03(\x0b\x32$.chromite.api.AutotestTaskDependency\x12\x15\n\rallow_retries\x18\x03 \x01(\x08\x12\x13\n\x0bmax_retries\x18\x04 \x01(\x05\x12\x1b\n\x13needs_multiple_duts\x18\x05 \x01(\x08\x12\x11\n\tdut_count\x18\x06 \x01(\x05\x12N\n\x15\x65xecution_environment\x18\x07 \x01(\x0e\x32/.chromite.api.AutotestTest.ExecutionEnvironment\x12\r\n\x05names\x18\x08 \x03(\t\"\x81\x01\n\x14\x45xecutionEnvironment\x12%\n!EXECUTION_ENVIRONMENT_UNSPECIFIED\x10\x00\x12 \n\x1c\x45XECUTION_ENVIRONMENT_CLIENT\x10\x01\x12 \n\x1c\x45XECUTION_ENVIRONMENT_SERVER\x10\x02\"\'\n\x16\x41utotestTaskDependency\x12\r\n\x05label\x18\x01 \x01(\t2z\n\x13TestMetadataService\x12L\n\x03Get\x12!.chromite.api.TestMetadataRequest\x1a\".chromite.api.TestMetadataResponse\x1a\x15\xc2\xed\x1a\x11\n\rtest_metadata\x10\x01\x42\x38Z6go.chromium.org/chromiumos/infra/proto/go/chromite/apib\x06proto3')

_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromite.api.test_metadata_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'Z6go.chromium.org/chromiumos/infra/proto/go/chromite/api'
  _TESTMETADATASERVICE._options = None
  _TESTMETADATASERVICE._serialized_options = b'\302\355\032\021\n\rtest_metadata\020\001'
  _TESTMETADATAREQUEST._serialized_start=133
  _TESTMETADATAREQUEST._serialized_end=230
  _TESTMETADATARESPONSE._serialized_start=232
  _TESTMETADATARESPONSE._serialized_end=308
  _AUTOTESTTESTMETADATA._serialized_start=310
  _AUTOTESTTESTMETADATA._serialized_end=420
  _AUTOTESTSUITE._serialized_start=423
  _AUTOTESTSUITE._serialized_end=639
  _AUTOTESTSUITE_TESTREFERENCE._serialized_start=610
  _AUTOTESTSUITE_TESTREFERENCE._serialized_end=639
  _AUTOTESTTEST._serialized_start=642
  _AUTOTESTTEST._serialized_end=1049
  _AUTOTESTTEST_EXECUTIONENVIRONMENT._serialized_start=920
  _AUTOTESTTEST_EXECUTIONENVIRONMENT._serialized_end=1049
  _AUTOTESTTASKDEPENDENCY._serialized_start=1051
  _AUTOTESTTASKDEPENDENCY._serialized_end=1090
  _TESTMETADATASERVICE._serialized_start=1092
  _TESTMETADATASERVICE._serialized_end=1214
# @@protoc_insertion_point(module_scope)
