testutils

package
v0.5.1 Latest Latest
Warning

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

Go to latest
Published: Jan 28, 2025 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Overview

Copyright 2023 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright 2023 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright 2023 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Index

Constants

View Source
const (
	Timeout  = 30 * time.Second
	Interval = time.Millisecond * 250
)

Variables

This section is empty.

Functions

func CheckContainerHasCorrectEnvVar added in v0.3.0

func CheckContainerHasCorrectEnvVar(pod corev1.Pod, expect corev1.EnvVar) error

func CheckLeaderWorkerSetHasCondition

func CheckLeaderWorkerSetHasCondition(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, condition metav1.Condition) (bool, error)

func CheckTPUContainerHasCorrectEnvVars

func CheckTPUContainerHasCorrectEnvVars(pod corev1.Pod, envVal string) error

func CreateLeaderPods

func CreateLeaderPods(ctx context.Context, leaderSts appsv1.StatefulSet, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, start int, end int) error

func CreateLeaderPodsFromRevisionNumber added in v0.5.0

func CreateLeaderPodsFromRevisionNumber(ctx context.Context, leaderSts appsv1.StatefulSet, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, start, end, revisionNumber int)

func CreateWorkerPodsForLeaderPod

func CreateWorkerPodsForLeaderPod(ctx context.Context, leaderPod corev1.Pod, k8sClient client.Client, lws leaderworkerset.LeaderWorkerSet)

func DeleteLeaderPod added in v0.3.0

func DeleteLeaderPod(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, start, end int32)

func DeleteLeaderPods

func DeleteLeaderPods(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet)

func DeleteNamespace added in v0.2.0

func DeleteNamespace(ctx context.Context, c client.Client, ns *corev1.Namespace) error

DeleteNamespace deletes all objects the tests typically create in the namespace.

func DeleteWorkerPods added in v0.5.0

func DeleteWorkerPods(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet)

func ExpectLeaderSetExist

func ExpectLeaderSetExist(ctx context.Context, lws *leaderworkerset.LeaderWorkerSet, k8sClient client.Client)

func ExpectLeaderWorkerSetAvailable

func ExpectLeaderWorkerSetAvailable(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, message string)

func ExpectLeaderWorkerSetNoUpgradeInProgress added in v0.3.0

func ExpectLeaderWorkerSetNoUpgradeInProgress(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, message string)

func ExpectLeaderWorkerSetNotProgressing

func ExpectLeaderWorkerSetNotProgressing(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, message string)

func ExpectLeaderWorkerSetProgressing

func ExpectLeaderWorkerSetProgressing(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, message string)

func ExpectLeaderWorkerSetStatusReplicas added in v0.2.0

func ExpectLeaderWorkerSetStatusReplicas(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, readyReplicas, updatedReplicas int)

func ExpectLeaderWorkerSetUnavailable added in v0.2.0

func ExpectLeaderWorkerSetUnavailable(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, message string)

func ExpectLeaderWorkerSetUpgradeInProgress added in v0.3.0

func ExpectLeaderWorkerSetUpgradeInProgress(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, message string)

func ExpectNotUpdatedWorkerStatefulSet added in v0.5.0

func ExpectNotUpdatedWorkerStatefulSet(ctx context.Context, k8sClient client.Client, leaderWorkerSet *leaderworkerset.LeaderWorkerSet, statefulsetName string)

Expect that the revisionKey and the container name in the Worker Sts have not been updated

func ExpectRevisions added in v0.5.0

func ExpectRevisions(ctx context.Context, k8sClient client.Client, leaderWorkerSet *leaderworkerset.LeaderWorkerSet, numRevisions int)

func ExpectSpecifiedWorkerStatefulSetsCreated added in v0.3.0

func ExpectSpecifiedWorkerStatefulSetsCreated(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, start, end int)

func ExpectSpecifiedWorkerStatefulSetsNotCreated added in v0.3.0

func ExpectSpecifiedWorkerStatefulSetsNotCreated(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, start, end int)

func ExpectStatefulsetPartitionEqualTo added in v0.2.0

func ExpectStatefulsetPartitionEqualTo(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, partition int32)

func ExpectUpdatedWorkerStatefulSet added in v0.5.0

func ExpectUpdatedWorkerStatefulSet(ctx context.Context, k8sClient client.Client, leaderWorkerSet *leaderworkerset.LeaderWorkerSet, statefulsetName string)

Expect that the revisionKey and the container name in the Worker Sts have been updated

func ExpectValidLeaderStatefulSet

func ExpectValidLeaderStatefulSet(ctx context.Context, k8sClient client.Client, leaderWorkerSet *leaderworkerset.LeaderWorkerSet, replicas int32)

func ExpectValidPods added in v0.2.0

func ExpectValidPods(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, podList *corev1.PodList)

This should only be used in e2e test, since integration test will not automatically create worker pods.

func ExpectValidServices

func ExpectValidServices(ctx context.Context, k8sClient client.Client, leaderWorkerSet *leaderworkerset.LeaderWorkerSet, numHeadlessServices int)

func ExpectValidWorkerStatefulSets

func ExpectValidWorkerStatefulSets(ctx context.Context, leaderWorkerSet *leaderworkerset.LeaderWorkerSet, k8sClient client.Client, leaderPodScheduled bool)

func ExpectWorkerStatefulSetsNotCreated added in v0.3.0

func ExpectWorkerStatefulSetsNotCreated(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet)

func GetLeaderStatefulset added in v0.2.0

func GetLeaderStatefulset(ctx context.Context, lws *leaderworkerset.LeaderWorkerSet, k8sClient client.Client, sts *appsv1.StatefulSet)

func GetNonEmptyLines added in v0.5.0

func GetNonEmptyLines(output string) []string

GetNonEmptyLines converts given command output string into individual objects according to line breakers, and ignores the empty elements in it.

func GetProjectDir added in v0.5.0

func GetProjectDir() (string, error)

GetProjectDir will return the directory where the project is

func GetStatefulSets added in v0.2.0

func GetStatefulSets(ctx context.Context, lws *leaderworkerset.LeaderWorkerSet, k8sClient client.Client, stsl *appsv1.StatefulSetList)

func HasLWSEnvVarsPopulated added in v0.3.0

func HasLWSEnvVarsPopulated(pod corev1.Pod) bool

func HasTPUEnvVarsPopulated

func HasTPUEnvVarsPopulated(pod corev1.Pod) bool

func IsContainerFirstEnvVarLWSLeaderAddress added in v0.3.0

func IsContainerFirstEnvVarLWSLeaderAddress(pod corev1.Pod) error

func MakeLeaderPodSpec

func MakeLeaderPodSpec() corev1.PodSpec

func MakeLeaderPodSpecWithTPUResource

func MakeLeaderPodSpecWithTPUResource() corev1.PodSpec

func MakePodSpecWithInitContainer added in v0.3.0

func MakePodSpecWithInitContainer() corev1.PodSpec

func MakePodWithLabels added in v0.3.0

func MakePodWithLabels(setName, groupIndex, workerIndex, namespace string, size int) *corev1.Pod

func MakeWorkerPodSpec

func MakeWorkerPodSpec() corev1.PodSpec

func MakeWorkerPodSpecWithTPUResource

func MakeWorkerPodSpecWithTPUResource() corev1.PodSpec

func MustCreateLws added in v0.2.0

func MustCreateLws(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet)

func Run added in v0.5.0

func Run(cmd *exec.Cmd) (string, error)

Run executes the provided command within this context

func SetLeaderPodToReady added in v0.3.0

func SetLeaderPodToReady(ctx context.Context, k8sClient client.Client, podName string, lws *leaderworkerset.LeaderWorkerSet)

func SetLeaderPodsToReady added in v0.3.0

func SetLeaderPodsToReady(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, start, end int)

func SetPodGroupToReady added in v0.2.0

func SetPodGroupToReady(ctx context.Context, k8sClient client.Client, statefulsetName string, lws *leaderworkerset.LeaderWorkerSet)

SetPodGroupToReady set one podGroup(leaderPod+workerStatefulset) of leaderWorkerSet to ready state, workerPods not included.

func SetPodGroupsToReady

func SetPodGroupsToReady(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, podGroupNumber int32)

SetPodGroupsToReady set all podGroups of the leaderWorkerSet to ready state.

func SetStatefulsetToUnReady added in v0.2.0

func SetStatefulsetToUnReady(ctx context.Context, k8sClient client.Client, sts *appsv1.StatefulSet)

SetStatefulsetToUnReady set statefulset to unready.

func UpdateLeaderTemplate added in v0.2.0

func UpdateLeaderTemplate(ctx context.Context, k8sClient client.Client, leaderWorkerSet *leaderworkerset.LeaderWorkerSet)

func UpdateReplicaCount

func UpdateReplicaCount(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, count int32)

func UpdateSubdomainPolicy added in v0.4.0

func UpdateSubdomainPolicy(ctx context.Context, k8sClient client.Client, lws *leaderworkerset.LeaderWorkerSet, subdomainPolicy leaderworkerset.SubdomainPolicy)

func UpdateWorkerTemplate added in v0.2.0

func UpdateWorkerTemplate(ctx context.Context, k8sClient client.Client, leaderWorkerSet *leaderworkerset.LeaderWorkerSet)

func ValidateEvent added in v0.5.0

func ValidateEvent(ctx context.Context, k8sClient client.Client, eventReason string, eventType string, eventNote string, namespace string)

ValidateLatestEvent will return true if the latest event is as you want.

func ValidatePodExclusivePlacementTerms

func ValidatePodExclusivePlacementTerms(pod corev1.Pod, exclusiveAnnotationKey string, uniqueHashLabelKey string) bool

Types

type LeaderWorkerSetWrapper

type LeaderWorkerSetWrapper struct {
	leaderworkerset.LeaderWorkerSet
}

func BuildBasicLeaderWorkerSet

func BuildBasicLeaderWorkerSet(name, ns string) *LeaderWorkerSetWrapper

func BuildLeaderWorkerSet

func BuildLeaderWorkerSet(nsName string) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) Annotation

func (lwsWrapper *LeaderWorkerSetWrapper) Annotation(annotations map[string]string) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) Conditions

func (lwsWrapper *LeaderWorkerSetWrapper) Conditions(conditions []metav1.Condition) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) ExclusivePlacement

func (lwsWrapper *LeaderWorkerSetWrapper) ExclusivePlacement() *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) LeaderTemplateSpec

func (lwsWrapper *LeaderWorkerSetWrapper) LeaderTemplateSpec(spec corev1.PodSpec) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) MaxSurge added in v0.3.0

func (lwsWrapper *LeaderWorkerSetWrapper) MaxSurge(value int) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) MaxUnavailable added in v0.2.0

func (lwsWrapper *LeaderWorkerSetWrapper) MaxUnavailable(value int) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) Name added in v0.4.0

func (lwsWrapper *LeaderWorkerSetWrapper) Name(name string) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) Obj

func (*LeaderWorkerSetWrapper) Replica

func (lwsWrapper *LeaderWorkerSetWrapper) Replica(count int) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) RestartPolicy

func (*LeaderWorkerSetWrapper) RolloutStrategy added in v0.2.0

func (lwsWrapper *LeaderWorkerSetWrapper) RolloutStrategy(strategy leaderworkerset.RolloutStrategy) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) Size

func (lwsWrapper *LeaderWorkerSetWrapper) Size(count int) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) StartupPolicy added in v0.3.0

func (*LeaderWorkerSetWrapper) SubGroupSize added in v0.3.0

func (lwsWrapper *LeaderWorkerSetWrapper) SubGroupSize(subGroupSize int32) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) SubdomainPolicy added in v0.4.0

func (lwsWrapper *LeaderWorkerSetWrapper) SubdomainPolicy(subdomainPolicy leaderworkerset.SubdomainPolicy) *LeaderWorkerSetWrapper

func (*LeaderWorkerSetWrapper) WorkerTemplateSpec

func (lwsWrapper *LeaderWorkerSetWrapper) WorkerTemplateSpec(spec corev1.PodSpec) *LeaderWorkerSetWrapper

Jump to

Keyboard shortcuts

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