diff --git a/test/e2e/cli.go b/test/e2e/cli.go index 49645f02e7..fd169e66e6 100644 --- a/test/e2e/cli.go +++ b/test/e2e/cli.go @@ -160,7 +160,7 @@ type KnRunResult struct { ErrorExpected bool } -// RunKubectl runs "kk" in a given namespace +// RunKn runs "kn" in a given namespace func RunKn(namespace string, args []string) KnRunResult { if namespace != "" { args = append(args, "--namespace", namespace) diff --git a/test/e2e/common.go b/test/e2e/common.go index 2d954fdc09..f29fc37b27 100644 --- a/test/e2e/common.go +++ b/test/e2e/common.go @@ -29,6 +29,7 @@ import ( const ( KnDefaultTestImage string = "gcr.io/knative-samples/helloworld-go" + EventDisplayImage string = "gcr.io/knative-releases/github.com/knative/eventing-contrib/cmd/event_display" MaxRetries int = 10 RetrySleepDuration time.Duration = 5 * time.Second ) diff --git a/test/e2e/cronjob_test.go b/test/e2e/cronjob_test.go index 94d04cf92b..71d6f7cb81 100644 --- a/test/e2e/cronjob_test.go +++ b/test/e2e/cronjob_test.go @@ -18,7 +18,10 @@ package e2e import ( + "fmt" + "strings" "testing" + "time" "gotest.tools/assert" @@ -57,6 +60,47 @@ func TestSourceCronJob(t *testing.T) { out, err := test.getResourceFieldsWithJSONPath("cronjobsource", "testcronjobsource2", jpSinkRefNameInSpec) assert.NilError(t, err) assert.Equal(t, out, "testsvc1") + + t.Log("verify event messages from cronjob source") + mymsg := "This is a message from cronjob." + test.serviceCreateEventDisplay(t, r, "displaysvc") + test.cronJobSourceCreate(t, r, "testcronjobsource3", "*/1 * * * *", mymsg, "svc:displaysvc") + err = test.verifyDeventDisplayLogs(t, "displaysvc", mymsg) + assert.NilError(t, err) +} + +func (test *e2eTest) verifyDeventDisplayLogs(t *testing.T, svcname string, message string) error { + var ( + retries int + err error + out string + ) + + selectorstr := fmt.Sprintf("serving.knative.dev/service=%s", svcname) + for retries < 5 { + out, err = kubectl{}.Run("logs", selectorstr, "-l", selectorstr, "-c", "user-container") + if err != nil { + t.Logf("error happens at kubectl logs -l %s : %v", selectorstr, err) + } else if err == nil && strings.Contains(out, message) { + break + } else { + t.Logf("return from kubectl logs -l %s : %s", selectorstr, out) + } + retries++ + time.Sleep(2 * time.Minute) + } + + if retries == 5 { + return fmt.Errorf("Expected log incorrect after retry 5 times. Expecting to include:\n%s\n Instead found:\n%s\n", message, out) + } else { + return nil + } +} + +func (test *e2eTest) serviceCreateEventDisplay(t *testing.T, r *KnRunResultCollector, serviceName string) { + out := test.kn.Run("service", "create", serviceName, "--image", EventDisplayImage) + r.AssertNoError(out) + assert.Check(t, util.ContainsAllIgnoreCase(out.Stdout, "service", serviceName, "creating", "namespace", test.kn.namespace, "ready")) } func (test *e2eTest) cronJobSourceCreate(t *testing.T, r *KnRunResultCollector, sourceName string, schedule string, data string, sink string) {