1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-01-16 05:16:08 +02:00

Add identifier data to create uuid in events (#5165)

This commit is contained in:
Manjunath 2024-10-29 08:39:34 +01:00 committed by GitHub
parent d6aaf43fae
commit 183004a80d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 33 additions and 6 deletions

View File

@ -68,7 +68,7 @@ func runGcpPublishEvent(utils gcpPublishEventUtils) error {
}
func createNewEvent(config *gcpPublishEventOptions) ([]byte, error) {
event, err := events.NewEvent(config.EventType, config.EventSource).CreateWithJSONData(config.EventData)
event, err := events.NewEvent(config.EventType, config.EventSource, "").CreateWithJSONData(config.EventData)
if err != nil {
return []byte{}, errors.Wrap(err, "failed to create new event")
}

View File

@ -21,12 +21,14 @@ type Event struct {
cloudEvent cloudevents.Event
eventType string
eventSource string
uuidData string
}
func NewEvent(eventType, eventSource string) Event {
func NewEvent(eventType, eventSource string, uuidString string) Event {
return Event{
eventType: eventType,
eventSource: eventSource,
uuidData: uuidString,
}
}
@ -45,8 +47,14 @@ func (e Event) CreateWithJSONData(data string, opts ...Option) (Event, error) {
func (e Event) Create(data any, opts ...Option) Event {
e.cloudEvent = cloudevents.NewEvent("1.0")
if e.uuidData != "" {
e.cloudEvent.SetID(GetUUID(e.uuidData))
} else {
e.cloudEvent.SetID(uuid.New().String())
}
// set default values
e.cloudEvent.SetID(uuid.New().String())
e.cloudEvent.SetType(e.eventType)
e.cloudEvent.SetTime(time.Now())
e.cloudEvent.SetSource(e.eventSource)
@ -58,6 +66,10 @@ func (e Event) Create(data any, opts ...Option) Event {
return e
}
func GetUUID(pipelineIdentifier string) string {
return uuid.NewMD5(uuid.NameSpaceOID, []byte(pipelineIdentifier)).String()
}
func (e Event) ToBytes() ([]byte, error) {
data, err := json.Marshal(e.cloudEvent)
if err != nil {

View File

@ -11,7 +11,7 @@ func TestEventCreation(t *testing.T) {
t.Run("success", func(t *testing.T) {
// init
// test
event := NewEvent(mock.Anything, mock.Anything).Create(nil)
event := NewEvent(mock.Anything, mock.Anything, "").Create(nil)
// asserts
assert.Equal(t, mock.Anything, event.cloudEvent.Type())
assert.Equal(t, mock.Anything, event.cloudEvent.Source())
@ -21,7 +21,7 @@ func TestEventCreation(t *testing.T) {
// init
testData := `{"testKey":"testValue"}`
// test
event, err := NewEvent(mock.Anything, mock.Anything).CreateWithJSONData(testData)
event, err := NewEvent(mock.Anything, mock.Anything, "").CreateWithJSONData(testData)
// asserts
assert.NoError(t, err)
assert.Equal(t, string(event.cloudEvent.Data()), testData)
@ -32,10 +32,25 @@ func TestEventCreation(t *testing.T) {
testData := `{"testKey": "testValue"}`
additionalData := `{"additionalKey": "additionalValue"}`
// test
event, err := NewEvent(mock.Anything, mock.Anything).CreateWithJSONData(testData)
event, err := NewEvent(mock.Anything, mock.Anything, "").CreateWithJSONData(testData)
event.AddToCloudEventData(additionalData)
// asserts
assert.NoError(t, err)
assert.Equal(t, string(event.cloudEvent.Data()), `{"additionalKey":"additionalValue","testKey":"testValue"}`)
})
}
func TestGetUUID(t *testing.T) {
pipelineIdentifier := "pipelineIdentifier"
uuid := GetUUID(pipelineIdentifier)
if uuid == "" {
t.Fatalf("expected a UUID but got none")
}
uuid2 := GetUUID(pipelineIdentifier)
if uuid != uuid2 {
t.Fatalf("expected the same UUID but got different ones")
}
}