suiteutils

package
v1.6.4-pre.2 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2026 License: Apache-2.0 Imports: 52 Imported by: 0

Documentation

Index

Constants

View Source
const (
	GiteaClusterURL        = "http://gitea.gitea.svc.cluster.local:3000/porch/"
	GiteaUser              = "porch"
	GiteaPassword          = "secret"
	PorchTestRepoName      = "porch-test"
	TestBlueprintsRepoName = "test-blueprints"
	GiteaRepoAPi           = "http://localhost:3000/api/v1/repos/porch/" + PorchTestRepoName
)
View Source
const (
	// TODO: accept a flag?
	PorchTestConfigFile = "porch-test-config.yaml"

	GiteaUserEnv       = "GITEA_USER"
	GiteaPasswordEnv   = "GITEA_PASS"
	GiteaClusterUrlEnv = "GITEA_HOST"
)
View Source
const (
	TestGitServerImage = "test-git-server"
)

Variables

View Source
var (
	PackageRevisionGVK = porchapi.SchemeGroupVersion.WithKind("PackageRevision")
)

Functions

func DebugFormat

func DebugFormat(obj client.Object) string

func DraftGitBranchName

func DraftGitBranchName(packageName, workspaceName string) string

func InferGitServerImage

func InferGitServerImage(porchImage string) string

func IsPorchTestRepo

func IsPorchTestRepo(repo string) bool

IsPorchTestRepo checks if a repository URL is specifically the porch-test repository

func RecreateGiteaRepo added in v1.6.0

func RecreateGiteaRepo(t *testing.T, repoName string)

RecreateGiteaRepo recreates a Gitea repository to its initial state

func RunInParallel

func RunInParallel(functions ...func() any) []any

func SplitContainerFullName

func SplitContainerFullName(fullName string) (repo, image, tag string)

Types

type ErrorHandler

type ErrorHandler func(format string, args ...any)

type GitConfig

type GitConfig struct {
	Repo      string   `json:"repo"`
	Branch    string   `json:"branch"`
	Directory string   `json:"directory"`
	Username  string   `json:"username"`
	Password  Password `json:"password"`
}

type MetricResult added in v1.5.12

type MetricResult struct {
	Value      model.SampleValue
	Attributes model.LabelSet
}

type MetricsCollectionResults

type MetricsCollectionResults struct {
	PorchServerMetrics         string
	PorchControllerMetrics     string
	PorchFunctionRunnerMetrics string
	PorchWrapperServerMetrics  string
}

func (*MetricsCollectionResults) Parse added in v1.5.12

type MultiClusterTestSuite

type MultiClusterTestSuite struct {
	TestSuite

	PorchRoot string
	// contains filtered or unexported fields
}

func (*MultiClusterTestSuite) DropCachedClients

func (t *MultiClusterTestSuite) DropCachedClients(kubeconfigPath string)

func (*MultiClusterTestSuite) PackageRevisionCountsMustMatch

func (t *MultiClusterTestSuite) PackageRevisionCountsMustMatch(expected *PackageRevisionStatusCounts)

func (*MultiClusterTestSuite) SetupSuite

func (t *MultiClusterTestSuite) SetupSuite()

func (*MultiClusterTestSuite) UseKubeconfigFile

func (t *MultiClusterTestSuite) UseKubeconfigFile(kubeconfigPath string) error

type MutatorOption

type MutatorOption func(*kptfilev1.Function)

func WithConfigPath

func WithConfigPath(configPath string) MutatorOption

func WithConfigmap

func WithConfigmap(configMap map[string]string) MutatorOption

type PackageRevisionFilter

type PackageRevisionFilter struct {
	Revision  int
	Workspace string
}

type PackageRevisionStatusCounts

type PackageRevisionStatusCounts struct {
	Total, Draft, Proposed, Published, DeletionProposed int
}

func (*PackageRevisionStatusCounts) String

func (c *PackageRevisionStatusCounts) String() string

type ParsedMetricsResults added in v1.5.12

type ParsedMetricsResults struct {
	PorchServerMetrics         map[string][]MetricResult
	PorchControllerMetrics     map[string][]MetricResult
	PorchFunctionRunnerMetrics map[string][]MetricResult
	PorchWrapperServerMetrics  map[string][]MetricResult
}

type Password

type Password string

func (Password) String

func (p Password) String() string

type RepositoryOption

type RepositoryOption func(*configapi.Repository)

func InNamespace

func InNamespace(ns string) RepositoryOption

func WithBranch

func WithBranch(branch string) RepositoryOption

func WithDeployment

func WithDeployment() RepositoryOption

type RepositoryOptions

type RepositoryOptions struct {
	RepOpts RepositoryOption
	SecOpts SecretOption
}

type SecretOption

type SecretOption func(*corev1.Secret)

func SecretInNamespace

func SecretInNamespace(ns string) SecretOption

type TestSuite

type TestSuite struct {
	suite.Suite

	Kubeconfig *rest.Config
	Client     client.Client
	Reader     client.Reader

	// Strongly-typed client handy for reading e.g. pod logs
	KubeClient kubernetes.Interface

	GiteaUser     string
	GiteaPassword string
	GiteaUrl      string

	Namespace         string // K8s namespace for this test run
	TestRunnerIsLocal bool   // Tests running against local dev porch

	UsingDBCache bool // Tests running against Porch with database cache
	// contains filtered or unexported fields
}

func (*TestSuite) AddMutator

func (t *TestSuite) AddMutator(resources *porchapi.PackageRevisionResources, image string, opts ...MutatorOption)

addMutator adds a mutator to the Kptfile pipeline of the resources (in-place)

func (*TestSuite) AddResourceToPackage

func (t *TestSuite) AddResourceToPackage(resources *porchapi.PackageRevisionResources, filePath string, name string)

func (*TestSuite) BuildGitRepoObject

func (t *TestSuite) BuildGitRepoObject(repoName, repoURL, secretName string) client.Object

BuildGitRepoObject returns a new configapi.Repository pointing at repoURL using the given secret. This is useful when managing two registrations of the same repo within a single test.

func (*TestSuite) CheckRenderError

func (t *TestSuite) CheckRenderError(rs *porchapi.RenderStatus) error

func (*TestSuite) Cleanup

func (t *TestSuite) Cleanup(f func())

func (*TestSuite) CollectMetricsFromPods

func (t *TestSuite) CollectMetricsFromPods() (*MetricsCollectionResults, error)

func (*TestSuite) CompareStringYAML

func (t *TestSuite) CompareStringYAML(expectedContents string, gotContents string) string

func (*TestSuite) CountPackageRevisions

func (t *TestSuite) CountPackageRevisions() (*PackageRevisionStatusCounts, error)

func (*TestSuite) CreateE

func (t *TestSuite) CreateE(obj client.Object, opts ...client.CreateOption)

func (*TestSuite) CreateF

func (t *TestSuite) CreateF(obj client.Object, opts ...client.CreateOption)

func (*TestSuite) CreateGitRepo

func (t *TestSuite) CreateGitRepo() GitConfig

func (*TestSuite) CreateGiteaRepo

func (t *TestSuite) CreateGiteaRepo(repoName string) string

func (*TestSuite) CreateGiteaRepoNoCleanup

func (t *TestSuite) CreateGiteaRepoNoCleanup(repoName string) string

func (*TestSuite) CreateOrUpdateE

func (t *TestSuite) CreateOrUpdateE(obj client.Object, opts ...client.CreateOption)

func (*TestSuite) CreateOrUpdateF

func (t *TestSuite) CreateOrUpdateF(obj client.Object, opts ...client.CreateOption)

func (*TestSuite) CreateOrUpdateSecret

func (t *TestSuite) CreateOrUpdateSecret(name string, username string, password Password, opts ...RepositoryOptions) string

func (*TestSuite) CreatePackageCloneF

func (t *TestSuite) CreatePackageCloneF(repoName, packageName, workspace, ref, directory string) *porchapi.PackageRevision

CreatePackageCloneF creates a package revision with a clone task. Assumes the GitePackage.SecretRef was created by t.RegisterGitRepositoryF.

func (*TestSuite) CreatePackageDraftF

func (t *TestSuite) CreatePackageDraftF(repository, packageName, workspace string) *porchapi.PackageRevision

Creates an empty package draft by initializing an empty package

func (*TestSuite) CreatePackageSkeleton

func (t *TestSuite) CreatePackageSkeleton(repoName, packageName, workspace string) *porchapi.PackageRevision

func (*TestSuite) DeleteE

func (t *TestSuite) DeleteE(obj client.Object, opts ...client.DeleteOption)

func (*TestSuite) DeleteEH

func (t *TestSuite) DeleteEH(obj client.Object, eh ErrorHandler, opts ...client.DeleteOption)

DeleteEH calls delete with a custom ErrorHandler

func (*TestSuite) DeleteF

func (t *TestSuite) DeleteF(obj client.Object, opts ...client.DeleteOption)

func (*TestSuite) DeleteGiteaRepo

func (t *TestSuite) DeleteGiteaRepo(repoName string)

DeleteGiteaRepo deletes a Gitea repository owned by t.GiteaUser.

func (*TestSuite) DeleteL

func (t *TestSuite) DeleteL(obj client.Object, opts ...client.DeleteOption)

func (*TestSuite) DumpLogsForDeploymentE

func (t *TestSuite) DumpLogsForDeploymentE(deploymentKey client.ObjectKey)

func (*TestSuite) Error

func (t *TestSuite) Error(args ...any)

func (*TestSuite) Errorf

func (t *TestSuite) Errorf(format string, args ...any)

func (*TestSuite) Fatal

func (t *TestSuite) Fatal(args ...any)

func (*TestSuite) Fatalf

func (t *TestSuite) Fatalf(format string, args ...any)

func (*TestSuite) FindAndDecodeF

func (t *TestSuite) FindAndDecodeF(resources *porchapi.PackageRevisionResources, name string, value any)

func (*TestSuite) FindFirstContainerByImageName

func (t *TestSuite) FindFirstContainerByImageName(ns string, wantedImages ...string) *coreapi.Container

func (*TestSuite) FnNamespaceName

func (t *TestSuite) FnNamespaceName() string

func (*TestSuite) GetContext

func (t *TestSuite) GetContext() context.Context

func (*TestSuite) GetE

func (t *TestSuite) GetE(key client.ObjectKey, obj client.Object)

func (*TestSuite) GetF

func (t *TestSuite) GetF(key client.ObjectKey, obj client.Object)

func (*TestSuite) GetGiteaApiURL

func (t *TestSuite) GetGiteaApiURL() string

func (*TestSuite) GetPackageRevision

func (t *TestSuite) GetPackageRevision(repo string, pkgName string, revision int) *porchapi.PackageRevision

func (*TestSuite) GetPackageRevisionWithFilter

func (t *TestSuite) GetPackageRevisionWithFilter(repo, pkgName string, filter PackageRevisionFilter) *porchapi.PackageRevision

func (*TestSuite) GetPackageRevisionWithWS

func (t *TestSuite) GetPackageRevisionWithWS(repoName, packageName, workspace string) *porchapi.PackageRevision

func (*TestSuite) GetPorchTestRepoURL

func (t *TestSuite) GetPorchTestRepoURL() string

GetPorchTestRepoURL returns the dynamic PorchTestRepo URL

func (*TestSuite) GetTestBlueprintsRepoURL

func (t *TestSuite) GetTestBlueprintsRepoURL() string

GetTestBlueprintsRepoURL returns the dynamic TestBlueprintsRepo URL

func (*TestSuite) GiteaBranchExists

func (t *TestSuite) GiteaBranchExists(repoName, branchName string) bool

GiteaBranchExists returns true when the named branch exists in the given Gitea

func (*TestSuite) GiteaCommitFileToBranch

func (t *TestSuite) GiteaCommitFileToBranch(repoName, branchName, filePath, fileContent, commitMsg string)

GiteaCommitFileToBranch creates a new file on the given branch via the Gitea Contents API.

func (*TestSuite) GiteaGetBranchLatestCommitSHA

func (t *TestSuite) GiteaGetBranchLatestCommitSHA(repoName, branchName string) string

GiteaGetBranchLatestCommitSHA returns the latest commit SHA on the given branch.

func (*TestSuite) GiteaRepoTagCount

func (t *TestSuite) GiteaRepoTagCount(repoName string) int

func (*TestSuite) Initialize

func (t *TestSuite) Initialize()

func (*TestSuite) IsPorchServerInCluster

func (t *TestSuite) IsPorchServerInCluster() bool

func (*TestSuite) IsRepoControllerInCluster added in v1.6.0

func (t *TestSuite) IsRepoControllerInCluster() bool

func (*TestSuite) IsTestRunnerInCluster

func (t *TestSuite) IsTestRunnerInCluster() bool

func (*TestSuite) ListE

func (t *TestSuite) ListE(list client.ObjectList, opts ...client.ListOption)

func (*TestSuite) ListF

func (t *TestSuite) ListF(list client.ObjectList, opts ...client.ListOption)

func (*TestSuite) Log

func (t *TestSuite) Log(args ...any)

func (*TestSuite) Logf

func (t *TestSuite) Logf(format string, args ...any)

func (*TestSuite) MustExist

func (t *TestSuite) MustExist(key client.ObjectKey, obj client.Object)

func (*TestSuite) MustFindPackageRevision

func (t *TestSuite) MustFindPackageRevision(packages *porchapi.PackageRevisionList, name repository.PackageRevisionKey) *porchapi.PackageRevision

func (*TestSuite) MustHaveLabels

func (t *TestSuite) MustHaveLabels(name string, labels map[string]string)

func (*TestSuite) MustNotExist

func (t *TestSuite) MustNotExist(obj client.Object)

func (*TestSuite) MustNotHaveLabels

func (t *TestSuite) MustNotHaveLabels(name string, labels []string)

func (*TestSuite) Name

func (t *TestSuite) Name() string

func (*TestSuite) ParseKptfileF

func (t *TestSuite) ParseKptfileF(resources *porchapi.PackageRevisionResources) *kptfilev1.KptFile

func (*TestSuite) PatchE

func (t *TestSuite) PatchE(obj client.Object, patch client.Patch, opts ...client.PatchOption)

func (*TestSuite) PatchF

func (t *TestSuite) PatchF(obj client.Object, patch client.Patch, opts ...client.PatchOption)

func (*TestSuite) PorchServerServiceKey

func (t *TestSuite) PorchServerServiceKey() client.ObjectKey

func (*TestSuite) RecreateGiteaTestRepo

func (t *TestSuite) RecreateGiteaTestRepo()

RecreateGiteaTestRepo recreates the porch-test repository to its initial state

func (*TestSuite) RegisterGitRepositoryF

func (t *TestSuite) RegisterGitRepositoryF(repo, name, directory string, username string, password Password, opts ...RepositoryOptions)

func (*TestSuite) RequestRepoSync

func (t *TestSuite) RequestRepoSync(repoName string) time.Time

RequestRepoSync schedules a one-time repository sync via spec.sync.runOnceAt. Unlike TriggerRepoSync, it does not wait for the sync to complete.

func (*TestSuite) RetriggerBackgroundJobForRepo

func (t *TestSuite) RetriggerBackgroundJobForRepo(repoName string)

func (*TestSuite) SaveKptfileF

func (t *TestSuite) SaveKptfileF(resources *porchapi.PackageRevisionResources, kptfile *kptfilev1.KptFile)

func (*TestSuite) SetGiteaRepoArchived

func (t *TestSuite) SetGiteaRepoArchived(repoName string, archived bool)

SetGiteaRepoArchived archives or un-archives a Gitea repository owned by

func (*TestSuite) SetupSuite

func (t *TestSuite) SetupSuite()

func (*TestSuite) Skipf

func (t *TestSuite) Skipf(format string, args ...any)

func (*TestSuite) TimingHelper

func (t *TestSuite) TimingHelper(operationDescription string, toTime func(t *TestSuite))

func (*TestSuite) TriggerRepoSync

func (t *TestSuite) TriggerRepoSync(repoName string, timeout time.Duration)

func (*TestSuite) UpdateApprovalE

func (t *TestSuite) UpdateApprovalE(pr *porchapi.PackageRevision) error

UpdateApprovalE returns error for concurrent testing

func (*TestSuite) UpdateApprovalF

func (t *TestSuite) UpdateApprovalF(pr *porchapi.PackageRevision) *porchapi.PackageRevision

func (*TestSuite) UpdateApprovalL

func (t *TestSuite) UpdateApprovalL(pr *porchapi.PackageRevision) *porchapi.PackageRevision

func (*TestSuite) UpdateE

func (t *TestSuite) UpdateE(obj client.Object, opts ...client.UpdateOption)

func (*TestSuite) UpdateF

func (t *TestSuite) UpdateF(obj client.Object, opts ...client.UpdateOption)

func (*TestSuite) UpdateKptfile added in v1.6.3

func (t *TestSuite) UpdateKptfile(pr *porchapi.PackageRevision, edits func(*kptfilev1.KptFile)) error

func (*TestSuite) ValidateFinalizers

func (t *TestSuite) ValidateFinalizers(name string, finalizers []string)

func (*TestSuite) ValidateLabelsAndAnnos

func (t *TestSuite) ValidateLabelsAndAnnos(name string, labels, annos map[string]string)

func (*TestSuite) ValidateOwnerReferences

func (t *TestSuite) ValidateOwnerReferences(name string, ownerRefs []metav1.OwnerReference)

func (*TestSuite) WaitForNextRepoSync

func (t *TestSuite) WaitForNextRepoSync(repoName string, timeout time.Duration, baselineLastSync, triggeredRunOnceAt time.Time)

func (*TestSuite) WaitUntilAllPackageRevisionsDeleted

func (t *TestSuite) WaitUntilAllPackageRevisionsDeleted(repoName string, namespace string)

func (*TestSuite) WaitUntilAllPackageRevsDeleted

func (t *TestSuite) WaitUntilAllPackageRevsDeleted(repoName string, namespace string)

func (*TestSuite) WaitUntilAllPackageVariantsReady

func (t *TestSuite) WaitUntilAllPackageVariantsReady()

func (*TestSuite) WaitUntilAllPackagesDeleted

func (t *TestSuite) WaitUntilAllPackagesDeleted(repoName string, namespace string)

func (*TestSuite) WaitUntilGiteaBranchExists

func (t *TestSuite) WaitUntilGiteaBranchExists(repoName, branchName string, timeout time.Duration)

WaitUntilGiteaBranchExists polls until the named branch appears in the Gitea repository.

func (*TestSuite) WaitUntilGiteaBranchHasNewCommit

func (t *TestSuite) WaitUntilGiteaBranchHasNewCommit(repoName, branchName, oldCommitSHA string, timeout time.Duration) string

WaitUntilGiteaBranchHasNewCommit polls until the branch's latest commit SHA differs from oldCommitSHA and returns the new SHA.

func (*TestSuite) WaitUntilMultipleRepositoriesReady

func (t *TestSuite) WaitUntilMultipleRepositoriesReady(waitingRepos []configapi.Repository)

func (*TestSuite) WaitUntilObjectDeleted

func (t *TestSuite) WaitUntilObjectDeleted(gvk schema.GroupVersionKind, namespacedName types.NamespacedName, d time.Duration)

func (*TestSuite) WaitUntilPackageRevisionExists

func (t *TestSuite) WaitUntilPackageRevisionExists(repository string, pkgName string, revision int) *porchapi.PackageRevision

func (*TestSuite) WaitUntilPackageRevisionFulfillingConditionExists

func (t *TestSuite) WaitUntilPackageRevisionFulfillingConditionExists(
	timeout time.Duration,
	condition func(porchapi.PackageRevision) bool,
) (*porchapi.PackageRevision, error)

func (*TestSuite) WaitUntilPackageRevisionResourcesExists

func (t *TestSuite) WaitUntilPackageRevisionResourcesExists(
	key types.NamespacedName,
) *porchapi.PackageRevisionResources

func (*TestSuite) WaitUntilRepositoryDeleted

func (t *TestSuite) WaitUntilRepositoryDeleted(name, namespace string)

func (*TestSuite) WaitUntilRepositoryReady

func (t *TestSuite) WaitUntilRepositoryReady(name, namespace string)

WaitUntilRepositoryReady waits for up to 300 seconds for the repository with the provided name and namespace is ready, i.e. the Ready condition is true. It also queries for PackageRevisions, to ensure these are also ready - this is an artifact of the way we've implemented the aggregated apiserver, where the first fetch can sometimes be synchronous.

type TestSuiteWithGit

type TestSuiteWithGit struct {
	TestSuite

	UseGitea             bool
	KrmFunctionsRegistry string
	// contains filtered or unexported fields
}

func (*TestSuiteWithGit) AddSleepFunctionToPipeline

func (t *TestSuiteWithGit) AddSleepFunctionToPipeline(prKey client.ObjectKey, sleepDuration time.Duration) error

func (*TestSuiteWithGit) SetupEnvVars

func (t *TestSuiteWithGit) SetupEnvVars()

func (*TestSuiteWithGit) SetupSuite

func (t *TestSuiteWithGit) SetupSuite()

Jump to

Keyboard shortcuts

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