Documentation
¶
Index ¶
- Constants
- Variables
- func DebugFormat(obj client.Object) string
- func InferGitServerImage(porchImage string) string
- func IsPorchTestRepo(repo string) bool
- func RunInParallel(functions ...func() any) []any
- func SplitContainerFullName(fullName string) (repo, image, tag string)
- type ErrorHandler
- type GitConfig
- type MetricsCollectionResults
- type MultiClusterTestSuite
- type MutatorOption
- type PackageRevisionStatusCounts
- type Password
- type RepositoryOption
- type RepositoryOptions
- type SecretOption
- type TestSuite
- func (t *TestSuite) AddMutator(resources *porchapi.PackageRevisionResources, image string, ...)
- func (t *TestSuite) AddResourceToPackage(resources *porchapi.PackageRevisionResources, filePath string, name string)
- func (t *TestSuite) CheckRenderError(rs *porchapi.RenderStatus) error
- func (t *TestSuite) Cleanup(f func())
- func (t *TestSuite) CollectMetricsFromPods() (*MetricsCollectionResults, error)
- func (t *TestSuite) CompareStringYAML(expectedContents string, gotContents string) string
- func (t *TestSuite) CountPackageRevisions() (*PackageRevisionStatusCounts, error)
- func (t *TestSuite) CreateE(obj client.Object, opts ...client.CreateOption)
- func (t *TestSuite) CreateF(obj client.Object, opts ...client.CreateOption)
- func (t *TestSuite) CreateGitRepo() GitConfig
- func (t *TestSuite) CreateOrUpdateE(obj client.Object, opts ...client.CreateOption)
- func (t *TestSuite) CreateOrUpdateF(obj client.Object, opts ...client.CreateOption)
- func (t *TestSuite) CreateOrUpdateSecret(name string, username string, password Password, opts ...RepositoryOptions) string
- func (t *TestSuite) CreatePackageCloneF(repoName, packageName, workspace, ref, directory string) *porchapi.PackageRevision
- func (t *TestSuite) CreatePackageDraftF(repository, packageName, workspace string) *porchapi.PackageRevision
- func (t *TestSuite) CreatePackageSkeleton(repoName, packageName, workspace string) *porchapi.PackageRevision
- func (t *TestSuite) DeleteE(obj client.Object, opts ...client.DeleteOption)
- func (t *TestSuite) DeleteEH(obj client.Object, eh ErrorHandler, opts ...client.DeleteOption)
- func (t *TestSuite) DeleteF(obj client.Object, opts ...client.DeleteOption)
- func (t *TestSuite) DeleteL(obj client.Object, opts ...client.DeleteOption)
- func (t *TestSuite) DumpLogsForDeploymentE(deploymentKey client.ObjectKey)
- func (t *TestSuite) Error(args ...any)
- func (t *TestSuite) Errorf(format string, args ...any)
- func (t *TestSuite) Fatal(args ...any)
- func (t *TestSuite) Fatalf(format string, args ...any)
- func (t *TestSuite) FindAndDecodeF(resources *porchapi.PackageRevisionResources, name string, value interface{})
- func (t *TestSuite) FindFirstContainerByImageName(ns string, wantedImages ...string) *coreapi.Container
- func (t *TestSuite) FnNamespaceName() string
- func (t *TestSuite) GetContext() context.Context
- func (t *TestSuite) GetE(key client.ObjectKey, obj client.Object)
- func (t *TestSuite) GetF(key client.ObjectKey, obj client.Object)
- func (t *TestSuite) GetPackageRevision(repo string, pkgName string, revision int) *porchapi.PackageRevision
- func (t *TestSuite) GetPorchTestRepoURL() string
- func (t *TestSuite) GetTestBlueprintsRepoURL() string
- func (t *TestSuite) Initialize()
- func (t *TestSuite) IsPorchServerInCluster() bool
- func (t *TestSuite) IsTestRunnerInCluster() bool
- func (t *TestSuite) ListE(list client.ObjectList, opts ...client.ListOption)
- func (t *TestSuite) ListF(list client.ObjectList, opts ...client.ListOption)
- func (t *TestSuite) Log(args ...any)
- func (t *TestSuite) Logf(format string, args ...any)
- func (t *TestSuite) MustExist(key client.ObjectKey, obj client.Object)
- func (t *TestSuite) MustFindPackageRevision(packages *porchapi.PackageRevisionList, name repository.PackageRevisionKey) *porchapi.PackageRevision
- func (t *TestSuite) MustHaveLabels(name string, labels map[string]string)
- func (t *TestSuite) MustNotExist(obj client.Object)
- func (t *TestSuite) MustNotHaveLabels(name string, labels []string)
- func (t *TestSuite) Name() string
- func (t *TestSuite) ParseKptfileF(resources *porchapi.PackageRevisionResources) *kptfilev1.KptFile
- func (t *TestSuite) PatchE(obj client.Object, patch client.Patch, opts ...client.PatchOption)
- func (t *TestSuite) PatchF(obj client.Object, patch client.Patch, opts ...client.PatchOption)
- func (t *TestSuite) PorchServerServiceKey() client.ObjectKey
- func (t *TestSuite) RecreateGiteaTestRepo()
- func (t *TestSuite) RegisterGitRepositoryF(repo, name, directory string, username string, password Password, ...)
- func (t *TestSuite) RetriggerBackgroundJobForRepo(repoName string)
- func (t *TestSuite) SaveKptfileF(resources *porchapi.PackageRevisionResources, kptfile *kptfilev1.KptFile)
- func (t *TestSuite) SetupSuite()
- func (t *TestSuite) Skipf(format string, args ...any)
- func (t *TestSuite) TimingHelper(operationDescription string, toTime func(t *TestSuite))
- func (t *TestSuite) UpdateApprovalE(pr *porchapi.PackageRevision) error
- func (t *TestSuite) UpdateApprovalF(pr *porchapi.PackageRevision) *porchapi.PackageRevision
- func (t *TestSuite) UpdateApprovalL(pr *porchapi.PackageRevision) *porchapi.PackageRevision
- func (t *TestSuite) UpdateE(obj client.Object, opts ...client.UpdateOption)
- func (t *TestSuite) UpdateF(obj client.Object, opts ...client.UpdateOption)
- func (t *TestSuite) ValidateFinalizers(name string, finalizers []string)
- func (t *TestSuite) ValidateLabelsAndAnnos(name string, labels, annos map[string]string)
- func (t *TestSuite) ValidateOwnerReferences(name string, ownerRefs []metav1.OwnerReference)
- func (t *TestSuite) WaitUntilAllPackageRevisionsDeleted(repoName string, namespace string)
- func (t *TestSuite) WaitUntilAllPackageRevsDeleted(repoName string, namespace string)
- func (t *TestSuite) WaitUntilAllPackageVariantsReady()
- func (t *TestSuite) WaitUntilAllPackagesDeleted(repoName string, namespace string)
- func (t *TestSuite) WaitUntilMultipleRepositoriesReady(waitingRepos []configapi.Repository)
- func (t *TestSuite) WaitUntilObjectDeleted(gvk schema.GroupVersionKind, namespacedName types.NamespacedName, ...)
- func (t *TestSuite) WaitUntilPackageRevisionExists(repository string, pkgName string, revision int) *porchapi.PackageRevision
- func (t *TestSuite) WaitUntilPackageRevisionFulfillingConditionExists(timeout time.Duration, condition func(porchapi.PackageRevision) bool) (*porchapi.PackageRevision, error)
- func (t *TestSuite) WaitUntilPackageRevisionResourcesExists(key types.NamespacedName) *porchapi.PackageRevisionResources
- func (t *TestSuite) WaitUntilRepositoryDeleted(name, namespace string)
- func (t *TestSuite) WaitUntilRepositoryReady(name, namespace string)
- type TestSuiteWithGit
Constants ¶
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 )
const (
// TODO: accept a flag?
PorchTestConfigFile = "porch-test-config.yaml"
)
const (
TestGitServerImage = "test-git-server"
)
Variables ¶
var (
PackageRevisionGVK = porchapi.SchemeGroupVersion.WithKind("PackageRevision")
)
Functions ¶
func DebugFormat ¶
func InferGitServerImage ¶
func IsPorchTestRepo ¶
IsPorchTestRepo checks if a repository URL is specifically the porch-test repository
func RunInParallel ¶
func SplitContainerFullName ¶
Types ¶
type ErrorHandler ¶
type ErrorHandler func(format string, args ...interface{})
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 ¶
func WithConfigPath ¶
func WithConfigPath(configPath string) MutatorOption
func WithConfigmap ¶
func WithConfigmap(configMap map[string]string) MutatorOption
type PackageRevisionStatusCounts ¶
type PackageRevisionStatusCounts struct {
Total, Draft, Proposed, Published, DeletionProposed int
}
func (*PackageRevisionStatusCounts) String ¶
func (c *PackageRevisionStatusCounts) 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
func WithSync ¶
func WithSync(sync string) RepositoryOption
func WithType ¶
func WithType(t configapi.RepositoryType) RepositoryOption
type RepositoryOptions ¶
type RepositoryOptions struct {
RepOpts RepositoryOption
SecOpts SecretOption
}
type SecretOption ¶
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
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) CheckRenderError ¶
func (t *TestSuite) CheckRenderError(rs *porchapi.RenderStatus) error
func (*TestSuite) CollectMetricsFromPods ¶
func (t *TestSuite) CollectMetricsFromPods() (*MetricsCollectionResults, error)
func (*TestSuite) CompareStringYAML ¶
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 (*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 (*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) DeleteL ¶
func (t *TestSuite) DeleteL(obj client.Object, opts ...client.DeleteOption)
func (*TestSuite) DumpLogsForDeploymentE ¶
func (*TestSuite) FindAndDecodeF ¶
func (t *TestSuite) FindAndDecodeF(resources *porchapi.PackageRevisionResources, name string, value interface{})
func (*TestSuite) FindFirstContainerByImageName ¶
func (*TestSuite) FnNamespaceName ¶
func (*TestSuite) GetContext ¶
func (*TestSuite) GetPackageRevision ¶
func (*TestSuite) GetPorchTestRepoURL ¶
GetPorchTestRepoURL returns the dynamic PorchTestRepo URL
func (*TestSuite) GetTestBlueprintsRepoURL ¶
GetTestBlueprintsRepoURL returns the dynamic TestBlueprintsRepo URL
func (*TestSuite) Initialize ¶
func (t *TestSuite) Initialize()
func (*TestSuite) IsPorchServerInCluster ¶
func (*TestSuite) IsTestRunnerInCluster ¶
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) MustFindPackageRevision ¶
func (t *TestSuite) MustFindPackageRevision(packages *porchapi.PackageRevisionList, name repository.PackageRevisionKey) *porchapi.PackageRevision
func (*TestSuite) MustHaveLabels ¶
func (*TestSuite) MustNotExist ¶
func (*TestSuite) MustNotHaveLabels ¶
func (*TestSuite) ParseKptfileF ¶
func (t *TestSuite) ParseKptfileF(resources *porchapi.PackageRevisionResources) *kptfilev1.KptFile
func (*TestSuite) PorchServerServiceKey ¶
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) RetriggerBackgroundJobForRepo ¶
func (*TestSuite) SaveKptfileF ¶
func (t *TestSuite) SaveKptfileF(resources *porchapi.PackageRevisionResources, kptfile *kptfilev1.KptFile)
func (*TestSuite) SetupSuite ¶
func (t *TestSuite) SetupSuite()
func (*TestSuite) TimingHelper ¶
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) ValidateFinalizers ¶
func (*TestSuite) ValidateLabelsAndAnnos ¶
func (*TestSuite) ValidateOwnerReferences ¶
func (t *TestSuite) ValidateOwnerReferences(name string, ownerRefs []metav1.OwnerReference)
func (*TestSuite) WaitUntilAllPackageRevisionsDeleted ¶
func (*TestSuite) WaitUntilAllPackageRevsDeleted ¶
func (*TestSuite) WaitUntilAllPackageVariantsReady ¶
func (t *TestSuite) WaitUntilAllPackageVariantsReady()
func (*TestSuite) WaitUntilAllPackagesDeleted ¶
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 (*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 (*TestSuite) WaitUntilRepositoryReady ¶
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 (*TestSuiteWithGit) SetupEnvVars ¶
func (t *TestSuiteWithGit) SetupEnvVars()
func (*TestSuiteWithGit) SetupSuite ¶
func (t *TestSuiteWithGit) SetupSuite()