// Code generated by protoc-gen-go. DO NOT EDIT.
// source: test_platform/skylab_test_runner/config.proto

package skylab_test_runner

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	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

// Config defines configuration parameters of skylab_test_runner.
type Config struct {
	Lab                  *Config_Lab     `protobuf:"bytes,1,opt,name=lab,proto3" json:"lab,omitempty"`
	Harness              *Config_Harness `protobuf:"bytes,2,opt,name=harness,proto3" json:"harness,omitempty"`
	Output               *Config_Output  `protobuf:"bytes,3,opt,name=output,proto3" json:"output,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (m *Config) Reset()         { *m = Config{} }
func (m *Config) String() string { return proto.CompactTextString(m) }
func (*Config) ProtoMessage()    {}
func (*Config) Descriptor() ([]byte, []int) {
	return fileDescriptor_b2c5f9be4f684081, []int{0}
}

func (m *Config) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Config.Unmarshal(m, b)
}
func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Config.Marshal(b, m, deterministic)
}
func (m *Config) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Config.Merge(m, src)
}
func (m *Config) XXX_Size() int {
	return xxx_messageInfo_Config.Size(m)
}
func (m *Config) XXX_DiscardUnknown() {
	xxx_messageInfo_Config.DiscardUnknown(m)
}

var xxx_messageInfo_Config proto.InternalMessageInfo

func (m *Config) GetLab() *Config_Lab {
	if m != nil {
		return m.Lab
	}
	return nil
}

func (m *Config) GetHarness() *Config_Harness {
	if m != nil {
		return m.Harness
	}
	return nil
}

func (m *Config) GetOutput() *Config_Output {
	if m != nil {
		return m.Output
	}
	return nil
}

// Lab defines configuration parameters related to the lab and the lab
// platform services.
type Config_Lab struct {
	// Admin service host, e.g. foo.appspot.com.
	AdminService         string   `protobuf:"bytes,1,opt,name=admin_service,json=adminService,proto3" json:"admin_service,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Config_Lab) Reset()         { *m = Config_Lab{} }
func (m *Config_Lab) String() string { return proto.CompactTextString(m) }
func (*Config_Lab) ProtoMessage()    {}
func (*Config_Lab) Descriptor() ([]byte, []int) {
	return fileDescriptor_b2c5f9be4f684081, []int{0, 0}
}

func (m *Config_Lab) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Config_Lab.Unmarshal(m, b)
}
func (m *Config_Lab) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Config_Lab.Marshal(b, m, deterministic)
}
func (m *Config_Lab) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Config_Lab.Merge(m, src)
}
func (m *Config_Lab) XXX_Size() int {
	return xxx_messageInfo_Config_Lab.Size(m)
}
func (m *Config_Lab) XXX_DiscardUnknown() {
	xxx_messageInfo_Config_Lab.DiscardUnknown(m)
}

var xxx_messageInfo_Config_Lab proto.InternalMessageInfo

func (m *Config_Lab) GetAdminService() string {
	if m != nil {
		return m.AdminService
	}
	return ""
}

// Harness defines configuration parameters related to the test harness
// (autotest, tast, etc).
type Config_Harness struct {
	// Autotest directory inside the drone container,
	// e.g. "/usr/local/autotest".
	AutotestDir string `protobuf:"bytes,1,opt,name=autotest_dir,json=autotestDir,proto3" json:"autotest_dir,omitempty"`
	// Subdirectory, as relative path from the autotest results directory,
	// to use for synchronous offloads
	SynchOffloadSubdir   string   `protobuf:"bytes,2,opt,name=synch_offload_subdir,json=synchOffloadSubdir,proto3" json:"synch_offload_subdir,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Config_Harness) Reset()         { *m = Config_Harness{} }
func (m *Config_Harness) String() string { return proto.CompactTextString(m) }
func (*Config_Harness) ProtoMessage()    {}
func (*Config_Harness) Descriptor() ([]byte, []int) {
	return fileDescriptor_b2c5f9be4f684081, []int{0, 1}
}

func (m *Config_Harness) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Config_Harness.Unmarshal(m, b)
}
func (m *Config_Harness) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Config_Harness.Marshal(b, m, deterministic)
}
func (m *Config_Harness) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Config_Harness.Merge(m, src)
}
func (m *Config_Harness) XXX_Size() int {
	return xxx_messageInfo_Config_Harness.Size(m)
}
func (m *Config_Harness) XXX_DiscardUnknown() {
	xxx_messageInfo_Config_Harness.DiscardUnknown(m)
}

var xxx_messageInfo_Config_Harness proto.InternalMessageInfo

func (m *Config_Harness) GetAutotestDir() string {
	if m != nil {
		return m.AutotestDir
	}
	return ""
}

func (m *Config_Harness) GetSynchOffloadSubdir() string {
	if m != nil {
		return m.SynchOffloadSubdir
	}
	return ""
}

// Output defines parameters around how the task will deliver output to
// the callers, e.g. Google Storage bucket.
type Config_Output struct {
	GsRootDir            string   `protobuf:"bytes,1,opt,name=gs_root_dir,json=gsRootDir,proto3" json:"gs_root_dir,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Config_Output) Reset()         { *m = Config_Output{} }
func (m *Config_Output) String() string { return proto.CompactTextString(m) }
func (*Config_Output) ProtoMessage()    {}
func (*Config_Output) Descriptor() ([]byte, []int) {
	return fileDescriptor_b2c5f9be4f684081, []int{0, 2}
}

func (m *Config_Output) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Config_Output.Unmarshal(m, b)
}
func (m *Config_Output) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Config_Output.Marshal(b, m, deterministic)
}
func (m *Config_Output) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Config_Output.Merge(m, src)
}
func (m *Config_Output) XXX_Size() int {
	return xxx_messageInfo_Config_Output.Size(m)
}
func (m *Config_Output) XXX_DiscardUnknown() {
	xxx_messageInfo_Config_Output.DiscardUnknown(m)
}

var xxx_messageInfo_Config_Output proto.InternalMessageInfo

func (m *Config_Output) GetGsRootDir() string {
	if m != nil {
		return m.GsRootDir
	}
	return ""
}

func init() {
	proto.RegisterType((*Config)(nil), "test_platform.skylab_test_runner.Config")
	proto.RegisterType((*Config_Lab)(nil), "test_platform.skylab_test_runner.Config.Lab")
	proto.RegisterType((*Config_Harness)(nil), "test_platform.skylab_test_runner.Config.Harness")
	proto.RegisterType((*Config_Output)(nil), "test_platform.skylab_test_runner.Config.Output")
}

func init() {
	proto.RegisterFile("test_platform/skylab_test_runner/config.proto", fileDescriptor_b2c5f9be4f684081)
}

var fileDescriptor_b2c5f9be4f684081 = []byte{
	// 307 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x4b, 0xc3, 0x30,
	0x14, 0xc7, 0xd9, 0x0a, 0x1d, 0x7b, 0x9b, 0x97, 0xe0, 0x61, 0xec, 0x20, 0x53, 0x2f, 0x43, 0x34,
	0x19, 0x7a, 0xf7, 0xa0, 0x82, 0x32, 0x06, 0x83, 0xee, 0xe6, 0xc1, 0x92, 0x76, 0x6d, 0x17, 0x6c,
	0xf3, 0xc6, 0x4b, 0x2a, 0xec, 0x73, 0xf8, 0x85, 0x65, 0xaf, 0x2b, 0x28, 0x1e, 0xb6, 0x63, 0xfe,
	0xef, 0xff, 0xfb, 0xf1, 0x42, 0x02, 0x77, 0x3e, 0x73, 0x3e, 0xde, 0x96, 0xda, 0xe7, 0x48, 0x95,
	0x72, 0x9f, 0xbb, 0x52, 0x27, 0x31, 0x87, 0x54, 0x5b, 0x9b, 0x91, 0x4a, 0xd1, 0xe6, 0xa6, 0x90,
	0x5b, 0x42, 0x8f, 0x62, 0xf2, 0xa7, 0x2e, 0xff, 0xd7, 0xaf, 0xbe, 0x03, 0x08, 0x9f, 0x19, 0x11,
	0x8f, 0x10, 0x94, 0x3a, 0x19, 0x75, 0x26, 0x9d, 0xe9, 0xe0, 0xfe, 0x56, 0x1e, 0x43, 0x65, 0x83,
	0xc9, 0x85, 0x4e, 0xa2, 0x3d, 0x28, 0xe6, 0xd0, 0xdb, 0x68, 0xb2, 0x99, 0x73, 0xa3, 0x2e, 0x3b,
	0x66, 0x27, 0x3b, 0xde, 0x1a, 0x2e, 0x6a, 0x05, 0xe2, 0x15, 0x42, 0xac, 0xfd, 0xb6, 0xf6, 0xa3,
	0x80, 0x55, 0xea, 0x64, 0xd5, 0x92, 0xb1, 0xe8, 0x80, 0x8f, 0x6f, 0x20, 0x58, 0xe8, 0x44, 0x5c,
	0xc3, 0x99, 0x5e, 0x57, 0xc6, 0xc6, 0x2e, 0xa3, 0x2f, 0x93, 0x66, 0x7c, 0xcb, 0x7e, 0x34, 0xe4,
	0x70, 0xd5, 0x64, 0xe3, 0x0f, 0xe8, 0x1d, 0x16, 0x11, 0x97, 0x30, 0xd4, 0xb5, 0x47, 0xf6, 0xaf,
	0x0d, 0x1d, 0xea, 0x83, 0x36, 0x7b, 0x31, 0x24, 0x66, 0x70, 0xee, 0x76, 0x36, 0xdd, 0xc4, 0x98,
	0xe7, 0x25, 0xea, 0x75, 0xec, 0xea, 0x64, 0x5f, 0xed, 0x72, 0x55, 0xf0, 0x6c, 0xd9, 0x8c, 0x56,
	0x3c, 0x19, 0x4f, 0x21, 0x6c, 0xb6, 0x13, 0x17, 0x30, 0x28, 0x5c, 0x4c, 0x88, 0xbf, 0xed, 0xfd,
	0xc2, 0x45, 0x88, 0x7b, 0xf7, 0xd3, 0xe2, 0x7d, 0x5e, 0xa0, 0x4c, 0x37, 0x84, 0x95, 0xa9, 0x2b,
	0x89, 0x54, 0xa8, 0xf6, 0x80, 0x4e, 0x19, 0x9b, 0x93, 0x56, 0xfc, 0xc2, 0xaa, 0x40, 0x75, 0xec,
	0x4b, 0x24, 0x21, 0x57, 0x1f, 0x7e, 0x02, 0x00, 0x00, 0xff, 0xff, 0x03, 0xb2, 0x42, 0x9f, 0x3d,
	0x02, 0x00, 0x00,
}
