diff --git a/pkg/event/kind/cdevent/listener.go b/pkg/event/kind/cdevent/listener.go index e4493887024..1f26e5c1733 100644 --- a/pkg/event/kind/cdevent/listener.go +++ b/pkg/event/kind/cdevent/listener.go @@ -79,7 +79,20 @@ func (l *CDEventListener) Notify(event testkube.Event) (result testkube.EventRes if event.Type_ != nil && (*event.Type_ == *testkube.EventEndTestAborted || *event.Type_ == *testkube.EventEndTestFailed || *event.Type_ == *testkube.EventEndTestSuccess || *event.Type_ == *testkube.EventEndTestTimeout) { // Create the output event - ev, err = cde.MapTestkubeLogToCDEvent(event, l.clusterID, l.dashboardURI) + ev, err = cde.MapTestkubeTestLogToCDEvent(event, l.clusterID, l.dashboardURI) + if err != nil { + return testkube.NewFailedEventResult(event.Id, err) + } + + if err := l.sendCDEvent(ev); err != nil { + return testkube.NewFailedEventResult(event.Id, err) + } + } + + if event.Type_ != nil && (*event.Type_ == *testkube.EventEndTestWorkflowAborted || *event.Type_ == *testkube.EventEndTestWorkflowFailed || + *event.Type_ == *testkube.EventEndTestWorkflowSuccess) { + // Create the output event + ev, err = cde.MapTestkubeTestWorkflowLogToCDEvent(event, l.clusterID, l.dashboardURI) if err != nil { return testkube.NewFailedEventResult(event.Id, err) } diff --git a/pkg/mapper/cdevents/mapper.go b/pkg/mapper/cdevents/mapper.go index 9dabce04a30..ce3e2658c04 100644 --- a/pkg/mapper/cdevents/mapper.go +++ b/pkg/mapper/cdevents/mapper.go @@ -243,8 +243,8 @@ func MapTestkubeArtifactToCDEvent(execution *testkube.Execution, clusterID, path return ev, nil } -// MapTestkubeLogToCDEvent maps OpenAPI spec log to CDEvent CDEventReader -func MapTestkubeLogToCDEvent(event testkube.Event, clusterID, dashboardURI string) (cdevents.CDEventReader, error) { +// MapTestkubeTestLogToCDEvent maps OpenAPI spec Test log to CDEvent CDEventReader +func MapTestkubeTestLogToCDEvent(event testkube.Event, clusterID, dashboardURI string) (cdevents.CDEventReader, error) { // Create the base event ev, err := cdevents.NewTestOutputPublishedEvent() if err != nil { @@ -844,3 +844,40 @@ func MapTestkubeEventFinishTestWorkflowTestSuiteToCDEvent(event testkube.Event, return ev, nil } + +// MapTestkubeTestWorkflowLogToCDEvent maps OpenAPI spec Test WWorkflow log to CDEvent CDEventReader +func MapTestkubeTestWorkflowLogToCDEvent(event testkube.Event, clusterID, dashboardURI string) (cdevents.CDEventReader, error) { + // Create the base event + ev, err := cdevents.NewTestOutputPublishedEvent() + if err != nil { + return nil, err + } + + if event.TestWorkflowExecution != nil { + ev.SetSubjectId(event.TestWorkflowExecution.Id + "-log") + } + + ev.SetSubjectSource(clusterID) + ev.SetSource(clusterID) + + if event.TestWorkflowExecution != nil { + ev.SetSubjectTestCaseRun(&cdevents.Reference{ + Id: event.TestWorkflowExecution.Id, + Source: clusterID, + }) + } + + ev.SetSubjectFormat("text/x-uri") + ev.SetSubjectOutputType("log") + if event.TestWorkflowExecution != nil { + workflowName := "" + if event.TestWorkflowExecution.Workflow != nil { + workflowName = event.TestWorkflowExecution.Workflow.Name + } + + ev.SetSubjectUri(fmt.Sprintf("%s/test-workflows/%s/executions/%s/log-output", dashboardURI, + workflowName, event.TestWorkflowExecution.Id)) + } + + return ev, nil +}