From f2230a0f7f73d7584341db0c1cf2e12fa1fdd81b Mon Sep 17 00:00:00 2001 From: ssd04 Date: Mon, 21 Oct 2024 12:11:04 +0300 Subject: [PATCH 1/3] add empty slices for nil fields --- process/eventsInterceptor.go | 14 ++++++- process/eventsInterceptor_test.go | 70 ++++++++++++++++++++++++++++++- 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/process/eventsInterceptor.go b/process/eventsInterceptor.go index 6d91fa41..3edb7e2c 100644 --- a/process/eventsInterceptor.go +++ b/process/eventsInterceptor.go @@ -122,11 +122,21 @@ func (ei *eventsInterceptor) getLogEventsFromTransactionsPool(logs []*outport.Lo "identifier", eventIdentifier, ) + topics := event.EventHandler.GetTopics() + if topics == nil { + topics = make([][]byte, 0) + } + + eventData := event.EventHandler.GetData() + if eventData == nil { + eventData = make([]byte, 0) + } + events = append(events, data.Event{ Address: bech32Address, Identifier: eventIdentifier, - Topics: event.EventHandler.GetTopics(), - Data: event.EventHandler.GetData(), + Topics: topics, + Data: eventData, TxHash: event.TxHash, }) } diff --git a/process/eventsInterceptor_test.go b/process/eventsInterceptor_test.go index c09f1f0f..61bb504e 100644 --- a/process/eventsInterceptor_test.go +++ b/process/eventsInterceptor_test.go @@ -196,7 +196,10 @@ func TestProcessBlockEvents(t *testing.T) { ScrsWithOrder: expScrsWithOrder, LogEvents: []data.Event{ { - Address: hex.EncodeToString(addr), + Address: hex.EncodeToString(addr), + Identifier: "", + Data: make([]byte, 0), + Topics: make([][]byte, 0), }, }, } @@ -205,6 +208,71 @@ func TestProcessBlockEvents(t *testing.T) { require.Nil(t, err) require.Equal(t, expEvents, events) }) + + t.Run("nil event fields should be returned as empty", func(t *testing.T) { + t.Parallel() + + eventsInterceptor, _ := process.NewEventsInterceptor(createMockEventsInterceptorArgs()) + + addr := []byte("addr1") + + blockBody := &block.Body{ + MiniBlocks: make([]*block.MiniBlock, 1), + } + blockHeader := &block.HeaderV2{ + Header: &block.Header{ + ShardID: 1, + TimeStamp: 1234, + }, + } + + logs := []*outport.LogData{ + { + Log: &transaction.Log{ + Address: addr, + Events: []*transaction.Event{ + { + Address: addr, + Topics: nil, + Data: nil, + Identifier: nil, + }, + }, + }, + }, + } + + blockHash := []byte("blockHash") + blockEvents := data.ArgsSaveBlockData{ + HeaderHash: blockHash, + Body: blockBody, + Header: blockHeader, + TransactionsPool: &outport.TransactionPool{ + Logs: logs, + }, + } + + expEvents := &data.InterceptorBlockData{ + Hash: hex.EncodeToString(blockHash), + Body: blockBody, + Header: blockHeader, + Txs: make(map[string]*transaction.Transaction), + Scrs: make(map[string]*smartContractResult.SmartContractResult), + LogEvents: []data.Event{ + { + Address: hex.EncodeToString(addr), + Identifier: "", + Data: make([]byte, 0), + Topics: make([][]byte, 0), + }, + }, + } + + events, err := eventsInterceptor.ProcessBlockEvents(&blockEvents) + require.Nil(t, err) + require.Equal(t, expEvents, events) + }) + } func TestGetLogEventsFromTransactionsPool(t *testing.T) { From fb1c4a4f6595cfd30518fe4ddb65f458ccb44169 Mon Sep 17 00:00:00 2001 From: ssd04 Date: Mon, 21 Oct 2024 12:14:49 +0300 Subject: [PATCH 2/3] fix integration tests --- .../websocket/testNotifierWithWebsockets_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/integrationTests/websocket/testNotifierWithWebsockets_test.go b/integrationTests/websocket/testNotifierWithWebsockets_test.go index a5461612..eb721059 100644 --- a/integrationTests/websocket/testNotifierWithWebsockets_test.go +++ b/integrationTests/websocket/testNotifierWithWebsockets_test.go @@ -49,6 +49,8 @@ func TestNotifierWithWebsockets_PushEvents(t *testing.T) { { Address: hex.EncodeToString(addr), TxHash: "txHash1", + Data: make([]byte, 0), + Topics: make([][]byte, 0), }, } @@ -135,6 +137,8 @@ func TestNotifierWithWebsockets_BlockEvents(t *testing.T) { { Address: hex.EncodeToString(addr), TxHash: "txHash1", + Data: make([]byte, 0), + Topics: make([][]byte, 0), }, } expBlockEvents := &data.BlockEventsWithOrder{ @@ -559,6 +563,8 @@ func testNotifierWithWebsockets_AllEvents(t *testing.T, observerType string) { events := []data.Event{ { Address: hex.EncodeToString(addr), + Data: make([]byte, 0), + Topics: make([][]byte, 0), }, } From 4a21cd7a2186c20317668b02ab264671b16a5a3c Mon Sep 17 00:00:00 2001 From: ssd04 Date: Mon, 21 Oct 2024 12:17:32 +0300 Subject: [PATCH 3/3] return empty events slice instead on nil --- process/eventsInterceptor.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/process/eventsInterceptor.go b/process/eventsInterceptor.go index 3edb7e2c..d85f55d0 100644 --- a/process/eventsInterceptor.go +++ b/process/eventsInterceptor.go @@ -101,7 +101,7 @@ func (ei *eventsInterceptor) getLogEventsFromTransactionsPool(logs []*outport.Lo } if len(logEvents) == 0 { - return nil + return make([]data.Event, 0) } events := make([]data.Event, 0, len(logEvents))