Documentation
¶
Overview ¶
Package commonbuilders defines common builders.
Index ¶
- Constants
- Variables
- func AppendDutTask(orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, ...)
- func AppendProvisionTask(orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, ...)
- func AppendPublishTask(orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, ...)
- func AppendTestTask(orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, ...)
- func BuildBaseVariant(board, model, buildTarget string) map[string]string
- func BuildCompanionDutProvisions(orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, ...)
- func BuildCrosDutRequest(deviceID *common.DeviceIdentifier) *api.ContainerRequest
- func BuildFwProvisionContainerRequest(deviceID *common.DeviceIdentifier) *api.ContainerRequest
- func BuildFwProvisionRequest(deviceID *common.DeviceIdentifier, ...) *api.ProvisionTask
- func BuildPostProcessContainerRequest(identifier string) *api.ContainerRequest
- func BuildPostProcessRequest(dynamicID string) *api.PostTestTask
- func BuildPrimaryDutProvision(orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, ...)
- func BuildProvision(deviceID *common.DeviceIdentifier, ...)
- func BuildProvisionContainerRequest(deviceID *common.DeviceIdentifier, isAndroid bool) *api.ContainerRequest
- func BuildProvisionRequest(deviceID *common.DeviceIdentifier, ...) *api.ProvisionTask
- func BuildPublishContainerRequest(identifier string, publishType api.CrosPublishTemplate_PublishType, ...) *api.ContainerRequest
- func BuildPublishRequest(dynamicID, artifactPath string, metadata *anypb.Any, deps []*api.DynamicDep, ...) *api.PublishTask
- func BuildServoNexusContainerRequest(deviceID *common.DeviceIdentifier) *api.ContainerRequest
- func ContainsFwProvisionState(state *api.ProvisionState) bool
- func DefaultDynamicGcsPublishTask(builder *DynamicTrv2Builder) []*api.CrosTestRunnerDynamicRequest_Task
- func ExtractBuildRNumber(buildStr string) int
- func FilterV2RequestsBasedOnManifest(ctx context.Context, v2s []*V2WithKey, manifestFetcher ManifestFetcher) ([]*V2WithKey, []*V2WithKey)
- func GetBuildType(softwareDeps []*test_platform.Request_Params_SoftwareDependency) string
- func GetBuilderManifestFromContainer(ctx context.Context, gcsPath string) (string, error)
- func GetRetryCount(v1 *test_platform.Request) int64
- func GetVariant(softwareDeps []*test_platform.Request_Params_SoftwareDependency) string
- func IsAndroidProvisionState(state *api.ProvisionState) bool
- func IsDDDSuite(v1 *test_platform.Request) bool
- func PatchContainerMetadata(ctx context.Context, metadata *buildapi.ContainerMetadata, ...) *buildapi.ContainerMetadata
- type CTPV2FromV1
- type DynamicTaskBuilder
- func DefaultDynamicPostProcessTaskWrapper() DynamicTaskBuilder
- func DefaultDynamicProvisionTasksWrapper(cft *skylab_test_runner.CFTTestRequest) DynamicTaskBuilder
- func DefaultDynamicRdbPublishTaskWrapper(gsPath string, isDeploymentDirty, is3DRun bool) DynamicTaskBuilder
- func DefaultDynamicTestTaskWrapper(containerImageKey string) DynamicTaskBuilder
- type DynamicTrv2Builder
- type DynamicTrv2FromCft
- type ManifestFetcher
- type V2WithKey
Constants ¶
const ( DefaultChromeosBuildGcsBucket = "chromeos-image-archive" ChromeosBuild = "chromeos_build" ChromeosBuildGcsBucket = "chromeos_build_gcs_bucket" RoFirmwareBuild = "ro_firmware_build" RwFirmwareBuild = "rw_firmware_build" LacrosGcsPath = "lacros_gcs_path" AndroidImageVersion = "android_image_version" GmsCorePackage = "gms_core_package" Public = "PUBLIC" Private = "PRIVATE" )
Variables ¶
var ( ExcludedChromeosBuildPrefixes = []string{"staging", "dev"} ExcludedChromeosBuildPostfixes = []string{"main"} ExcludedVariantPostfixes = []string{"sdknext"} ExcludedRegexes = []*regexp.Regexp{ regexp.MustCompile("[0-9]+"), } )
var ( PullFromFirestore = []string{ common.CrosDut, common.CrosProvision, common.ServoNexus, } )
Functions ¶
func AppendDutTask ¶
func AppendDutTask( orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, containerRequest *api.ContainerRequest)
AppendDutTask takes a DutContainer request and appends it to orderedTasks.
func AppendProvisionTask ¶
func AppendProvisionTask( orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, containerRequest *api.ContainerRequest, provisionRequest *api.ProvisionTask)
AppendProvisionTask takes a provision container request and a provision request and appends it to orderedTasks.
func AppendPublishTask ¶
func AppendPublishTask( orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, containerRequest *api.ContainerRequest, publishRequest *api.PublishTask, required bool)
AppendPublishTask takes a publish container request and a publish request and appends it to orderedTasks.
func AppendTestTask ¶
func AppendTestTask( orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, containerRequest *api.ContainerRequest, testRequest *api.TestTask)
AppendTestTask takes a test container request and a test request and appends it to orderedTasks.
func BuildBaseVariant ¶
BuildBaseVariant constructs the base variant for rdb publishes.
func BuildCompanionDutProvisions ¶
func BuildCompanionDutProvisions(orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, cft *skylab_test_runner.CFTTestRequest)
BuildCompanionDutProvisions attempts to use the CompanionDuts from CftTestRequest to construct multiple cros-dut and provision task requests.
func BuildCrosDutRequest ¶
func BuildCrosDutRequest(deviceID *common.DeviceIdentifier) *api.ContainerRequest
BuildCrosDutRequest is a helper function to construct a ContainerRequest with the CrosDut template, using a deviceId to dynamically execute it.
func BuildFwProvisionContainerRequest ¶
func BuildFwProvisionContainerRequest(deviceID *common.DeviceIdentifier) *api.ContainerRequest
BuildFwProvisionContainerRequest creates a container request for a certain deviceId, specifically geared towards supported cros-fw-provisions.
func BuildFwProvisionRequest ¶
func BuildFwProvisionRequest(deviceID *common.DeviceIdentifier, device *skylab_test_runner.CFTTestRequest_Device) *api.ProvisionTask
BuildFwProvisionRequest creates a generic provision request using the FirmwareConfig within the device's provided provision state as part of the install request.
func BuildPostProcessContainerRequest ¶
func BuildPostProcessContainerRequest(identifier string) *api.ContainerRequest
BuildPostProcessContainerRequest constructs a ContainerRequest for post-process.
func BuildPostProcessRequest ¶
func BuildPostProcessRequest(dynamicID string) *api.PostTestTask
BuildPostProcessRequest constructs a PostProcessRequest with provided dependencies.
func BuildPrimaryDutProvision ¶
func BuildPrimaryDutProvision(orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task, cft *skylab_test_runner.CFTTestRequest)
BuildPrimaryDutProvision attempts to use the PrimaryDut from CftTestRequest to construct a cros-dut and provision task request.
func BuildProvision ¶
func BuildProvision( deviceID *common.DeviceIdentifier, dut *skylab_test_runner.CFTTestRequest_Device, orderedTasks *[]*api.CrosTestRunnerDynamicRequest_Task)
BuildProvision checks for each possible type of provision that might occur and calls into the corresponding provision builder function.
func BuildProvisionContainerRequest ¶
func BuildProvisionContainerRequest(deviceID *common.DeviceIdentifier, isAndroid bool) *api.ContainerRequest
BuildProvisionContainerRequest constructs a ContainerRequest for a certain deviceId with variations for android devices.
func BuildProvisionRequest ¶
func BuildProvisionRequest(deviceID *common.DeviceIdentifier, device *skylab_test_runner.CFTTestRequest_Device) *api.ProvisionTask
BuildProvisionRequest takes a Cft device to construct a ProvisionRequest. Checks provision state to determine install request.
func BuildPublishContainerRequest ¶
func BuildPublishContainerRequest(identifier string, publishType api.CrosPublishTemplate_PublishType, deps []*api.DynamicDep) *api.ContainerRequest
BuildPublishContainerRequest constructs a ContainerRequest for cros-publish using parameters marking the publish type.
func BuildPublishRequest ¶
func BuildPublishRequest(dynamicID, artifactPath string, metadata *anypb.Any, deps []*api.DynamicDep, is3DRun bool) *api.PublishTask
BuildPublishRequest constructs a PublishRequest with provided dependencies.
func BuildServoNexusContainerRequest ¶
func BuildServoNexusContainerRequest(deviceID *common.DeviceIdentifier) *api.ContainerRequest
BuildServoNexusContainerRequest constructs a ContainerRequest for servo-nexus
func ContainsFwProvisionState ¶
func ContainsFwProvisionState(state *api.ProvisionState) bool
ContainsFwProvisionState checks if there is fw provision info in the provision state.
func DefaultDynamicGcsPublishTask ¶
func DefaultDynamicGcsPublishTask(builder *DynamicTrv2Builder) []*api.CrosTestRunnerDynamicRequest_Task
DefaultDynamicGcsPublishTask creates the default gsc publish task.
func ExtractBuildRNumber ¶
ExtractBuildRNumber takes any build string and extracts the major digits found within the R#. If no R number match found, return -1.
func FilterV2RequestsBasedOnManifest ¶
func FilterV2RequestsBasedOnManifest(ctx context.Context, v2s []*V2WithKey, manifestFetcher ManifestFetcher) ([]*V2WithKey, []*V2WithKey)
FilterV2RequestsBasedOnManifest divides the ctp requests into two groups based on the manifest from container image info. One set for "PUBLIC" manifest and another for others.
func GetBuildType ¶
func GetBuildType(softwareDeps []*test_platform.Request_Params_SoftwareDependency) string
GetBuildType parses the software dependency's ChromeosBuild into the build type by taking the last part after removing postfixes.
func GetBuilderManifestFromContainer ¶
GetBuilderManifestFromContainer returns the manifest info fetched from container image info
func GetRetryCount ¶
func GetRetryCount(v1 *test_platform.Request) int64
GetRetryCount returns the retry count from v1 request. By default it will be 0 which means no retry.
func GetVariant ¶
func GetVariant(softwareDeps []*test_platform.Request_Params_SoftwareDependency) string
GetVariant parses the software dependency's ChromeosBuild and removes the prefixes, postfixes, and base board.
func IsAndroidProvisionState ¶
func IsAndroidProvisionState(state *api.ProvisionState) bool
IsAndroidProvisionState checks if the metadata of the provision state can unmarshal to an android metadata.
func IsDDDSuite ¶
func IsDDDSuite(v1 *test_platform.Request) bool
IsDDDSuite will return if the suite is to run in ddd. TODO (b:327505895): For now, use the ddd prefix, but long term will move to a proper flag.
func PatchContainerMetadata ¶
func PatchContainerMetadata(ctx context.Context, metadata *buildapi.ContainerMetadata, buildStr, creds, envVersion string, firestoreDBName string) *buildapi.ContainerMetadata
PatchContainerMetadata loops through each container info and applies patches to certain containers based on the build version.
Types ¶
type CTPV2FromV1 ¶
type CTPV2FromV1 struct { interfaces.CTPv2Builder // contains filtered or unexported fields }
func NewCTPV2FromV1 ¶
func NewCTPV2FromV1(ctx context.Context, v1 map[string]*test_platform.Request, buildState *build.State) *CTPV2FromV1
func NewCTPV2FromV1WithCustomManifestFetcher ¶
func NewCTPV2FromV1WithCustomManifestFetcher(ctx context.Context, v1 map[string]*test_platform.Request, manifestFetcher ManifestFetcher, buildState *build.State) *CTPV2FromV1
func (*CTPV2FromV1) BuildRequest ¶
func (builder *CTPV2FromV1) BuildRequest() (map[string]*testapi.CTPRequest, map[string][]string, map[string]bool)
type DynamicTaskBuilder ¶
type DynamicTaskBuilder func(*DynamicTrv2Builder) []*api.CrosTestRunnerDynamicRequest_Task
func DefaultDynamicPostProcessTaskWrapper ¶
func DefaultDynamicPostProcessTaskWrapper() DynamicTaskBuilder
DefaultDynamicPostProcessTaskWrapper creates the default post-process task.
func DefaultDynamicProvisionTasksWrapper ¶
func DefaultDynamicProvisionTasksWrapper(cft *skylab_test_runner.CFTTestRequest) DynamicTaskBuilder
DefaultDynamicProvisionTasksWrapper constructs the default provisions for a Cft request.
func DefaultDynamicRdbPublishTaskWrapper ¶
func DefaultDynamicRdbPublishTaskWrapper(gsPath string, isDeploymentDirty, is3DRun bool) DynamicTaskBuilder
DefaultDynamicRdbPublishTaskWrapper creates the default rdb publish task.
func DefaultDynamicTestTaskWrapper ¶
func DefaultDynamicTestTaskWrapper(containerImageKey string) DynamicTaskBuilder
DefaultDynamicTestTaskWrapper constructs a TestRequest using default dependencies.
type DynamicTrv2Builder ¶
type DynamicTrv2Builder struct { // Inputs ParentBuildID int64 ParentRequestUID string Deadline *timestamppb.Timestamp // Oneof GcsArtifactPath string ContainerMetadata *buildapi.ContainerMetadata // End Oneof ContainerMetadataKey string BuildString string TestSuites []*api.TestSuite PrimaryDut *labapi.DutModel CompanionDuts []*labapi.DutModel Keyvals map[string]string OrderedTaskBuilders []DynamicTaskBuilder CredentialsFile string // EnvVersion denotes whether the environment // is prod or something else. EnvVersion string FirestoreDBName string Is3DRun bool IsALRun bool BotDims []*buildbucketpb.StringPair BuildExperiments []string PublishKeys []*api.PublishKey }
func (*DynamicTrv2Builder) BuildRequest ¶
func (builder *DynamicTrv2Builder) BuildRequest(ctx context.Context, isALRun bool) (*api.CrosTestRunnerDynamicRequest, error)
BuildRequest constructs the trv2 dynamic CrosTestRunnerDynamicRequest.
type DynamicTrv2FromCft ¶
type DynamicTrv2FromCft struct { interfaces.DynamicTRv2Builder Cft *skylab_test_runner.CFTTestRequest }
func NewDynamicTrv2FromCftBuilder ¶
func NewDynamicTrv2FromCftBuilder(cft *skylab_test_runner.CFTTestRequest) *DynamicTrv2FromCft
func (*DynamicTrv2FromCft) BuildRequest ¶
func (builder *DynamicTrv2FromCft) BuildRequest(ctx context.Context, isALRun bool, isPartnerRun bool, botDims []*buildbucketpb.StringPair, buildExperiments []string) (*api.CrosTestRunnerDynamicRequest, error)
BuildRequest extracts necessary information from the cft test request to build out the dynamic trv2 request.
type V2WithKey ¶
type V2WithKey struct { Key string V2 *testapi.CTPRequest }
func GroupEligibleV2Requests ¶
func GroupEligibleV2Requests(ctx context.Context, v2s []*V2WithKey) ([]*V2WithKey, map[string][]string)
GroupEligibleV2Requests reduces the list of v2 requests by grouping by build and suite request.
func GroupV2Requests ¶
func GroupV2Requests(ctx context.Context, v2s []*V2WithKey, manifestFetcher ManifestFetcher) ([]*V2WithKey, map[string][]string)
GroupV2Requests filters CTP requests list by manifest. "PUBLIC" manifest will not be grouped. The manifest information is fetched from container image info. Eligible requests are grouped together based on suite and board. The function then returns the grouped eligible requests.
NOTE: The manifest is being fetched from container image info because that's info is used while generating new containers or resuing cache containers. "PUBLIC" manifest boards do not use cached containers and therefore grouping shouldn't be done.
func NewV2WithKey ¶
func NewV2WithKey(key string, v2 *testapi.CTPRequest) *V2WithKey