util

package
v0.0.0-...-d3d374b Latest Latest
Warning

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

Go to latest
Published: Apr 15, 2018 License: Apache-2.0 Imports: 58 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CheckBuildFailedFn = func(b *buildapi.Build) bool {
	return b.Status.Phase == buildapi.BuildPhaseFailed || b.Status.Phase == buildapi.BuildPhaseError
}

CheckBuildFailedFn return true if the build failed

View Source
var CheckBuildSuccessFn = func(b *buildapi.Build) bool {
	return b.Status.Phase == buildapi.BuildPhaseComplete
}

CheckBuildSuccessFn returns true if the build succeeded

View Source
var CheckDeploymentCompletedFn = func(d *kapi.ReplicationController) bool {
	return deployutil.IsCompleteDeployment(d)
}

CheckDeploymentCompletedFn returns true if the deployment completed

View Source
var CheckDeploymentFailedFn = func(d *kapi.ReplicationController) bool {
	return deployutil.IsFailedDeployment(d)
}

CheckDeploymentFailedFn returns true if the deployment failed

View Source
var CheckImageStreamLatestTagPopulatedFn = func(i *imageapi.ImageStream) bool {
	_, ok := i.Status.Tags["latest"]
	return ok
}

CheckImageStreamLatestTagPopulatedFn returns true if the imagestream has a ':latest' tag filed

View Source
var CheckImageStreamTagNotFoundFn = func(i *imageapi.ImageStream) bool {
	return strings.Contains(i.Annotations[imageapi.DockerImageRepositoryCheckAnnotation], "not") ||
		strings.Contains(i.Annotations[imageapi.DockerImageRepositoryCheckAnnotation], "error")
}

CheckImageStreamTagNotFoundFn return true if the imagestream update was not successful

View Source
var CheckPodIsReadyFn = func(pod kapi.Pod) bool {
	if pod.Status.Phase != kapi.PodRunning {
		return false
	}
	for _, cond := range pod.Status.Conditions {
		if cond.Type != kapi.PodReady {
			continue
		}
		return cond.Status == kapi.ConditionTrue
	}
	return false
}

CheckPodIsReadyFn returns true if the pod's ready probe determined that the pod is ready.

View Source
var CheckPodIsRunningFn = func(pod kapi.Pod) bool {
	return pod.Status.Phase == kapi.PodRunning
}

CheckPodIsRunningFn returns true if the pod is running

View Source
var CheckPodIsSucceededFn = func(pod kapi.Pod) bool {
	return pod.Status.Phase == kapi.PodSucceeded
}

CheckPodIsSucceededFn returns true if the pod status is "Succdeded"

Functions

func ArtifactDirPath

func ArtifactDirPath() string

ArtifactDirPath returns the value of ARTIFACT_DIR environment variable

func ArtifactPath

func ArtifactPath(elem ...string) string

ArtifactPath returns the absolute path to the fix artifact file The path is relative to ARTIFACT_DIR

func BuildAuthConfiguration

func BuildAuthConfiguration(credKey string, oc *CLI) (*dockerClient.AuthConfiguration, error)

BuildAuthConfiguration constructs a non-standard dockerClient.AuthConfiguration that can be used to communicate with the openshift internal docker registry

func CheckOpenShiftNamespaceImageStreams

func CheckOpenShiftNamespaceImageStreams(oc *CLI)

CheckOpenShiftNamespaceImageStreams is a temporary workaround for the intermittent issue seen in extended tests where *something* is deleteing the pre-loaded, languange imagestreams from the OpenShift namespace

func CleanupHostPathVolumes

func CleanupHostPathVolumes(c kclient.PersistentVolumeInterface, prefix string) error

CleanupHostPathVolumes removes all PersistentVolumes created by SetupHostPathVolumes, with a given prefix

func CorruptImage

func CorruptImage(corruptee, corruptor string)

CorruptImage is a helper that tags the image to be corrupted, the corruptee, as the corruptor string, resulting in the wrong image being used when corruptee is referenced later on; strategy is for ginkgo debug; ginkgo error checking leveraged

func CreateExecPodOnNode

func CreateExecPodOnNode(client kclient.Interface, ns, nodeName, name string) string

CreateExecPodOnNode launches a exec pod in the given namespace and node waits until it's Running, created pod name would be returned TODO: expose upstream

func CreateExecPodOrFail

func CreateExecPodOrFail(client kclient.Interface, ns, name string) string

CreateExecPodOrFail creates a simple busybox pod in a sleep loop used as a vessel for kubectl exec commands. Returns the name of the created pod. TODO: expose upstream

func CreatePersistentVolume

func CreatePersistentVolume(name, capacity, hostPath string) *kapi.PersistentVolume

CreatePersistentVolume creates a HostPath Persistent Volume.

func CreateResource

func CreateResource(jsonFilePath string, oc *CLI) error

CreateResource creates the resources from the supplied json file (not a template); ginkgo error checking included

func DumpAndReturnTagging

func DumpAndReturnTagging(tags []string) ([]string, error)

DumpAndReturnTagging takes and array of tags and obtains the hex image IDs, dumps them to ginkgo for printing, and then returns them

func DumpBuildLogs

func DumpBuildLogs(bc string, oc *CLI)

DumpBuildLogs will dump the latest build logs for a BuildConfig for debug purposes

func DumpDeploymentLogs

func DumpDeploymentLogs(dc string, oc *CLI)

DumpDeploymentLogs will dump the latest deployment logs for a DeploymentConfig for debug purposes

func DumpImage

func DumpImage(name string)

DumpImage is a helper that inspects the image along with some ginkgo debug

func DumpImageStreams

func DumpImageStreams(oc *CLI)

DumpImageStreams will dump both the openshift namespace and local namespace imagestreams as part of debugging when the language imagestreams in the openshift namespace seem to disappear

func DumpNamedBuildLogs

func DumpNamedBuildLogs(buildName string, oc *CLI)

func ExamineDiskUsage

func ExamineDiskUsage()

ExamineDiskUsage will dump df output on the testing system; leveraging this as part of diagnosing the registry's disk filling up during external tests on jenkins

func ExaminePodDiskUsage

func ExaminePodDiskUsage(oc *CLI)

ExaminePodDiskUsage will dump df/du output on registry pod; leveraging this as part of diagnosing the registry's disk filling up during external tests on jenkins

func ExecuteTest

func ExecuteTest(t *testing.T, suite string)

func ExtendedTestPath

func ExtendedTestPath() string

ExtendedTestPath returns absolute path to extended tests directory

func FatalErr

func FatalErr(msg interface{})

FatalErr exits the test in case a fatal error has occurred.

func FetchURL

func FetchURL(url string, retryTimeout time.Duration) (response string, err error)

FetchURL grabs the output from the specified url and returns it. It will retry once per second for duration retryTimeout if an error occurs during the request.

func FixturePath

func FixturePath(elem ...string) string

FixturePath returns absolute path to given fixture file The path is relative to EXTENDED_TEST_PATH (./test/extended/*)

func GetDockerImageReference

func GetDockerImageReference(c client.ImageStreamInterface, name, tag string) (string, error)

GetDockerImageReference retrieves the full Docker pull spec from the given ImageStream and tag

func GetEndpointAddress

func GetEndpointAddress(oc *CLI, name string) (string, error)

GetEndpointAddress will return an "ip:port" string for the endpoint.

func GetImageIDForTags

func GetImageIDForTags(comps []string) ([]string, error)

GetImageIDForTags will obtain the hexadecimal IDs for the array of human readible image tags IDs provided

func GetPodForContainer

func GetPodForContainer(container kapi.Container) *kapi.Pod

GetPodForContainer creates a new Pod that runs specified container

func GetPodForImage

func GetPodForImage(dockerImageReference string) *kapi.Pod

GetPodForImage creates a new Pod that runs the containers from specified Docker image reference

func GetPodNamesByFilter

func GetPodNamesByFilter(c kclient.PodInterface, label labels.Selector, predicate func(kapi.Pod) bool) (podNames []string, err error)

GetPodNamesByFilter looks up pods that satisfy the predicate and returns their names.

func InitTest

func InitTest()

init initialize the extended testing suite. You can set these environment variables to configure extended tests: KUBECONFIG - Path to kubeconfig containing embedded authinfo TEST_REPORT_DIR - If set, JUnit output will be written to this directory for each test TEST_REPORT_FILE_NAME - If set, will determine the name of the file that JUnit output is written to

func InspectImage

func InspectImage(name string) (*dockerClient.Image, error)

InspectImage initiates the equivalent of a `docker inspect` for the "name" parameter

func KubeConfigPath

func KubeConfigPath() string

KubeConfigPath returns the value of KUBECONFIG environment variable

func ListImages

func ListImages() ([]string, error)

ListImages initiates the equivalent of a `docker images`

func ParseLabelsOrDie

func ParseLabelsOrDie(str string) labels.Selector

ParseLabelsOrDie turns the given string into a label selector or panics; for tests or other cases where you know the string is valid. TODO: Move this to the upstream labels package.

func PullImage

func PullImage(name string, authCfg dockerClient.AuthConfiguration) error

PullImage initiates the equivalent of a `docker pull` for the "name" parameter

func PushImage

func PushImage(name string, authCfg dockerClient.AuthConfiguration) error

PushImage initiates the equivalent of a `docker push` for the "name" parameter to the local registry

func ResetImage

func ResetImage(tags map[string]string)

ResetImage is a helper the allows the programmer to undo any corruption performed by CorruptImage; ginkgo error checking leveraged

func SetupHostPathVolumes

func SetupHostPathVolumes(c kclient.PersistentVolumeInterface, prefix, capacity string, count int) (volumes []*kapi.PersistentVolume, err error)

SetupHostPathVolumes will create multiple PersistentVolumes with given capacity

func StartBuild

func StartBuild(oc *CLI, args ...string) (stdout, stderr string, err error)

StartBuild executes OC start-build with the specified arguments. StdOut and StdErr from the process are returned as separate strings.

func TagImage

func TagImage(tagee, tagor string) error

TagImage will apply the "tagor" tag string to the image current tagged by "tagee"

func TimedWaitForAnImageStreamTag

func TimedWaitForAnImageStreamTag(oc *CLI, namespace, name, tag string, waitTimeout time.Duration) error

TimedWaitForAnImageStreamTag waits until an image stream with given name has non-empty history for given tag. Gives up waiting after the specified waitTimeout

func VarSubOnFile

func VarSubOnFile(srcFile, destFile, varToSub, val string) error

VarSubOnFile reads in srcFile, finds instances inf varToSub, changes it to var, and writes out to destFile

func VerifyImagesDifferent

func VerifyImagesDifferent(comp1, comp2, strategy string)

VerifyImagesDifferent will that the two supplied image tags and see if they reference different hexadecimal image IDs; strategy is for ginkgo debug, also leverage ginkgo error checking

func VerifyImagesSame

func VerifyImagesSame(comp1, comp2, strategy string)

VerifyImagesSame will take the two supplied image tags and see if they reference the same hexadecimal image ID; strategy is for debug

func WaitForABuild

func WaitForABuild(c client.BuildInterface, name string, isOK, isFailed func(*buildapi.Build) bool) error

WaitForABuild waits for a Build object to match either isOK or isFailed conditions.

func WaitForADeployment

func WaitForADeployment(client kclient.ReplicationControllerInterface, name string, isOK, isFailed func(*kapi.ReplicationController) bool, oc *CLI) error

WaitForADeployment waits for a deployment to fulfill either isOK or isFailed. When isOK returns true, WaitForADeployment returns nil, when isFailed returns true, WaitForADeployment returns an error including the deployment status. WaitForADeployment waits for at most a certain timeout (non-configurable).

func WaitForADeploymentToComplete

func WaitForADeploymentToComplete(client kclient.ReplicationControllerInterface, name string, oc *CLI) error

WaitForADeploymentToComplete waits for a deployment to complete.

func WaitForAJob

func WaitForAJob(c kclient.JobInterface, name string, timeout time.Duration) error

func WaitForAnImageStream

func WaitForAnImageStream(client client.ImageStreamInterface,
	name string,
	isOK, isFailed func(*imageapi.ImageStream) bool) error

WaitForAnImageStream waits for an ImageStream to fulfill the isOK function

func WaitForAnImageStreamTag

func WaitForAnImageStreamTag(oc *CLI, namespace, name, tag string) error

WaitForAnImageStreamTag waits until an image stream with given name has non-empty history for given tag. Defaults to waiting for 60 seconds

func WaitForBuilderAccount

func WaitForBuilderAccount(c kclient.ServiceAccountsInterface) error

WaitForBuilderAccount waits until the builder service account gets fully provisioned

func WaitForOpenShiftNamespaceImageStreams

func WaitForOpenShiftNamespaceImageStreams(oc *CLI) error

WaitForOpenShiftNamespaceImageStreams waits for the standard set of imagestreams to be imported

func WaitForPods

func WaitForPods(c kclient.PodInterface, label labels.Selector, predicate func(kapi.Pod) bool, count int, timeout time.Duration) ([]string, error)

WaitForPods waits until given number of pods that match the label selector and satisfy the predicate are found

func WaitForQueryOutputContains

func WaitForQueryOutputContains(oc *CLI, d Database, timeout time.Duration, admin bool, query, resultSubstr string) error

WaitForQueryOutputContains will execute the query multiple times, until the specified substring is found in the results. This function should be used for testing replication, since it might take some time until the data is propagated to slaves.

func WaitForQueryOutputSatisfies

func WaitForQueryOutputSatisfies(oc *CLI, d Database, timeout time.Duration, admin bool, query string, predicate func(string) bool) error

WaitForQueryOutputSatisfies will execute the query multiple times, until the specified predicate function is return true.

func WaitForRegistry

func WaitForRegistry(
	dcNamespacer client.DeploymentConfigsNamespacer,
	kubeClient kclient.Interface,
	waitForDCVersion *int64,
	oc *CLI,
) error

WaitForRegistry waits until a newly deployed registry becomes ready. If waitForDCVersion is given, the function will wait until a corresponding replica controller completes. If not give, the latest version of registry's deployment config will be fetched from etcd.

func WaitForResourceQuotaSync

func WaitForResourceQuotaSync(
	client kclient.ResourceQuotaInterface,
	name string,
	expectedUsage kapi.ResourceList,
	expectedIsUpperLimit bool,
	timeout time.Duration,
) (kapi.ResourceList, error)

WaitForResourceQuotaSync watches given resource quota until its usage is updated to desired level or a timeout occurs. If successful, used quota values will be returned for expected resources. Otherwise an ErrWaitTimeout will be returned. If expectedIsUpperLimit is true, given expected usage must compare greater or equal to quota's usage, which is useful for expected usage increment. Otherwise expected usage must compare lower or equal to quota's usage, which is useful for expected usage decrement.

func WaitUntilAllHelpersAreUp

func WaitUntilAllHelpersAreUp(oc *CLI, helpers []Database) error

WaitUntilAllHelpersAreUp waits until all helpers are ready to serve requests.

func WaitUntilPodIsGone

func WaitUntilPodIsGone(c kclient.PodInterface, podName string, timeout time.Duration) error

WaitUntilPodIsGone waits until the named Pod will disappear

func WaitUntilUp

func WaitUntilUp(oc *CLI, d Database, timeout time.Duration) error

WaitUntilUp continuously waits for the server to become ready, up until timeout.

func WriteObjectToFile

func WriteObjectToFile(obj runtime.Object, filename string) error

WriteObjectToFile writes the JSON representation of runtime.Object into a temporary file.

Types

type BuildResult

type BuildResult struct {
	// BuildPath is a resource qualified name (e.g. "build/test-1").
	BuildPath string
	// StartBuildStdErr is the StdErr output generated by oc start-build.
	StartBuildStdErr string
	// StartBuildStdOut is the StdOut output generated by oc start-build.
	StartBuildStdOut string
	// StartBuildErr is the error, if any, returned by the direct invocation of the start-build command.
	StartBuildErr error
	// The buildconfig which generated this build.
	BuildConfigName string
	// Build is the resource created. May be nil if there was a timeout.
	Build *buildapi.Build
	// BuildAttempt represents that a Build resource was created.
	// false indicates a severe error unrelated to Build success or failure.
	BuildAttempt bool
	// BuildSuccess is true if the build was finshed successfully.
	BuildSuccess bool
	// BuildFailure is true if the build was finished with an error.
	BuildFailure bool
	// BuildTimeout is true if there was a timeout waiting for the build to finish.
	BuildTimeout bool
	// contains filtered or unexported fields
}

func StartBuildAndWait

func StartBuildAndWait(oc *CLI, args ...string) (result *BuildResult, err error)

StartBuildAndWait executes OC start-build with the specified arguments on an existing buildconfig. Note that start-build will be run with "-o=name" as a parameter when using this method. If no error is returned from this method, it means that the build attempted successfully, NOT that the build completed. For completion information, check the BuildResult object.

func (*BuildResult) AssertFailure

func (t *BuildResult) AssertFailure() *BuildResult

Dumps logs and triggers a Ginkgo assertion if the build did NOT have an error (this will not assert on timeouts)

func (*BuildResult) AssertSuccess

func (t *BuildResult) AssertSuccess() *BuildResult

Dumps logs and triggers a Ginkgo assertion if the build did NOT succeed.

func (*BuildResult) DumpLogs

func (t *BuildResult) DumpLogs()

DumpLogs sends logs associated with this BuildResult to the GinkgoWriter.

func (*BuildResult) Logs

func (t *BuildResult) Logs() (string, error)

Logs returns the logs associated with this build.

type CLI

type CLI struct {
	// contains filtered or unexported fields
}

CLI provides function to call the OpenShift CLI and Kubernetes and OpenShift REST clients.

func NewCLI

func NewCLI(project, adminConfigPath string) *CLI

NewCLI initialize the upstream E2E framework and set the namespace to match with the project name. Note that this function does not initialize the project role bindings for the namespace.

func (*CLI) AdminKubeREST

func (c *CLI) AdminKubeREST() *kclient.Client

AdminKubeREST provides a Kubernetes REST client for the cluster admin user.

func (*CLI) AdminREST

func (c *CLI) AdminREST() *client.Client

AdminREST provides an OpenShift REST client for the cluster admin user.

func (*CLI) Args

func (c *CLI) Args(args ...string) *CLI

Args sets the additional arguments for the OpenShift CLI command

func (*CLI) AsAdmin

func (c *CLI) AsAdmin() *CLI

AsAdmin changes current config file path to the admin config.

func (*CLI) Background

func (c *CLI) Background() (*exec.Cmd, *bytes.Buffer, *bytes.Buffer, error)

Background executes the command in the background and returns the Cmd object returns the Cmd which should be killed later via cmd.Process.Kill(), as well as the stdout and stderr byte buffers assigned to the cmd.Stdout and cmd.Stderr writers.

func (*CLI) ChangeUser

func (c *CLI) ChangeUser(name string) *CLI

ChangeUser changes the user used by the current CLI session.

func (*CLI) Execute

func (c *CLI) Execute() error

Execute executes the current command and return error if the execution failed This function will set the default output to Ginkgo writer.

func (*CLI) InputString

func (c *CLI) InputString(input string) *CLI

InputString adds expected input to the command

func (*CLI) KubeFramework

func (c *CLI) KubeFramework() *e2e.Framework

KubeFramework returns Kubernetes framework which contains helper functions specific for Kubernetes resources

func (*CLI) KubeREST

func (c *CLI) KubeREST() *kclient.Client

KubeREST provides a Kubernetes REST client for the current namespace

func (*CLI) Namespace

func (c *CLI) Namespace() string

Namespace returns the name of the namespace used in the current test case. If the namespace is not set, an empty string is returned.

func (*CLI) Output

func (c *CLI) Output() (string, error)

Output executes the command and returns stdout/stderr combined into one string

func (*CLI) OutputToFile

func (c *CLI) OutputToFile(filename string) (string, error)

OutputToFile executes the command and store output to a file

func (*CLI) Outputs

func (c *CLI) Outputs() (string, string, error)

Outputs executes the command and returns the stdout/stderr output as separate strings

func (*CLI) REST

func (c *CLI) REST() *client.Client

REST provides an OpenShift REST client for the current user. If the user is not set, then it provides REST client for the cluster admin user

func (*CLI) Run

func (c *CLI) Run(commands ...string) *CLI

Run executes given OpenShift CLI command verb (iow. "oc <verb>"). This function also override the default 'stdout' to redirect all output to a buffer and prepare the global flags such as namespace and config path.

func (*CLI) SetNamespace

func (c *CLI) SetNamespace(ns string) *CLI

SetNamespace sets a new namespace

func (*CLI) SetOutputDir

func (c *CLI) SetOutputDir(dir string) *CLI

SetOutputDir change the default output directory for temporary files

func (*CLI) SetupProject

func (c *CLI) SetupProject(name string, kubeClient *kclient.Client, _ map[string]string) (*kapi.Namespace, error)

SetupProject creates a new project and assign a random user to the project. All resources will be then created within this project and Kubernetes E2E suite will destroy the project after test case finish.

func (*CLI) Stdout

func (c *CLI) Stdout() io.Writer

Stdout returns the current stdout writer

func (*CLI) Template

func (c *CLI) Template(t string) *CLI

Template sets a Go template for the OpenShift CLI command. This is equivalent of running "oc get foo -o template --template='{{ .spec }}'"

func (*CLI) Username

func (c *CLI) Username() string

Username returns the name of currently logged user. If there is no user assigned for the current session, it returns 'admin'.

func (*CLI) Verbose

func (c *CLI) Verbose() *CLI

Verbose turns on printing verbose messages when executing OpenShift commands

func (*CLI) WithoutNamespace

func (c *CLI) WithoutNamespace() *CLI

WithoutNamespace instructs the command should be invoked without adding --namespace parameter

type Database

type Database interface {
	// PodName returns the name of the Pod this helper is bound to.
	PodName() string

	// IsReady indicates whether the underlying Pod is ready for queries.
	IsReady(oc *CLI) (bool, error)

	// Query queries the database as a regular user.
	Query(oc *CLI, query string) (string, error)

	// QueryPrivileged queries the database as a privileged user.
	QueryPrivileged(oc *CLI, query string) (string, error)

	// TestRemoteLogin tests whether it is possible to remote login to hostAddress.
	TestRemoteLogin(oc *CLI, hostAddress string) error
}

Database interface allows testing database images.

type ExitError

type ExitError struct {
	Cmd    string
	StdErr string
	*exec.ExitError
}

type MissingTagError

type MissingTagError struct {
	Tags []string
}

func (MissingTagError) Error

func (mte MissingTagError) Error() string

type ReplicaSet

type ReplicaSet interface {
	// QueryPrimary queries the database on primary node as a regular user.
	QueryPrimary(oc *CLI, query string) (string, error)
}

ReplicaSet interface allows to interact with database on multiple nodes.

type SimpleReporter

type SimpleReporter struct {
	Output io.Writer
	// contains filtered or unexported fields
}

func NewSimpleReporter

func NewSimpleReporter() *SimpleReporter

func (*SimpleReporter) AfterSuiteDidRun

func (r *SimpleReporter) AfterSuiteDidRun(setupSummary *types.SetupSummary)

func (*SimpleReporter) BeforeSuiteDidRun

func (r *SimpleReporter) BeforeSuiteDidRun(*types.SetupSummary)

func (*SimpleReporter) SpecDidComplete

func (r *SimpleReporter) SpecDidComplete(spec *types.SpecSummary)

func (*SimpleReporter) SpecSuiteDidEnd

func (r *SimpleReporter) SpecSuiteDidEnd(summary *types.SuiteSummary)

func (*SimpleReporter) SpecSuiteWillBegin

func (r *SimpleReporter) SpecSuiteWillBegin(config config.GinkgoConfigType, summary *types.SuiteSummary)

func (*SimpleReporter) SpecWillRun

func (r *SimpleReporter) SpecWillRun(spec *types.SpecSummary)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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