From f1721ff5764bb1c86177fbd9bb165632e47255e2 Mon Sep 17 00:00:00 2001 From: Yongxuan Zhang Date: Wed, 30 Nov 2022 20:23:02 +0000 Subject: [PATCH] fix --- .../cloudevent/cloud_event_controller_test.go | 6 +- pkg/reconciler/events/event_test.go | 4 +- pkg/reconciler/events/k8sevent/event_test.go | 7 +- .../pipelinerun/pipelinerun_test.go | 8 +- pkg/reconciler/taskrun/taskrun_test.go | 24 +++--- test/events/events.go | 76 ------------------- 6 files changed, 24 insertions(+), 101 deletions(-) delete mode 100644 test/events/events.go diff --git a/pkg/reconciler/events/cloudevent/cloud_event_controller_test.go b/pkg/reconciler/events/cloudevent/cloud_event_controller_test.go index 0eb9ce807dd..4223ce8ac85 100644 --- a/pkg/reconciler/events/cloudevent/cloud_event_controller_test.go +++ b/pkg/reconciler/events/cloudevent/cloud_event_controller_test.go @@ -26,8 +26,8 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" resourcev1alpha1 "github.com/tektoncd/pipeline/pkg/apis/resource/v1alpha1" + "github.com/tektoncd/pipeline/pkg/reconciler/events/k8sevent" "github.com/tektoncd/pipeline/test/diff" - eventstest "github.com/tektoncd/pipeline/test/events" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/record" @@ -622,7 +622,7 @@ func TestSendCloudEventWithRetries(t *testing.T) { ceClient := Get(ctx).(FakeClient) ceClient.CheckCloudEventsUnordered(t, tc.name, tc.wantCEvents) recorder := controller.GetEventRecorder(ctx).(*record.FakeRecorder) - if err := eventstest.CheckEventsOrdered(t, recorder.Events, tc.name, tc.wantEvents); err != nil { + if err := k8sevent.CheckEventsOrdered(t, recorder.Events, tc.name, tc.wantEvents); err != nil { t.Fatalf(err.Error()) } }) @@ -725,7 +725,7 @@ func TestEmitCloudEvents(t *testing.T) { recorder := controller.GetEventRecorder(ctx).(*record.FakeRecorder) EmitCloudEvents(ctx, object) - if err := eventstest.CheckEventsOrdered(t, recorder.Events, tc.name, tc.wantEvents); err != nil { + if err := k8sevent.CheckEventsOrdered(t, recorder.Events, tc.name, tc.wantEvents); err != nil { t.Fatalf(err.Error()) } fakeClient.CheckCloudEventsUnordered(t, tc.name, tc.wantCloudEvents) diff --git a/pkg/reconciler/events/event_test.go b/pkg/reconciler/events/event_test.go index 09530beaeed..93919a3b416 100644 --- a/pkg/reconciler/events/event_test.go +++ b/pkg/reconciler/events/event_test.go @@ -22,7 +22,7 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/reconciler/events/cloudevent" - eventstest "github.com/tektoncd/pipeline/test/events" + "github.com/tektoncd/pipeline/pkg/reconciler/events/k8sevent" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/record" @@ -90,7 +90,7 @@ func TestEmit(t *testing.T) { recorder := controller.GetEventRecorder(ctx).(*record.FakeRecorder) Emit(ctx, nil, after, object) - if err := eventstest.CheckEventsOrdered(t, recorder.Events, tc.name, tc.wantEvents); err != nil { + if err := k8sevent.CheckEventsOrdered(t, recorder.Events, tc.name, tc.wantEvents); err != nil { t.Fatalf(err.Error()) } fakeClient.CheckCloudEventsUnordered(t, tc.name, tc.wantCloudEvents) diff --git a/pkg/reconciler/events/k8sevent/event_test.go b/pkg/reconciler/events/k8sevent/event_test.go index 3cfbfecc3c7..650b64bf275 100644 --- a/pkg/reconciler/events/k8sevent/event_test.go +++ b/pkg/reconciler/events/k8sevent/event_test.go @@ -23,7 +23,6 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" - eventstest "github.com/tektoncd/pipeline/test/events" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/record" @@ -142,7 +141,7 @@ func TestEmitK8sEventsOnConditions(t *testing.T) { ctx, _ := rtesting.SetupFakeContext(t) recorder := controller.GetEventRecorder(ctx).(*record.FakeRecorder) EmitK8sEvents(ctx, ts.before, ts.after, tr) - err := eventstest.CheckEventsOrdered(t, recorder.Events, ts.name, ts.wantEvents) + err := CheckEventsOrdered(t, recorder.Events, ts.name, ts.wantEvents) if err != nil { t.Errorf(err.Error()) } @@ -201,7 +200,7 @@ func TestEmitK8sEvents(t *testing.T) { recorder := controller.GetEventRecorder(ctx).(*record.FakeRecorder) EmitK8sEvents(ctx, nil, after, object) - if err := eventstest.CheckEventsOrdered(t, recorder.Events, tc.name, tc.wantEvents); err != nil { + if err := CheckEventsOrdered(t, recorder.Events, tc.name, tc.wantEvents); err != nil { t.Fatalf(err.Error()) } } @@ -226,7 +225,7 @@ func TestEmitError(t *testing.T) { fr := record.NewFakeRecorder(1) tr := &corev1.Pod{} EmitError(fr, ts.err, tr) - err := eventstest.CheckEventsOrdered(t, fr.Events, ts.name, ts.wantEvents) + err := CheckEventsOrdered(t, fr.Events, ts.name, ts.wantEvents) if err != nil { t.Errorf(err.Error()) } diff --git a/pkg/reconciler/pipelinerun/pipelinerun_test.go b/pkg/reconciler/pipelinerun/pipelinerun_test.go index d5b70c8bf2b..1de4a6d6de7 100644 --- a/pkg/reconciler/pipelinerun/pipelinerun_test.go +++ b/pkg/reconciler/pipelinerun/pipelinerun_test.go @@ -39,13 +39,13 @@ import ( resourcev1alpha1 "github.com/tektoncd/pipeline/pkg/apis/resource/v1alpha1" resolutionutil "github.com/tektoncd/pipeline/pkg/internal/resolution" "github.com/tektoncd/pipeline/pkg/reconciler/events/cloudevent" + "github.com/tektoncd/pipeline/pkg/reconciler/events/k8sevent" "github.com/tektoncd/pipeline/pkg/reconciler/pipelinerun/resources" ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" "github.com/tektoncd/pipeline/pkg/reconciler/volumeclaim" resolutioncommon "github.com/tektoncd/pipeline/pkg/resolution/common" "github.com/tektoncd/pipeline/test" "github.com/tektoncd/pipeline/test/diff" - eventstest "github.com/tektoncd/pipeline/test/events" "github.com/tektoncd/pipeline/test/names" "github.com/tektoncd/pipeline/test/parse" "gomodules.xyz/jsonpatch/v2" @@ -2951,7 +2951,7 @@ spec: "Normal PipelineRunCouldntCancel PipelineRun \"test-pipeline-fails-to-cancel\" was cancelled but had errors trying to cancel TaskRuns", "Warning InternalError 1 error occurred", } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, prName, wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, prName, wantEvents) if err != nil { t.Errorf(err.Error()) } @@ -3067,7 +3067,7 @@ spec: "Normal PipelineRunCouldntTimeOut PipelineRun \"test-pipeline-fails-to-timeout\" was timed out but had errors trying to time out TaskRuns and/or Runs", "Warning InternalError 1 error occurred", } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, prName, wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, prName, wantEvents) if err != nil { t.Errorf(err.Error()) } @@ -7082,7 +7082,7 @@ func (prt PipelineRunTest) reconcileRun(namespace, pipelineRunName string, wantE // Check generated events match what's expected if len(wantEvents) > 0 { - if err := eventstest.CheckEventsOrdered(prt.Test, prt.TestAssets.Recorder.Events, pipelineRunName, wantEvents); err != nil { + if err := k8sevent.CheckEventsOrdered(prt.Test, prt.TestAssets.Recorder.Events, pipelineRunName, wantEvents); err != nil { prt.Test.Errorf(err.Error()) } } diff --git a/pkg/reconciler/taskrun/taskrun_test.go b/pkg/reconciler/taskrun/taskrun_test.go index 0d4fe769ef5..53b9b4bb3e5 100644 --- a/pkg/reconciler/taskrun/taskrun_test.go +++ b/pkg/reconciler/taskrun/taskrun_test.go @@ -41,6 +41,7 @@ import ( resolutionutil "github.com/tektoncd/pipeline/pkg/internal/resolution" podconvert "github.com/tektoncd/pipeline/pkg/pod" "github.com/tektoncd/pipeline/pkg/reconciler/events/cloudevent" + "github.com/tektoncd/pipeline/pkg/reconciler/events/k8sevent" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" "github.com/tektoncd/pipeline/pkg/reconciler/volumeclaim" @@ -48,7 +49,6 @@ import ( "github.com/tektoncd/pipeline/pkg/workspace" "github.com/tektoncd/pipeline/test" "github.com/tektoncd/pipeline/test/diff" - eventstest "github.com/tektoncd/pipeline/test/events" "github.com/tektoncd/pipeline/test/names" "github.com/tektoncd/pipeline/test/parse" corev1 "k8s.io/api/core/v1" @@ -701,7 +701,7 @@ spec: t.Errorf("Expected reason %q but was %s", v1beta1.TaskRunReasonRunning.String(), condition.Reason) } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, "reconcile-cloud-events", wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, "reconcile-cloud-events", wantEvents) if !(err == nil) { t.Errorf(err.Error()) } @@ -1193,7 +1193,7 @@ spec: t.Fatalf("Expected actions to be logged in the kubeclient, got none") } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, tc.name, tc.wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, tc.name, tc.wantEvents) if err != nil { t.Errorf(err.Error()) } @@ -1348,7 +1348,7 @@ spec: t.Fatalf("Expected actions to be logged in the kubeclient, got none") } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, tc.name, tc.wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, tc.name, tc.wantEvents) if err != nil { t.Errorf(err.Error()) } @@ -1687,7 +1687,7 @@ spec: t.Errorf("expected 2 actions, got %d. Actions: %#v", len(actions), actions) } - err := eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, tc.name, tc.wantEvents) + err := k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, tc.name, tc.wantEvents) if !(err == nil) { t.Errorf(err.Error()) } @@ -1965,7 +1965,7 @@ status: "Normal Running Not all Steps", "Normal Succeeded", } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, "test-reconcile-pod-updateStatus", wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, "test-reconcile-pod-updateStatus", wantEvents) if !(err == nil) { t.Errorf(err.Error()) } @@ -2064,7 +2064,7 @@ status: "Normal Started", "Warning Failed TaskRun \"test-taskrun-run-cancelled\" was cancelled", } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, "test-reconcile-on-cancelled-taskrun", wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, "test-reconcile-on-cancelled-taskrun", wantEvents) if !(err == nil) { t.Errorf(err.Error()) } @@ -2137,7 +2137,7 @@ status: "Normal Started", "Warning Failed TaskRun \"test-taskrun-run-timedout\" was cancelled. TaskRun cancelled as pipeline has been cancelled.", } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, "test-reconcile-on-timedout-taskrun", wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, "test-reconcile-on-timedout-taskrun", wantEvents) if !(err == nil) { t.Errorf(err.Error()) } @@ -2208,7 +2208,7 @@ status: if d := cmp.Diff(expectedStatus, condition, ignoreLastTransitionTime); d != "" { t.Fatalf("Did not get expected condition %s", diff.PrintWantGot(d)) } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, taskRun.Name, wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, taskRun.Name, wantEvents) if err != nil { t.Errorf(err.Error()) } @@ -2280,7 +2280,7 @@ status: if d := cmp.Diff(expectedStatus, condition, ignoreLastTransitionTime); d != "" { t.Fatalf("Did not get expected condition %s", diff.PrintWantGot(d)) } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, taskRun.Name, wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, taskRun.Name, wantEvents) if err != nil { t.Errorf(err.Error()) } @@ -2395,7 +2395,7 @@ status: if d := cmp.Diff(tc.expectedStatus, condition, ignoreLastTransitionTime); d != "" { t.Fatalf("Did not get expected condition %s", diff.PrintWantGot(d)) } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, tc.taskRun.Name, tc.wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, tc.taskRun.Name, tc.wantEvents) if !(err == nil) { t.Errorf(err.Error()) } @@ -3543,7 +3543,7 @@ spec: } } - err = eventstest.CheckEventsOrdered(t, testAssets.Recorder.Events, tt.desc, tt.wantEvents) + err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, tt.desc, tt.wantEvents) if !(err == nil) { t.Errorf(err.Error()) } diff --git a/test/events/events.go b/test/events/events.go deleted file mode 100644 index f4a321c9099..00000000000 --- a/test/events/events.go +++ /dev/null @@ -1,76 +0,0 @@ -/* -Copyright 2021 The Tekton 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. -*/ -package events - -import ( - "fmt" - "regexp" - "testing" - "time" -) - -// CheckEventsOrdered checks that the events received via the given chan are the same as wantEvents, -// in the same order. -func CheckEventsOrdered(t *testing.T, eventChan chan string, testName string, wantEvents []string) error { - t.Helper() - // Sleep 50ms to make sure events have delivered - time.Sleep(50 * time.Millisecond) - err := eventsFromChannel(eventChan, wantEvents) - if err != nil { - return fmt.Errorf("error in test %s: %v", testName, err) - } - return nil -} - -// eventsFromChannel takes a chan of string, a test name, and a list of events that a test -// expects to receive. The events must be received in the same order they appear in the -// wantEvents list. Any extra or too few received events are considered errors. -func eventsFromChannel(c chan string, wantEvents []string) error { - // We get events from a channel, so the timeout is here to avoid waiting - // on the channel forever if fewer than expected events are received. - // We only hit the timeout in case of failure of the test, so the actual value - // of the timeout is not so relevant, it's only used when tests are going to fail. - // on the channel forever if fewer than expected events are received - timer := time.NewTimer(10 * time.Millisecond) - foundEvents := []string{} - for ii := 0; ii < len(wantEvents)+1; ii++ { - // We loop over all the events that we expect. Once they are all received - // we exit the loop. If we never receive enough events, the timeout takes us - // out of the loop. - select { - case event := <-c: - foundEvents = append(foundEvents, event) - if ii > len(wantEvents)-1 { - return fmt.Errorf("received event \"%s\" but not more expected", event) - } - wantEvent := wantEvents[ii] - matching, err := regexp.MatchString(wantEvent, event) - if err == nil { - if !matching { - return fmt.Errorf("expected event \"%s\" but got \"%s\" instead", wantEvent, event) - } - } else { - return fmt.Errorf("something went wrong matching the event: %s", err) - } - case <-timer.C: - if len(foundEvents) != len(wantEvents) { - return fmt.Errorf("received %d events but %d expected. Found events: %#v", len(foundEvents), len(wantEvents), foundEvents) - } - return nil - } - } - return nil -}