Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions internal/assets/token_transfer.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ func (am *assetManager) MintTokens(ctx context.Context, ns string, transfer *fft

sender := am.NewTransfer(ns, transfer)
if am.metrics.IsMetricsEnabled() {
am.metrics.TransferSubmitted(transfer)
am.metrics.TransferSubmitted(&transfer.TokenTransfer)
}
if waitConfirm {
err = sender.SendAndWait(ctx)
Expand All @@ -143,7 +143,7 @@ func (am *assetManager) BurnTokens(ctx context.Context, ns string, transfer *fft

sender := am.NewTransfer(ns, transfer)
if am.metrics.IsMetricsEnabled() {
am.metrics.TransferSubmitted(transfer)
am.metrics.TransferSubmitted(&transfer.TokenTransfer)
}
if waitConfirm {
err = sender.SendAndWait(ctx)
Expand All @@ -164,7 +164,7 @@ func (am *assetManager) TransferTokens(ctx context.Context, ns string, transfer

sender := am.NewTransfer(ns, transfer)
if am.metrics.IsMetricsEnabled() {
am.metrics.TransferSubmitted(transfer)
am.metrics.TransferSubmitted(&transfer.TokenTransfer)
}
if waitConfirm {
err = sender.SendAndWait(ctx)
Expand Down
2 changes: 1 addition & 1 deletion internal/broadcast/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func (bm *broadcastManager) NewBroadcast(ns string, in *fftypes.MessageInOut) sy
func (bm *broadcastManager) BroadcastMessage(ctx context.Context, ns string, in *fftypes.MessageInOut, waitConfirm bool) (out *fftypes.Message, err error) {
broadcast := bm.NewBroadcast(ns, in)
if bm.metrics.IsMetricsEnabled() {
bm.metrics.MessageSubmitted(in)
bm.metrics.MessageSubmitted(&in.Message)
}
if waitConfirm {
err = broadcast.SendAndWait(ctx)
Expand Down
3 changes: 1 addition & 2 deletions internal/events/operation_update.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (
"github.com/hyperledger/firefly/internal/log"
"github.com/hyperledger/firefly/internal/txcommon"
"github.com/hyperledger/firefly/pkg/fftypes"
"github.com/hyperledger/firefly/pkg/tokens"
)

func (em *eventManager) operationUpdateCtx(ctx context.Context, operationID *fftypes.UUID, txState fftypes.OpStatus, blockchainTXID, errorMessage string, opOutput fftypes.JSONObject) error {
Expand All @@ -45,7 +44,7 @@ func (em *eventManager) operationUpdateCtx(ctx context.Context, operationID *fft
if err != nil {
log.L(em.ctx).Warnf("Could not determine token transfer type: %s", err)
}
em.metrics.TransferConfirmed(&tokens.TokenTransfer{TokenTransfer: tokenTransfer})
em.metrics.TransferConfirmed(&tokenTransfer)
}
if err := em.database.InsertEvent(ctx, event); err != nil {
return err
Expand Down
2 changes: 1 addition & 1 deletion internal/events/tokens_transferred.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ func (em *eventManager) persistTokenTransfer(ctx context.Context, transfer *toke
}
log.L(ctx).Infof("Token transfer recorded id=%s author=%s", transfer.ProtocolID, transfer.Key)
if em.metrics.IsMetricsEnabled() && countMetric {
em.metrics.TransferConfirmed(transfer)
em.metrics.TransferConfirmed(&transfer.TokenTransfer)
}

return true, nil
Expand Down
19 changes: 9 additions & 10 deletions internal/metrics/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,16 @@ import (

"github.com/hyperledger/firefly/internal/config"
"github.com/hyperledger/firefly/pkg/fftypes"
"github.com/hyperledger/firefly/pkg/tokens"
)

var mutex = &sync.Mutex{}

type Manager interface {
CountBatchPin()
MessageSubmitted(in *fftypes.MessageInOut)
MessageSubmitted(msg *fftypes.Message)
MessageConfirmed(msg *fftypes.Message, eventType fftypes.FFEnum)
TransferSubmitted(transfer *fftypes.TokenTransferInput)
TransferConfirmed(transfer *tokens.TokenTransfer)
TransferSubmitted(transfer *fftypes.TokenTransfer)
TransferConfirmed(transfer *fftypes.TokenTransfer)
AddTime(id string)
GetTime(id string) time.Time
DeleteTime(id string)
Expand Down Expand Up @@ -65,15 +64,15 @@ func (mm *metricsManager) CountBatchPin() {
BatchPinCounter.Inc()
}

func (mm *metricsManager) MessageSubmitted(in *fftypes.MessageInOut) {
if len(in.Header.ID.String()) > 0 {
switch in.Message.Header.Type {
func (mm *metricsManager) MessageSubmitted(msg *fftypes.Message) {
if len(msg.Header.ID.String()) > 0 {
switch msg.Header.Type {
case fftypes.MessageTypeBroadcast:
BroadcastSubmittedCounter.Inc()
case fftypes.MessageTypePrivate:
PrivateMsgSubmittedCounter.Inc()
}
mm.AddTime(in.Header.ID.String())
mm.AddTime(msg.Header.ID.String())
}
}

Expand All @@ -99,7 +98,7 @@ func (mm *metricsManager) MessageConfirmed(msg *fftypes.Message, eventType fftyp
}
}

func (mm *metricsManager) TransferSubmitted(transfer *fftypes.TokenTransferInput) {
func (mm *metricsManager) TransferSubmitted(transfer *fftypes.TokenTransfer) {
if len(transfer.LocalID.String()) > 0 {
switch transfer.Type {
case fftypes.TokenTransferTypeMint: // Mint submitted
Expand All @@ -113,7 +112,7 @@ func (mm *metricsManager) TransferSubmitted(transfer *fftypes.TokenTransferInput
}
}

func (mm *metricsManager) TransferConfirmed(transfer *tokens.TokenTransfer) {
func (mm *metricsManager) TransferConfirmed(transfer *fftypes.TokenTransfer) {
timeElapsed := time.Since(mm.GetTime(transfer.LocalID.String())).Seconds()
mm.DeleteTime(transfer.LocalID.String())

Expand Down
64 changes: 24 additions & 40 deletions internal/metrics/metrics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,11 @@ import (

"github.com/hyperledger/firefly/internal/config"
"github.com/hyperledger/firefly/pkg/fftypes"
"github.com/hyperledger/firefly/pkg/tokens"
"github.com/stretchr/testify/assert"
)

var msgID = fftypes.NewUUID()
var MessageInOut = &fftypes.MessageInOut{
Message: fftypes.Message{
var Message = &fftypes.Message{
Header: fftypes.MessageHeader{
ID: msgID,
Identity: fftypes.Identity{
Expand All @@ -38,30 +36,16 @@ var MessageInOut = &fftypes.MessageInOut{
},
Type: "",
},
},
InlineData: fftypes.InlineData{
{Value: fftypes.JSONAnyPtr(`{"hello": "world"}`)},
},
}
}

var tokenLocalID = fftypes.NewUUID()
var TokenTransferInput = &fftypes.TokenTransferInput{
TokenTransfer: fftypes.TokenTransfer{
Amount: *fftypes.NewFFBigInt(5),
LocalID: tokenLocalID,
Type: "",
},
Pool: "pool1",
}

var TokenTransfer = &tokens.TokenTransfer{
PoolProtocolID: "F1",
TokenTransfer: fftypes.TokenTransfer{
var tokenLocalID = fftypes.NewUUID()
var TokenTransfer = &fftypes.TokenTransfer{
Amount: *fftypes.NewFFBigInt(1),
LocalID: tokenLocalID,
Type: "",
},
}
}


func newTestMetricsManager(t *testing.T) (*metricsManager, func()) {
config.Reset()
Expand Down Expand Up @@ -89,80 +73,80 @@ func TestCountBatchPin(t *testing.T) {
func TestMessageSubmittedBroadcast(t *testing.T) {
mm, cancel := newTestMetricsManager(t)
defer cancel()
MessageInOut.Header.Type = fftypes.MessageTypeBroadcast
mm.MessageSubmitted(MessageInOut)
Message.Header.Type = fftypes.MessageTypeBroadcast
mm.MessageSubmitted(Message)
assert.Equal(t, len(mm.timeMap), 1)
assert.NotNil(t, mm.timeMap[msgID.String()])
}

func TestMessageSubmittedPrivate(t *testing.T) {
mm, cancel := newTestMetricsManager(t)
defer cancel()
MessageInOut.Header.Type = fftypes.MessageTypePrivate
mm.MessageSubmitted(MessageInOut)
Message.Header.Type = fftypes.MessageTypePrivate
mm.MessageSubmitted(Message)
assert.Equal(t, len(mm.timeMap), 1)
assert.NotNil(t, mm.timeMap[msgID.String()])
}

func TestMessageConfirmedBroadcastSuccess(t *testing.T) {
mm, cancel := newTestMetricsManager(t)
defer cancel()
MessageInOut.Header.Type = fftypes.MessageTypeBroadcast
Message.Header.Type = fftypes.MessageTypeBroadcast
mm.timeMap[msgID.String()] = time.Now()
mm.MessageConfirmed(&MessageInOut.Message, fftypes.EventTypeMessageConfirmed)
mm.MessageConfirmed(Message, fftypes.EventTypeMessageConfirmed)
assert.Equal(t, len(mm.timeMap), 0)
}

func TestMessageConfirmedBroadcastRejected(t *testing.T) {
mm, cancel := newTestMetricsManager(t)
defer cancel()
MessageInOut.Header.Type = fftypes.MessageTypeBroadcast
Message.Header.Type = fftypes.MessageTypeBroadcast
mm.timeMap[msgID.String()] = time.Now()
mm.MessageConfirmed(&MessageInOut.Message, fftypes.EventTypeMessageRejected)
mm.MessageConfirmed(Message, fftypes.EventTypeMessageRejected)
assert.Equal(t, len(mm.timeMap), 0)
}

func TestMessageConfirmedPrivateSuccess(t *testing.T) {
mm, cancel := newTestMetricsManager(t)
defer cancel()
MessageInOut.Header.Type = fftypes.MessageTypePrivate
Message.Header.Type = fftypes.MessageTypePrivate
mm.timeMap[msgID.String()] = time.Now()
mm.MessageConfirmed(&MessageInOut.Message, fftypes.EventTypeMessageConfirmed)
mm.MessageConfirmed(Message, fftypes.EventTypeMessageConfirmed)
assert.Equal(t, len(mm.timeMap), 0)
}

func TestMessageConfirmedPrivateRejected(t *testing.T) {
mm, cancel := newTestMetricsManager(t)
defer cancel()
MessageInOut.Header.Type = fftypes.MessageTypePrivate
Message.Header.Type = fftypes.MessageTypePrivate
mm.timeMap[msgID.String()] = time.Now()
mm.MessageConfirmed(&MessageInOut.Message, fftypes.EventTypeMessageRejected)
mm.MessageConfirmed(Message, fftypes.EventTypeMessageRejected)
assert.Equal(t, len(mm.timeMap), 0)
}

func TestTokenSubmittedMint(t *testing.T) {
mm, cancel := newTestMetricsManager(t)
defer cancel()
TokenTransferInput.Type = fftypes.TokenTransferTypeMint
mm.TransferSubmitted(TokenTransferInput)
TokenTransfer.Type = fftypes.TokenTransferTypeMint
mm.TransferSubmitted(TokenTransfer)
assert.Equal(t, len(mm.timeMap), 1)
assert.NotNil(t, mm.timeMap[tokenLocalID.String()])
}

func TestTransferSubmittedTransfer(t *testing.T) {
mm, cancel := newTestMetricsManager(t)
defer cancel()
TokenTransferInput.Type = fftypes.TokenTransferTypeTransfer
mm.TransferSubmitted(TokenTransferInput)
TokenTransfer.Type = fftypes.TokenTransferTypeTransfer
mm.TransferSubmitted(TokenTransfer)
assert.Equal(t, len(mm.timeMap), 1)
assert.NotNil(t, mm.timeMap[tokenLocalID.String()])
}

func TestTransferSubmittedBurn(t *testing.T) {
mm, cancel := newTestMetricsManager(t)
defer cancel()
TokenTransferInput.Type = fftypes.TokenTransferTypeBurn
mm.TransferSubmitted(TokenTransferInput)
TokenTransfer.Type = fftypes.TokenTransferTypeBurn
mm.TransferSubmitted(TokenTransfer)
assert.Equal(t, len(mm.timeMap), 1)
assert.NotNil(t, mm.timeMap[tokenLocalID.String()])
}
Expand Down
2 changes: 1 addition & 1 deletion internal/privatemessaging/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func (pm *privateMessaging) NewMessage(ns string, in *fftypes.MessageInOut) sysm
func (pm *privateMessaging) SendMessage(ctx context.Context, ns string, in *fftypes.MessageInOut, waitConfirm bool) (out *fftypes.Message, err error) {
message := pm.NewMessage(ns, in)
if pm.metrics.IsMetricsEnabled() {
pm.metrics.MessageSubmitted(in)
pm.metrics.MessageSubmitted(&in.Message)
}
if waitConfirm {
err = message.SendAndWait(ctx)
Expand Down
12 changes: 5 additions & 7 deletions mocks/metricsmocks/manager.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.