change error messages

Signed-off-by: Austin Abro <AustinAbro321@gmail.com>
pull/13604/head
Austin Abro 9 months ago
parent ac9012577a
commit 6b68a00440
No known key found for this signature in database
GPG Key ID: 92EB5159E403F9D6

@ -85,9 +85,9 @@ func (w *statusWaiter) waitForDelete(ctx context.Context, resourceList ResourceL
continue continue
} }
if rs.Status == status.UnknownStatus { if rs.Status == status.UnknownStatus {
errs = append(errs, fmt.Errorf("%s: %s cannot determine if resource exists, status: %s", rs.Identifier.Name, rs.Identifier.GroupKind.Kind, rs.Status)) errs = append(errs, fmt.Errorf("cannot determine resource state, name: %s, kind: %s, status: %s", rs.Identifier.Name, rs.Identifier.GroupKind.Kind, rs.Status))
} else { } else {
errs = append(errs, fmt.Errorf("%s: %s still exists, status: %s", rs.Identifier.Name, rs.Identifier.GroupKind.Kind, rs.Status)) errs = append(errs, fmt.Errorf("resource still exists, name: %s, kind: %s, status: %s", rs.Identifier.Name, rs.Identifier.GroupKind.Kind, rs.Status))
} }
} }
errs = append(errs, ctx.Err()) errs = append(errs, ctx.Err())
@ -140,7 +140,7 @@ func (w *statusWaiter) wait(ctx context.Context, resourceList ResourceList, wait
if rs.Status == status.CurrentStatus { if rs.Status == status.CurrentStatus {
continue continue
} }
errs = append(errs, fmt.Errorf("%s: %s not ready, status: %s", rs.Identifier.Name, rs.Identifier.GroupKind.Kind, rs.Status)) errs = append(errs, fmt.Errorf("resource not ready, name: %s, kind: %s, status: %s", rs.Identifier.Name, rs.Identifier.GroupKind.Kind, rs.Status))
} }
errs = append(errs, ctx.Err()) errs = append(errs, ctx.Err())
return errors.Join(errs...) return errors.Join(errs...)

@ -119,20 +119,29 @@ func TestStatusWaitForDelete(t *testing.T) {
t.Parallel() t.Parallel()
tests := []struct { tests := []struct {
name string name string
objYamls []string objToCreate []string
toDelete []string
expectErrs []error expectErrs []error
waitForJobs bool
}{ }{
{ {
name: "wait for pod to be deleted", name: "wait for pod to be deleted",
objYamls: []string{podCurrent}, objToCreate: []string{podCurrent},
toDelete: []string{podCurrent},
expectErrs: nil, expectErrs: nil,
}, },
{
name: "error when not all objects are deleted",
objToCreate: []string{jobComplete, podCurrent},
toDelete: []string{jobComplete},
expectErrs: []error{errors.New("resource still exists, name: good-pod, kind: Pod, status: Current"), errors.New("context deadline exceeded")},
},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
t.Parallel() t.Parallel()
c := newTestClient(t) c := newTestClient(t)
timeout := time.Second * 3
timeToDeletePod := time.Second * 2
fakeClient := dynamicfake.NewSimpleDynamicClient(scheme.Scheme) fakeClient := dynamicfake.NewSimpleDynamicClient(scheme.Scheme)
fakeMapper := testutil.NewFakeRESTMapper( fakeMapper := testutil.NewFakeRESTMapper(
v1.SchemeGroupVersion.WithKind("Pod"), v1.SchemeGroupVersion.WithKind("Pod"),
@ -140,35 +149,42 @@ func TestStatusWaitForDelete(t *testing.T) {
batchv1.SchemeGroupVersion.WithKind("Job"), batchv1.SchemeGroupVersion.WithKind("Job"),
) )
statusWatcher := watcher.NewDefaultStatusWatcher(fakeClient, fakeMapper) statusWatcher := watcher.NewDefaultStatusWatcher(fakeClient, fakeMapper)
kwaiter := statusWaiter{ statusWaiter := statusWaiter{
sw: statusWatcher, sw: statusWatcher,
log: t.Logf, log: t.Logf,
} }
ctx, cancel := context.WithTimeout(context.Background(), time.Second*3) ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel() defer cancel()
objs := []runtime.Object{} createdObjs := []runtime.Object{}
for _, podYaml := range tt.objYamls { for _, objYaml := range tt.objToCreate {
m := make(map[string]interface{}) m := make(map[string]interface{})
err := yaml.Unmarshal([]byte(podYaml), &m) err := yaml.Unmarshal([]byte(objYaml), &m)
assert.NoError(t, err) assert.NoError(t, err)
resource := &unstructured.Unstructured{Object: m} resource := &unstructured.Unstructured{Object: m}
objs = append(objs, resource) createdObjs = append(createdObjs, resource)
gvr := getGVR(t, fakeMapper, resource) gvr := getGVR(t, fakeMapper, resource)
err = fakeClient.Tracker().Create(gvr, resource, resource.GetNamespace()) err = fakeClient.Tracker().Create(gvr, resource, resource.GetNamespace())
assert.NoError(t, err) assert.NoError(t, err)
}
for _, objYaml := range tt.toDelete {
m := make(map[string]interface{})
err := yaml.Unmarshal([]byte(objYaml), &m)
assert.NoError(t, err)
resource := &unstructured.Unstructured{Object: m}
gvr := getGVR(t, fakeMapper, resource)
go func() { go func() {
time.Sleep(2 * time.Second) time.Sleep(timeToDeletePod)
err = fakeClient.Tracker().Delete(gvr, resource.GetNamespace(), resource.GetName()) err = fakeClient.Tracker().Delete(gvr, resource.GetNamespace(), resource.GetName())
assert.NoError(t, err) assert.NoError(t, err)
}() }()
} }
resourceList := ResourceList{} resourceList := ResourceList{}
for _, obj := range objs { for _, obj := range createdObjs {
list, err := c.Build(objBody(obj), false) list, err := c.Build(objBody(obj), false)
assert.NoError(t, err) assert.NoError(t, err)
resourceList = append(resourceList, list...) resourceList = append(resourceList, list...)
} }
err := kwaiter.waitForDelete(ctx, resourceList) err := statusWaiter.waitForDelete(ctx, resourceList)
if tt.expectErrs != nil { if tt.expectErrs != nil {
assert.EqualError(t, err, errors.Join(tt.expectErrs...).Error()) assert.EqualError(t, err, errors.Join(tt.expectErrs...).Error())
return return
@ -195,7 +211,7 @@ func TestStatusWait(t *testing.T) {
{ {
name: "Job is not complete", name: "Job is not complete",
objYamls: []string{jobNoStatus}, objYamls: []string{jobNoStatus},
expectErrs: []error{errors.New("test: Job not ready, status: InProgress"), errors.New("context deadline exceeded")}, expectErrs: []error{errors.New("resource not ready, name: test, kind: Job, status: InProgress"), errors.New("context deadline exceeded")},
waitForJobs: true, waitForJobs: true,
}, },
{ {
@ -212,7 +228,7 @@ func TestStatusWait(t *testing.T) {
{ {
name: "one of the pods never becomes ready", name: "one of the pods never becomes ready",
objYamls: []string{podNoStatus, podCurrent}, objYamls: []string{podNoStatus, podCurrent},
expectErrs: []error{errors.New("in-progress-pod: Pod not ready, status: InProgress"), errors.New("context deadline exceeded")}, expectErrs: []error{errors.New("resource not ready, name: in-progress-pod, kind: Pod, status: InProgress"), errors.New("context deadline exceeded")},
}, },
{ {
name: "paused deployment passes", name: "paused deployment passes",
@ -231,8 +247,13 @@ func TestStatusWait(t *testing.T) {
appsv1.SchemeGroupVersion.WithKind("Deployment"), appsv1.SchemeGroupVersion.WithKind("Deployment"),
batchv1.SchemeGroupVersion.WithKind("Job"), batchv1.SchemeGroupVersion.WithKind("Job"),
) )
objs := []runtime.Object{}
statusWatcher := watcher.NewDefaultStatusWatcher(fakeClient, fakeMapper) statusWatcher := watcher.NewDefaultStatusWatcher(fakeClient, fakeMapper)
statusWaiter := statusWaiter{
sw: statusWatcher,
log: t.Logf,
}
objs := []runtime.Object{}
for _, podYaml := range tt.objYamls { for _, podYaml := range tt.objYamls {
m := make(map[string]interface{}) m := make(map[string]interface{})
err := yaml.Unmarshal([]byte(podYaml), &m) err := yaml.Unmarshal([]byte(podYaml), &m)
@ -243,11 +264,6 @@ func TestStatusWait(t *testing.T) {
err = fakeClient.Tracker().Create(gvr, resource, resource.GetNamespace()) err = fakeClient.Tracker().Create(gvr, resource, resource.GetNamespace())
assert.NoError(t, err) assert.NoError(t, err)
} }
kwaiter := statusWaiter{
sw: statusWatcher,
log: t.Logf,
}
resourceList := ResourceList{} resourceList := ResourceList{}
for _, obj := range objs { for _, obj := range objs {
list, err := c.Build(objBody(obj), false) list, err := c.Build(objBody(obj), false)
@ -257,8 +273,7 @@ func TestStatusWait(t *testing.T) {
ctx, cancel := context.WithTimeout(context.Background(), time.Second*3) ctx, cancel := context.WithTimeout(context.Background(), time.Second*3)
defer cancel() defer cancel()
err := statusWaiter.wait(ctx, resourceList, tt.waitForJobs)
err := kwaiter.wait(ctx, resourceList, tt.waitForJobs)
if tt.expectErrs != nil { if tt.expectErrs != nil {
assert.EqualError(t, err, errors.Join(tt.expectErrs...).Error()) assert.EqualError(t, err, errors.Join(tt.expectErrs...).Error())
return return

Loading…
Cancel
Save