// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.25.0-devel
// 	protoc        v3.6.1
// source: test_platform/analytics/result.proto

package analytics

import (
	timestamp "github.com/golang/protobuf/ptypes/timestamp"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// TestPlanRun represents the test request defined by users and its running
// status.
type TestPlanRun struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A unique name to identify this test plan run, format
	// "testPlanRuns/CTP_BUILD_ID/REQ_KEY", where REQ_KEY is the CTP
	// request’s key in the multiple-request,
	// e.g. "testPlanRuns/8879199769272202448/octopus_ampton"
	// Required field.
	Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"`
	// CTP build ID.
	BuildId int64 `protobuf:"varint,2,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"`
	// Suite name. If the test plan is running an autotest suite,
	// this field is the autotest suite name, e.g. wifi_interop.
	Suite string `protobuf:"bytes,3,opt,name=suite,proto3" json:"suite,omitempty"`
	// Human friendly url to access this run.
	ExecutionUrl string `protobuf:"bytes,4,opt,name=execution_url,json=executionUrl,proto3" json:"execution_url,omitempty"`
	// The dut_pool in which the test plan ran, e.g. "DUT_POOL_QUOTA" or
	// "wificell".
	// It is case sensitive: "WIFICELL" and "wificell" represent different
	// pools.
	// Note that legacy pools "suites", "bvt" and "pcq" have been integrated
	// into "DUT_POOL_QUOTA" and legacy pool "cts" has been renamed to
	// "DUT_POOL_CTS".
	DutPool string `protobuf:"bytes,5,opt,name=dut_pool,json=dutPool,proto3" json:"dut_pool,omitempty"`
	// The build target, a.k.a board name, e.g. "hatch", "octopus".
	BuildTarget string `protobuf:"bytes,6,opt,name=build_target,json=buildTarget,proto3" json:"build_target,omitempty"`
	// CrOS build version, e.g. "R84/13091.0.0".
	ChromeosBuild string  `protobuf:"bytes,7,opt,name=chromeos_build,json=chromeosBuild,proto3" json:"chromeos_build,omitempty"`
	Status        *Status `protobuf:"bytes,8,opt,name=status,proto3" json:"status,omitempty"`
	// Use create_time/start_time/end_time below.
	// Timestamp inside a struct can not be used to
	// partition a Bigquery table.
	//
	// Deprecated: Do not use.
	Timeline *Timeline `protobuf:"bytes,9,opt,name=timeline,proto3" json:"timeline,omitempty"`
	// Time the CTP build was requested.
	//
	// Current CTP implementation does not report a single CTP request's timeline
	// Thus, we use the CTP build's timeline to preent a Test Plan Run's lifecycle.
	//
	// BigQuery: Table partitioned on this field.
	CreateTime *timestamp.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Time the CTP build began to execute in a bot.
	StartTime *timestamp.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	// Time the CTP build completed, unset if the task was
	// stopped unexpectedly before its completion.
	EndTime *timestamp.Timestamp `protobuf:"bytes,12,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
}

func (x *TestPlanRun) Reset() {
	*x = TestPlanRun{}
	if protoimpl.UnsafeEnabled {
		mi := &file_test_platform_analytics_result_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TestPlanRun) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestPlanRun) ProtoMessage() {}

func (x *TestPlanRun) ProtoReflect() protoreflect.Message {
	mi := &file_test_platform_analytics_result_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestPlanRun.ProtoReflect.Descriptor instead.
func (*TestPlanRun) Descriptor() ([]byte, []int) {
	return file_test_platform_analytics_result_proto_rawDescGZIP(), []int{0}
}

func (x *TestPlanRun) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *TestPlanRun) GetBuildId() int64 {
	if x != nil {
		return x.BuildId
	}
	return 0
}

func (x *TestPlanRun) GetSuite() string {
	if x != nil {
		return x.Suite
	}
	return ""
}

func (x *TestPlanRun) GetExecutionUrl() string {
	if x != nil {
		return x.ExecutionUrl
	}
	return ""
}

func (x *TestPlanRun) GetDutPool() string {
	if x != nil {
		return x.DutPool
	}
	return ""
}

func (x *TestPlanRun) GetBuildTarget() string {
	if x != nil {
		return x.BuildTarget
	}
	return ""
}

func (x *TestPlanRun) GetChromeosBuild() string {
	if x != nil {
		return x.ChromeosBuild
	}
	return ""
}

func (x *TestPlanRun) GetStatus() *Status {
	if x != nil {
		return x.Status
	}
	return nil
}

// Deprecated: Do not use.
func (x *TestPlanRun) GetTimeline() *Timeline {
	if x != nil {
		return x.Timeline
	}
	return nil
}

func (x *TestPlanRun) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *TestPlanRun) GetStartTime() *timestamp.Timestamp {
	if x != nil {
		return x.StartTime
	}
	return nil
}

func (x *TestPlanRun) GetEndTime() *timestamp.Timestamp {
	if x != nil {
		return x.EndTime
	}
	return nil
}

// TestRun contains Skylab task level information.
type TestRun struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Test runner build ID.
	BuildId int64 `protobuf:"varint,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"`
	// The name of the Skylab task corresponding to the test run, e.g.
	// "tast.critical-chrome".
	//
	// For tasks containing a single test case, will generally be the same as the
	// name of that test case, e.g. "provision_AutoUpdate.double".
	// Required field.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Human friendly url to access this run.
	ExecutionUrl string `protobuf:"bytes,3,opt,name=execution_url,json=executionUrl,proto3" json:"execution_url,omitempty"`
	// The TestPlanRun.uid of the parent test plan run.
	ParentUid string `protobuf:"bytes,4,opt,name=parent_uid,json=parentUid,proto3" json:"parent_uid,omitempty"`
	// Model name, e.g. "helios", "mimrock".
	// Note that a single TestPlanRun may be spread across multiple models, if
	// the test plan request did not specify a model to run.
	Model string `protobuf:"bytes,5,opt,name=model,proto3" json:"model,omitempty"`
	// Use create_time/start_time/end_time below.
	// Timestamp inside a struct can not be used to
	// partition a Bigquery table.
	//
	// Deprecated: Do not use.
	Timeline *Timeline `protobuf:"bytes,6,opt,name=timeline,proto3" json:"timeline,omitempty"`
	Status   *Status   `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"`
	Verdict  *Verdict  `protobuf:"bytes,8,opt,name=verdict,proto3" json:"verdict,omitempty"`
	// The URL for the entire logs of this run.
	FullLogUrl string          `protobuf:"bytes,9,opt,name=full_log_url,json=fullLogUrl,proto3" json:"full_log_url,omitempty"`
	Prejob     *TestRun_Prejob `protobuf:"bytes,10,opt,name=prejob,proto3" json:"prejob,omitempty"`
	// Time the test runner build was requested.
	//
	// TestRun's Bigquery table partitions on this field.
	CreateTime *timestamp.Timestamp `protobuf:"bytes,11,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Time the test runner build began to execute in a bot.
	StartTime *timestamp.Timestamp `protobuf:"bytes,12,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	// Time the test runner build completed, unset if the task was
	// stopped unexpectedly before its completion.
	EndTime *timestamp.Timestamp `protobuf:"bytes,13,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
}

func (x *TestRun) Reset() {
	*x = TestRun{}
	if protoimpl.UnsafeEnabled {
		mi := &file_test_platform_analytics_result_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TestRun) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestRun) ProtoMessage() {}

func (x *TestRun) ProtoReflect() protoreflect.Message {
	mi := &file_test_platform_analytics_result_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestRun.ProtoReflect.Descriptor instead.
func (*TestRun) Descriptor() ([]byte, []int) {
	return file_test_platform_analytics_result_proto_rawDescGZIP(), []int{1}
}

func (x *TestRun) GetBuildId() int64 {
	if x != nil {
		return x.BuildId
	}
	return 0
}

func (x *TestRun) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *TestRun) GetExecutionUrl() string {
	if x != nil {
		return x.ExecutionUrl
	}
	return ""
}

func (x *TestRun) GetParentUid() string {
	if x != nil {
		return x.ParentUid
	}
	return ""
}

func (x *TestRun) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

// Deprecated: Do not use.
func (x *TestRun) GetTimeline() *Timeline {
	if x != nil {
		return x.Timeline
	}
	return nil
}

func (x *TestRun) GetStatus() *Status {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *TestRun) GetVerdict() *Verdict {
	if x != nil {
		return x.Verdict
	}
	return nil
}

func (x *TestRun) GetFullLogUrl() string {
	if x != nil {
		return x.FullLogUrl
	}
	return ""
}

func (x *TestRun) GetPrejob() *TestRun_Prejob {
	if x != nil {
		return x.Prejob
	}
	return nil
}

func (x *TestRun) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *TestRun) GetStartTime() *timestamp.Timestamp {
	if x != nil {
		return x.StartTime
	}
	return nil
}

func (x *TestRun) GetEndTime() *timestamp.Timestamp {
	if x != nil {
		return x.EndTime
	}
	return nil
}

// TestCaseResult describes the result of an individual test case.
type TestCaseResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A unique name for this test case run,
	// format "testCaseResults/TEST_RUNNER_BUILD_ID/TEST_CASE_NAME", e.g.
	// "testCaseResults/8879199769272202448/provision_AutoUpdate.double".
	// Required field.
	Uid string `protobuf:"bytes,1,opt,name=uid,proto3" json:"uid,omitempty"`
	// Test case name as it appears in status.log,
	// e.g. "provision_AutoUpdate.double".
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// The TestRun.build_id of the parent test run.
	ParentBuildId int64    `protobuf:"varint,3,opt,name=parent_build_id,json=parentBuildId,proto3" json:"parent_build_id,omitempty"`
	Verdict       *Verdict `protobuf:"bytes,4,opt,name=verdict,proto3" json:"verdict,omitempty"`
	// A one line human readable description of what happened during test
	// case execution (e.g. error/warning message). Not intended to be machine
	// parseable. There's no guarantee that a given root cause will always
	// resolve to the same summary.
	HumanReadableSummary string `protobuf:"bytes,5,opt,name=human_readable_summary,json=humanReadableSummary,proto3" json:"human_readable_summary,omitempty"`
	// Time this test case was generated, which equals its test run's
	// end_time.
	//
	// TestCaseResult's Bigquery table partitions on this field.
	CreateTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
}

func (x *TestCaseResult) Reset() {
	*x = TestCaseResult{}
	if protoimpl.UnsafeEnabled {
		mi := &file_test_platform_analytics_result_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TestCaseResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestCaseResult) ProtoMessage() {}

func (x *TestCaseResult) ProtoReflect() protoreflect.Message {
	mi := &file_test_platform_analytics_result_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestCaseResult.ProtoReflect.Descriptor instead.
func (*TestCaseResult) Descriptor() ([]byte, []int) {
	return file_test_platform_analytics_result_proto_rawDescGZIP(), []int{2}
}

func (x *TestCaseResult) GetUid() string {
	if x != nil {
		return x.Uid
	}
	return ""
}

func (x *TestCaseResult) GetDisplayName() string {
	if x != nil {
		return x.DisplayName
	}
	return ""
}

func (x *TestCaseResult) GetParentBuildId() int64 {
	if x != nil {
		return x.ParentBuildId
	}
	return 0
}

func (x *TestCaseResult) GetVerdict() *Verdict {
	if x != nil {
		return x.Verdict
	}
	return nil
}

func (x *TestCaseResult) GetHumanReadableSummary() string {
	if x != nil {
		return x.HumanReadableSummary
	}
	return ""
}

func (x *TestCaseResult) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

// The timeline of a task.
type Timeline struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Time the task was requested.
	CreateTime *timestamp.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
	// Time the task began to execute in a bot.
	StartTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	// Time the task completed, unset if the task was
	// stopped unexpectedly before its completion.
	EndTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
	// Time the task was stopped unexpectedly, unset if
	// task has run to its end.
	AbandonTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=abandon_time,json=abandonTime,proto3" json:"abandon_time,omitempty"`
}

func (x *Timeline) Reset() {
	*x = Timeline{}
	if protoimpl.UnsafeEnabled {
		mi := &file_test_platform_analytics_result_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Timeline) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Timeline) ProtoMessage() {}

func (x *Timeline) ProtoReflect() protoreflect.Message {
	mi := &file_test_platform_analytics_result_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Timeline.ProtoReflect.Descriptor instead.
func (*Timeline) Descriptor() ([]byte, []int) {
	return file_test_platform_analytics_result_proto_rawDescGZIP(), []int{3}
}

func (x *Timeline) GetCreateTime() *timestamp.Timestamp {
	if x != nil {
		return x.CreateTime
	}
	return nil
}

func (x *Timeline) GetStartTime() *timestamp.Timestamp {
	if x != nil {
		return x.StartTime
	}
	return nil
}

func (x *Timeline) GetEndTime() *timestamp.Timestamp {
	if x != nil {
		return x.EndTime
	}
	return nil
}

func (x *Timeline) GetAbandonTime() *timestamp.Timestamp {
	if x != nil {
		return x.AbandonTime
	}
	return nil
}

// The latest known status of a task, may change as the run progresses.
type Status struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// All the currently possible values (corresponding to
	// testplatform.Taskstate.LifeCycle enum values):
	//   NORMAL STATUS:
	//
	//     PENDING: task is pending somewhere and does not run.
	//     RUNNING: task is running.
	//     COMPLETED: ran to completion without being cancelled externally,
	//       regardless of whether it succeeded or failed. A task is completed
	//       only if all its sub-tasks have reached the end, either with a normal
	//       or abnormal status.
	//
	//   ABNORMAL STATUS:
	//
	//     CANCELLED: never got a chance to run, cancelled externally.
	//     REJECTED: never got a chance to run, rejected due to unsatisfiable
	//       depenedencies.
	//     ABORTED: started running but was cancelled externally while running.
	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *Status) Reset() {
	*x = Status{}
	if protoimpl.UnsafeEnabled {
		mi := &file_test_platform_analytics_result_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Status) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Status) ProtoMessage() {}

func (x *Status) ProtoReflect() protoreflect.Message {
	mi := &file_test_platform_analytics_result_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Status.ProtoReflect.Descriptor instead.
func (*Status) Descriptor() ([]byte, []int) {
	return file_test_platform_analytics_result_proto_rawDescGZIP(), []int{4}
}

func (x *Status) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

// The known tokens describe whether a task passed, failed, or had some other
// indefinite verdict.
type Verdict struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// All the currently possible values (corresponding to
	// testplatform.Taskstate.Verdict enum values):
	//
	//   UNSPECIFIED(default): the task produced no usable verdict (possibly
	//     because it never ran, or never finished, or the results were
	//     unparseable).
	//     Under most circumstances, this should be treated as a failure or
	//     an infrastructure failure.
	//   PASSED: test run definitively passed.
	//   FAILED: test run definitively failed.
	//   NO_VERDICT: the task definitively produced no verdict(for instance,
	//     the test is irrelevant in the given environment).
	//     Under most circumstances, this should be treated as a passing
	//     (but uninteresting).
	//   PASSED_ON_RETRY: the task failed, but passed after one or more retries.
	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *Verdict) Reset() {
	*x = Verdict{}
	if protoimpl.UnsafeEnabled {
		mi := &file_test_platform_analytics_result_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Verdict) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Verdict) ProtoMessage() {}

func (x *Verdict) ProtoReflect() protoreflect.Message {
	mi := &file_test_platform_analytics_result_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Verdict.ProtoReflect.Descriptor instead.
func (*Verdict) Descriptor() ([]byte, []int) {
	return file_test_platform_analytics_result_proto_rawDescGZIP(), []int{5}
}

func (x *Verdict) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

type TestRun_Prejob struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Verdict *Verdict `protobuf:"bytes,1,opt,name=verdict,proto3" json:"verdict,omitempty"`
}

func (x *TestRun_Prejob) Reset() {
	*x = TestRun_Prejob{}
	if protoimpl.UnsafeEnabled {
		mi := &file_test_platform_analytics_result_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TestRun_Prejob) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TestRun_Prejob) ProtoMessage() {}

func (x *TestRun_Prejob) ProtoReflect() protoreflect.Message {
	mi := &file_test_platform_analytics_result_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TestRun_Prejob.ProtoReflect.Descriptor instead.
func (*TestRun_Prejob) Descriptor() ([]byte, []int) {
	return file_test_platform_analytics_result_proto_rawDescGZIP(), []int{1, 0}
}

func (x *TestRun_Prejob) GetVerdict() *Verdict {
	if x != nil {
		return x.Verdict
	}
	return nil
}

var File_test_platform_analytics_result_proto protoreflect.FileDescriptor

var file_test_platform_analytics_result_proto_rawDesc = []byte{
	0x0a, 0x24, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f,
	0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61,
	0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x1a,
	0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x22, 0x85, 0x04, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x75, 0x6e,
	0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75,
	0x69, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x14, 0x0a,
	0x05, 0x73, 0x75, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x75,
	0x69, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e,
	0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x65, 0x63,
	0x75, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x75, 0x74, 0x5f,
	0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x75, 0x74, 0x50,
	0x6f, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x74, 0x61, 0x72,
	0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x75, 0x69, 0x6c, 0x64,
	0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65,
	0x6f, 0x73, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x63, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x6f, 0x73, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x37, 0x0a,
	0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
	0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x6e,
	0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06,
	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x41, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69,
	0x6e, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x5f,
	0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69,
	0x63, 0x73, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x02, 0x18, 0x01, 0x52,
	0x08, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65,
	0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d,
	0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
	0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb1, 0x05, 0x0a, 0x07, 0x54, 0x65, 0x73,
	0x74, 0x52, 0x75, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12,
	0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
	0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
	0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x65, 0x63, 0x75,
	0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e,
	0x74, 0x5f, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x55, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x08,
	0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21,
	0x2e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61,
	0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6e,
	0x65, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x12,
	0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e,
	0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x64,
	0x69, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74,
	0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74,
	0x69, 0x63, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x52, 0x07, 0x76, 0x65, 0x72,
	0x64, 0x69, 0x63, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x6c, 0x6f, 0x67,
	0x5f, 0x75, 0x72, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x75, 0x6c, 0x6c,
	0x4c, 0x6f, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x3f, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x6a, 0x6f, 0x62,
	0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6c,
	0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73,
	0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x2e, 0x50, 0x72, 0x65, 0x6a, 0x6f, 0x62, 0x52,
	0x06, 0x70, 0x72, 0x65, 0x6a, 0x6f, 0x62, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
	0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69,
	0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
	0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12,
	0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65,
	0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x44, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x6a, 0x6f, 0x62,
	0x12, 0x3a, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
	0x6d, 0x2e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x64,
	0x69, 0x63, 0x74, 0x52, 0x07, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x22, 0x9c, 0x02, 0x0a,
	0x0e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
	0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69,
	0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62,
	0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70,
	0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x07,
	0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
	0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x61, 0x6e,
	0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x52,
	0x07, 0x76, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x68, 0x75, 0x6d, 0x61,
	0x6e, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61,
	0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x68, 0x75, 0x6d, 0x61, 0x6e, 0x52,
	0x65, 0x61, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x3b,
	0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
	0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf8, 0x01, 0x0a, 0x08,
	0x54, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61,
	0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74,
	0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74,
	0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07,
	0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x62, 0x61, 0x6e, 0x64,
	0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x62, 0x61, 0x6e, 0x64,
	0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x1e, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x1f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x64, 0x69, 0x63,
	0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x6f, 0x2e, 0x63, 0x68,
	0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x63, 0x68, 0x72, 0x6f, 0x6d,
	0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f,
	0x72, 0x6d, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x74, 0x69, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_test_platform_analytics_result_proto_rawDescOnce sync.Once
	file_test_platform_analytics_result_proto_rawDescData = file_test_platform_analytics_result_proto_rawDesc
)

func file_test_platform_analytics_result_proto_rawDescGZIP() []byte {
	file_test_platform_analytics_result_proto_rawDescOnce.Do(func() {
		file_test_platform_analytics_result_proto_rawDescData = protoimpl.X.CompressGZIP(file_test_platform_analytics_result_proto_rawDescData)
	})
	return file_test_platform_analytics_result_proto_rawDescData
}

var file_test_platform_analytics_result_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_test_platform_analytics_result_proto_goTypes = []interface{}{
	(*TestPlanRun)(nil),         // 0: test_platform.analytics.TestPlanRun
	(*TestRun)(nil),             // 1: test_platform.analytics.TestRun
	(*TestCaseResult)(nil),      // 2: test_platform.analytics.TestCaseResult
	(*Timeline)(nil),            // 3: test_platform.analytics.Timeline
	(*Status)(nil),              // 4: test_platform.analytics.Status
	(*Verdict)(nil),             // 5: test_platform.analytics.Verdict
	(*TestRun_Prejob)(nil),      // 6: test_platform.analytics.TestRun.Prejob
	(*timestamp.Timestamp)(nil), // 7: google.protobuf.Timestamp
}
var file_test_platform_analytics_result_proto_depIdxs = []int32{
	4,  // 0: test_platform.analytics.TestPlanRun.status:type_name -> test_platform.analytics.Status
	3,  // 1: test_platform.analytics.TestPlanRun.timeline:type_name -> test_platform.analytics.Timeline
	7,  // 2: test_platform.analytics.TestPlanRun.create_time:type_name -> google.protobuf.Timestamp
	7,  // 3: test_platform.analytics.TestPlanRun.start_time:type_name -> google.protobuf.Timestamp
	7,  // 4: test_platform.analytics.TestPlanRun.end_time:type_name -> google.protobuf.Timestamp
	3,  // 5: test_platform.analytics.TestRun.timeline:type_name -> test_platform.analytics.Timeline
	4,  // 6: test_platform.analytics.TestRun.status:type_name -> test_platform.analytics.Status
	5,  // 7: test_platform.analytics.TestRun.verdict:type_name -> test_platform.analytics.Verdict
	6,  // 8: test_platform.analytics.TestRun.prejob:type_name -> test_platform.analytics.TestRun.Prejob
	7,  // 9: test_platform.analytics.TestRun.create_time:type_name -> google.protobuf.Timestamp
	7,  // 10: test_platform.analytics.TestRun.start_time:type_name -> google.protobuf.Timestamp
	7,  // 11: test_platform.analytics.TestRun.end_time:type_name -> google.protobuf.Timestamp
	5,  // 12: test_platform.analytics.TestCaseResult.verdict:type_name -> test_platform.analytics.Verdict
	7,  // 13: test_platform.analytics.TestCaseResult.create_time:type_name -> google.protobuf.Timestamp
	7,  // 14: test_platform.analytics.Timeline.create_time:type_name -> google.protobuf.Timestamp
	7,  // 15: test_platform.analytics.Timeline.start_time:type_name -> google.protobuf.Timestamp
	7,  // 16: test_platform.analytics.Timeline.end_time:type_name -> google.protobuf.Timestamp
	7,  // 17: test_platform.analytics.Timeline.abandon_time:type_name -> google.protobuf.Timestamp
	5,  // 18: test_platform.analytics.TestRun.Prejob.verdict:type_name -> test_platform.analytics.Verdict
	19, // [19:19] is the sub-list for method output_type
	19, // [19:19] is the sub-list for method input_type
	19, // [19:19] is the sub-list for extension type_name
	19, // [19:19] is the sub-list for extension extendee
	0,  // [0:19] is the sub-list for field type_name
}

func init() { file_test_platform_analytics_result_proto_init() }
func file_test_platform_analytics_result_proto_init() {
	if File_test_platform_analytics_result_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_test_platform_analytics_result_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TestPlanRun); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_test_platform_analytics_result_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TestRun); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_test_platform_analytics_result_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TestCaseResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_test_platform_analytics_result_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Timeline); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_test_platform_analytics_result_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Status); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_test_platform_analytics_result_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Verdict); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_test_platform_analytics_result_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TestRun_Prejob); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_test_platform_analytics_result_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   7,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_test_platform_analytics_result_proto_goTypes,
		DependencyIndexes: file_test_platform_analytics_result_proto_depIdxs,
		MessageInfos:      file_test_platform_analytics_result_proto_msgTypes,
	}.Build()
	File_test_platform_analytics_result_proto = out.File
	file_test_platform_analytics_result_proto_rawDesc = nil
	file_test_platform_analytics_result_proto_goTypes = nil
	file_test_platform_analytics_result_proto_depIdxs = nil
}
