diff --git a/pkg/converter/converter_test.go b/pkg/converter/converter_test.go index 2bc97a5..ae28b41 100644 --- a/pkg/converter/converter_test.go +++ b/pkg/converter/converter_test.go @@ -114,10 +114,6 @@ func TestConverterUnparsedMessage(t *testing.T) { chain := &configTypes.Chain{Name: "chain"} converter := converterPkg.NewConverter(logger, chain) - // msgSend := &cosmosBankTypes.MsgSend{} - // bytes, err := msgSend.Marshal() - // require.NoError(t, err) - message := &codecTypes.Any{ TypeUrl: "/cosmos.bank.v1beta1.MsgSend", Value: []byte("unparsed"), diff --git a/pkg/nodes_manager/nodes_manager.go b/pkg/nodes_manager/nodes_manager.go index 58b61e1..288e00c 100644 --- a/pkg/nodes_manager/nodes_manager.go +++ b/pkg/nodes_manager/nodes_manager.go @@ -11,37 +11,6 @@ import ( "github.com/rs/zerolog" ) -type ReportQueue struct { - Data []types.Report - Size int - Mutes sync.Mutex -} - -func NewReportQueue(size int) ReportQueue { - return ReportQueue{Data: make([]types.Report, 0), Size: size} -} - -func (q *ReportQueue) Add(report types.Report) { - q.Mutes.Lock() - - if len(q.Data) >= q.Size { - _, q.Data = q.Data[0], q.Data[1:] - } - - q.Data = append(q.Data, report) - q.Mutes.Unlock() -} - -func (q *ReportQueue) Has(msg types.Report) bool { - for _, elem := range q.Data { - if elem.Reportable.GetHash() == msg.Reportable.GetHash() { - return true - } - } - - return false -} - type NodesManager struct { Logger zerolog.Logger Nodes map[string][]*ws.TendermintWebsocketClient diff --git a/pkg/nodes_manager/queue.go b/pkg/nodes_manager/queue.go new file mode 100644 index 0000000..e476774 --- /dev/null +++ b/pkg/nodes_manager/queue.go @@ -0,0 +1,37 @@ +package nodes_manager + +import ( + "main/pkg/types" + "sync" +) + +type ReportQueue struct { + Data []types.Report + Size int + Mutes sync.Mutex +} + +func NewReportQueue(size int) ReportQueue { + return ReportQueue{Data: make([]types.Report, 0), Size: size} +} + +func (q *ReportQueue) Add(report types.Report) { + q.Mutes.Lock() + + if len(q.Data) >= q.Size { + _, q.Data = q.Data[0], q.Data[1:] + } + + q.Data = append(q.Data, report) + q.Mutes.Unlock() +} + +func (q *ReportQueue) Has(msg types.Report) bool { + for _, elem := range q.Data { + if elem.Reportable.GetHash() == msg.Reportable.GetHash() { + return true + } + } + + return false +} diff --git a/pkg/nodes_manager/queue_test.go b/pkg/nodes_manager/queue_test.go new file mode 100644 index 0000000..f5b9224 --- /dev/null +++ b/pkg/nodes_manager/queue_test.go @@ -0,0 +1,25 @@ +package nodes_manager_test + +import ( + "github.com/stretchr/testify/require" + configTypes "main/pkg/config/types" + nodesManagerPkg "main/pkg/nodes_manager" + "main/pkg/types" + "testing" +) + +func TestQueueAdd(t *testing.T) { + t.Parallel() + + queue := nodesManagerPkg.NewReportQueue(1) + report1 := types.Report{Reportable: &types.Tx{Hash: configTypes.Link{Value: "123"}}} + report2 := types.Report{Reportable: &types.Tx{Hash: configTypes.Link{Value: "456"}}} + + queue.Add(report1) + require.True(t, queue.Has(report1)) + require.False(t, queue.Has(report2)) + + queue.Add(report2) + require.True(t, queue.Has(report2)) + require.False(t, queue.Has(report1)) +}