Skip to content

Commit 52a307c

Browse files
radtristeMarianMacik
authored andcommitted
[KOGITO-1206] Bump events after scenario run (apache#182)
1 parent 8cc297e commit 52a307c

File tree

3 files changed

+125
-0
lines changed

3 files changed

+125
-0
lines changed

bddframework/framework/logging.go

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/kiegroup/kogito-cloud-operator/pkg/client/kubernetes"
2525
"github.com/kiegroup/kogito-cloud-operator/pkg/logger"
2626
"go.uber.org/zap"
27+
"k8s.io/api/events/v1beta1"
2728

2829
"io/ioutil"
2930
)
@@ -278,3 +279,84 @@ type monitoredPod struct {
278279
type monitoredContainer struct {
279280
loggingFinished bool
280281
}
282+
283+
/////////////////////////////////////////////////////////////////////////
284+
// Events logging
285+
/////////////////////////////////////////////////////////////////////////
286+
287+
const (
288+
eventLastSeenKey = "LAST_SEEN"
289+
eventFirstSeenKey = "FIRST_SEEN"
290+
eventCountKey = "COUNT"
291+
eventNameKey = "NAME"
292+
eventKindKey = "KIND"
293+
eventSubObjectKey = "SUBOBJECT"
294+
eventTypeKey = "TYPE"
295+
eventReasonKey = "REASON"
296+
eventActionKey = "ACTION"
297+
eventControllerKey = "CONTROLLER"
298+
eventInstanceKey = "INSTANCE"
299+
eventMessageKey = "MESSAGE"
300+
)
301+
302+
var eventKeys = []string{
303+
eventLastSeenKey,
304+
eventFirstSeenKey,
305+
eventCountKey,
306+
eventNameKey,
307+
eventKindKey,
308+
eventSubObjectKey,
309+
eventTypeKey,
310+
eventReasonKey,
311+
eventActionKey,
312+
eventControllerKey,
313+
eventInstanceKey,
314+
eventMessageKey,
315+
}
316+
317+
// BumpEvents will bump all events into events.log file
318+
func BumpEvents(namespace string) {
319+
eventList, err := kubernetes.EventC(kubeClient).GetEvents(namespace)
320+
if err != nil {
321+
GetMainLogger().Errorf("Error retrieving events from namespace %s: %v", namespace, err)
322+
}
323+
fileWriter, err := os.Create(getLogFile(namespace, "events"))
324+
if err != nil {
325+
GetMainLogger().Errorf("Error while creating filewriter: %v", err)
326+
}
327+
328+
PrintDataMap(eventKeys, mapEvents(eventList), fileWriter)
329+
330+
if err := fileWriter.Close(); err != nil {
331+
GetMainLogger().Errorf("Error while closing filewriter: %v", err)
332+
}
333+
}
334+
335+
func mapEvents(eventList *v1beta1.EventList) []map[string]string {
336+
eventMaps := []map[string]string{}
337+
338+
for _, event := range eventList.Items {
339+
eventMap := make(map[string]string)
340+
eventMap[eventLastSeenKey] = getDefaultIfNull(event.DeprecatedLastTimestamp.Format("2006-01-02 15:04:05"))
341+
eventMap[eventFirstSeenKey] = getDefaultIfNull(event.DeprecatedFirstTimestamp.Format("2006-01-02 15:04:05"))
342+
eventMap[eventNameKey] = getDefaultIfNull(event.GetName())
343+
eventMap[eventKindKey] = getDefaultIfNull(event.TypeMeta.Kind)
344+
eventMap[eventSubObjectKey] = getDefaultIfNull(event.Regarding.FieldPath)
345+
eventMap[eventTypeKey] = getDefaultIfNull(event.Type)
346+
eventMap[eventReasonKey] = getDefaultIfNull(event.Reason)
347+
eventMap[eventActionKey] = getDefaultIfNull(event.Action)
348+
eventMap[eventControllerKey] = getDefaultIfNull(event.ReportingController)
349+
eventMap[eventInstanceKey] = getDefaultIfNull(event.ReportingInstance)
350+
eventMap[eventMessageKey] = getDefaultIfNull(event.Note)
351+
352+
eventMaps = append(eventMaps, eventMap)
353+
}
354+
return eventMaps
355+
}
356+
357+
func getDefaultIfNull(value string) string {
358+
if len(value) <= 0 {
359+
return "-"
360+
}
361+
return value
362+
}

bddframework/framework/util.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package framework
1616

1717
import (
1818
"fmt"
19+
"io"
1920
"io/ioutil"
2021
"math/rand"
2122
"net/http"
@@ -102,3 +103,44 @@ func GetScenarioName(s interface{}) string {
102103
}
103104
return s.(*gherkin.ScenarioOutline).Name
104105
}
106+
107+
// PrintDataMap prints a formatted dataMap using the given writer
108+
func PrintDataMap(keys []string, dataMaps []map[string]string, writer io.StringWriter) {
109+
// Get size of strings to be written, to be able to format correctly
110+
maxStringSizeMap := make(map[string]int)
111+
for _, key := range keys {
112+
maxSize := len(key)
113+
for _, dataMap := range dataMaps {
114+
if len(dataMap[key]) > maxSize {
115+
maxSize = len(dataMap[key])
116+
}
117+
}
118+
maxStringSizeMap[key] = maxSize
119+
}
120+
121+
// Write headers
122+
for _, header := range keys {
123+
writer.WriteString(header)
124+
writer.WriteString(getWhitespaceStr(maxStringSizeMap[header] - len(header) + 1))
125+
writer.WriteString(" | ")
126+
}
127+
writer.WriteString("\n")
128+
129+
// Write events
130+
for _, dataMap := range dataMaps {
131+
for _, key := range eventKeys {
132+
writer.WriteString(dataMap[key])
133+
writer.WriteString(getWhitespaceStr(maxStringSizeMap[key] - len(dataMap[key]) + 1))
134+
writer.WriteString(" | ")
135+
}
136+
writer.WriteString("\n")
137+
}
138+
}
139+
140+
func getWhitespaceStr(size int) string {
141+
whiteSpaceStr := ""
142+
for i := 0; i < size; i++ {
143+
whiteSpaceStr += " "
144+
}
145+
return whiteSpaceStr
146+
}

bddframework/steps/data.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ func (data *Data) BeforeScenario(s interface{}) {
5656
func (data *Data) AfterScenario(s interface{}, err error) {
5757
framework.StopPodLogCollector(data.Namespace)
5858
framework.FlushLogger(data.Namespace)
59+
framework.BumpEvents(data.Namespace)
5960

6061
logScenarioDuration(data, s)
6162
handleScenarioResult(data, s, err)

0 commit comments

Comments
 (0)