Skip to content

Commit

Permalink
feat: log cd event for test workflow
Browse files Browse the repository at this point in the history
Signed-off-by: Vladislav Sukhin <vladislav@kubeshop.io>
  • Loading branch information
vsukhin committed Jul 3, 2024
1 parent ccaf620 commit 27888b1
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 3 deletions.
15 changes: 14 additions & 1 deletion pkg/event/kind/cdevent/listener.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand Down
41 changes: 39 additions & 2 deletions pkg/mapper/cdevents/mapper.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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
}

0 comments on commit 27888b1

Please sign in to comment.