mirror of
https://github.com/kubernetes/client-go.git
synced 2025-09-14 22:28:58 +00:00
Rename Until to UntilWithoutRetry and move to using context so it's
cancelable Kubernetes-commit: 3d4a02abb54244861f9f05b8db2fdfdaa2c6f67c
This commit is contained in:
committed by
Kubernetes Publisher
parent
5764fa1b79
commit
cbdb98d74d
@@ -17,6 +17,7 @@ limitations under the License.
|
||||
package watch
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"strings"
|
||||
"testing"
|
||||
@@ -25,6 +26,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
"k8s.io/apimachinery/pkg/watch"
|
||||
)
|
||||
|
||||
type fakePod struct {
|
||||
@@ -35,26 +37,26 @@ func (obj *fakePod) GetObjectKind() schema.ObjectKind { return schema.EmptyObjec
|
||||
func (obj *fakePod) DeepCopyObject() runtime.Object { panic("DeepCopyObject not supported by fakePod") }
|
||||
|
||||
func TestUntil(t *testing.T) {
|
||||
fw := NewFake()
|
||||
fw := watch.NewFake()
|
||||
go func() {
|
||||
var obj *fakePod
|
||||
fw.Add(obj)
|
||||
fw.Modify(obj)
|
||||
}()
|
||||
conditions := []ConditionFunc{
|
||||
func(event Event) (bool, error) { return event.Type == Added, nil },
|
||||
func(event Event) (bool, error) { return event.Type == Modified, nil },
|
||||
func(event watch.Event) (bool, error) { return event.Type == watch.Added, nil },
|
||||
func(event watch.Event) (bool, error) { return event.Type == watch.Modified, nil },
|
||||
}
|
||||
|
||||
timeout := time.Minute
|
||||
lastEvent, err := Until(timeout, fw, conditions...)
|
||||
ctx, _ := context.WithTimeout(context.Background(), time.Minute)
|
||||
lastEvent, err := UntilWithoutRetry(ctx, fw, conditions...)
|
||||
if err != nil {
|
||||
t.Fatalf("expected nil error, got %#v", err)
|
||||
}
|
||||
if lastEvent == nil {
|
||||
t.Fatal("expected an event")
|
||||
}
|
||||
if lastEvent.Type != Modified {
|
||||
if lastEvent.Type != watch.Modified {
|
||||
t.Fatalf("expected MODIFIED event type, got %v", lastEvent.Type)
|
||||
}
|
||||
if got, isPod := lastEvent.Object.(*fakePod); !isPod {
|
||||
@@ -63,25 +65,25 @@ func TestUntil(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestUntilMultipleConditions(t *testing.T) {
|
||||
fw := NewFake()
|
||||
fw := watch.NewFake()
|
||||
go func() {
|
||||
var obj *fakePod
|
||||
fw.Add(obj)
|
||||
}()
|
||||
conditions := []ConditionFunc{
|
||||
func(event Event) (bool, error) { return event.Type == Added, nil },
|
||||
func(event Event) (bool, error) { return event.Type == Added, nil },
|
||||
func(event watch.Event) (bool, error) { return event.Type == watch.Added, nil },
|
||||
func(event watch.Event) (bool, error) { return event.Type == watch.Added, nil },
|
||||
}
|
||||
|
||||
timeout := time.Minute
|
||||
lastEvent, err := Until(timeout, fw, conditions...)
|
||||
ctx, _ := context.WithTimeout(context.Background(), time.Minute)
|
||||
lastEvent, err := UntilWithoutRetry(ctx, fw, conditions...)
|
||||
if err != nil {
|
||||
t.Fatalf("expected nil error, got %#v", err)
|
||||
}
|
||||
if lastEvent == nil {
|
||||
t.Fatal("expected an event")
|
||||
}
|
||||
if lastEvent.Type != Added {
|
||||
if lastEvent.Type != watch.Added {
|
||||
t.Fatalf("expected MODIFIED event type, got %v", lastEvent.Type)
|
||||
}
|
||||
if got, isPod := lastEvent.Object.(*fakePod); !isPod {
|
||||
@@ -90,26 +92,26 @@ func TestUntilMultipleConditions(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestUntilMultipleConditionsFail(t *testing.T) {
|
||||
fw := NewFake()
|
||||
fw := watch.NewFake()
|
||||
go func() {
|
||||
var obj *fakePod
|
||||
fw.Add(obj)
|
||||
}()
|
||||
conditions := []ConditionFunc{
|
||||
func(event Event) (bool, error) { return event.Type == Added, nil },
|
||||
func(event Event) (bool, error) { return event.Type == Added, nil },
|
||||
func(event Event) (bool, error) { return event.Type == Deleted, nil },
|
||||
func(event watch.Event) (bool, error) { return event.Type == watch.Added, nil },
|
||||
func(event watch.Event) (bool, error) { return event.Type == watch.Added, nil },
|
||||
func(event watch.Event) (bool, error) { return event.Type == watch.Deleted, nil },
|
||||
}
|
||||
|
||||
timeout := 10 * time.Second
|
||||
lastEvent, err := Until(timeout, fw, conditions...)
|
||||
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
lastEvent, err := UntilWithoutRetry(ctx, fw, conditions...)
|
||||
if err != wait.ErrWaitTimeout {
|
||||
t.Fatalf("expected ErrWaitTimeout error, got %#v", err)
|
||||
}
|
||||
if lastEvent == nil {
|
||||
t.Fatal("expected an event")
|
||||
}
|
||||
if lastEvent.Type != Added {
|
||||
if lastEvent.Type != watch.Added {
|
||||
t.Fatalf("expected ADDED event type, got %v", lastEvent.Type)
|
||||
}
|
||||
if got, isPod := lastEvent.Object.(*fakePod); !isPod {
|
||||
@@ -118,30 +120,29 @@ func TestUntilMultipleConditionsFail(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestUntilTimeout(t *testing.T) {
|
||||
fw := NewFake()
|
||||
fw := watch.NewFake()
|
||||
go func() {
|
||||
var obj *fakePod
|
||||
fw.Add(obj)
|
||||
fw.Modify(obj)
|
||||
}()
|
||||
conditions := []ConditionFunc{
|
||||
func(event Event) (bool, error) {
|
||||
return event.Type == Added, nil
|
||||
func(event watch.Event) (bool, error) {
|
||||
return event.Type == watch.Added, nil
|
||||
},
|
||||
func(event Event) (bool, error) {
|
||||
return event.Type == Modified, nil
|
||||
func(event watch.Event) (bool, error) {
|
||||
return event.Type == watch.Modified, nil
|
||||
},
|
||||
}
|
||||
|
||||
timeout := time.Duration(0)
|
||||
lastEvent, err := Until(timeout, fw, conditions...)
|
||||
lastEvent, err := UntilWithoutRetry(context.Background(), fw, conditions...)
|
||||
if err != nil {
|
||||
t.Fatalf("expected nil error, got %#v", err)
|
||||
}
|
||||
if lastEvent == nil {
|
||||
t.Fatal("expected an event")
|
||||
}
|
||||
if lastEvent.Type != Modified {
|
||||
if lastEvent.Type != watch.Modified {
|
||||
t.Fatalf("expected MODIFIED event type, got %v", lastEvent.Type)
|
||||
}
|
||||
if got, isPod := lastEvent.Object.(*fakePod); !isPod {
|
||||
@@ -150,19 +151,20 @@ func TestUntilTimeout(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestUntilErrorCondition(t *testing.T) {
|
||||
fw := NewFake()
|
||||
fw := watch.NewFake()
|
||||
go func() {
|
||||
var obj *fakePod
|
||||
fw.Add(obj)
|
||||
}()
|
||||
expected := "something bad"
|
||||
conditions := []ConditionFunc{
|
||||
func(event Event) (bool, error) { return event.Type == Added, nil },
|
||||
func(event Event) (bool, error) { return false, errors.New(expected) },
|
||||
func(event watch.Event) (bool, error) { return event.Type == watch.Added, nil },
|
||||
func(event watch.Event) (bool, error) { return false, errors.New(expected) },
|
||||
}
|
||||
|
||||
timeout := time.Minute
|
||||
_, err := Until(timeout, fw, conditions...)
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
|
||||
defer cancel()
|
||||
_, err := UntilWithoutRetry(ctx, fw, conditions...)
|
||||
if err == nil {
|
||||
t.Fatal("expected an error")
|
||||
}
|
||||
|
Reference in New Issue
Block a user