commonbuilders

package
v0.0.0-...-6700e38 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 24, 2025 License: BSD-3-Clause Imports: 23 Imported by: 0

Documentation

Overview

Package commonbuilders defines common builders.

Index

Constants

View Source
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

View Source
var (
	ExcludedChromeosBuildPrefixes  = []string{"staging", "dev"}
	ExcludedChromeosBuildPostfixes = []string{"main"}
	ExcludedVariantPostfixes       = []string{"sdknext"}
	ExcludedRegexes                = []*regexp.Regexp{

		regexp.MustCompile("[0-9]+"),
	}
)
View Source
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

func BuildBaseVariant(board, model, buildTarget string) map[string]string

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

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

func ExtractBuildRNumber(buildStr string) int

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

func GetBuilderManifestFromContainer(ctx context.Context, gcsPath string) (string, error)

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 (*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 ManifestFetcher

type ManifestFetcher func(ctx context.Context, s string) (string, error)

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL