From 2f702a17dbf98d187f80e2560f3ad371e8a98a84 Mon Sep 17 00:00:00 2001 From: Hans Moog <hm@mkjc.net> Date: Thu, 26 Dec 2019 01:12:54 +0100 Subject: [PATCH] Feat: benchmark: 24000 value TPS (complete parsing + validating) --- .../transaction/test/transaction_test.go | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/packages/binary/transaction/test/transaction_test.go b/packages/binary/transaction/test/transaction_test.go index a5443cd1..4ff8aa67 100644 --- a/packages/binary/transaction/test/transaction_test.go +++ b/packages/binary/transaction/test/transaction_test.go @@ -22,6 +22,49 @@ import ( "github.com/stretchr/testify/assert" ) +func BenchmarkVerifyValueTransactions(b *testing.B) { + keyPairOfSourceAddress := ed25119.GenerateKeyPair() + keyPairOfTargetAddress := ed25119.GenerateKeyPair() + + transactions := make([][]byte, b.N) + for i := 0; i < b.N; i++ { + tx := transaction.New(transaction.EmptyId, transaction.EmptyId, identity.Generate(), valuetransfer.New(). + AddInput(transfer.NewHash("test"), address.FromPublicKey(keyPairOfSourceAddress.PublicKey)). + AddOutput(address.FromPublicKey(keyPairOfTargetAddress.PublicKey), coloredcoins.NewColoredBalance(coloredcoins.NewColor("IOTA"), 12)). + Sign(keyPairOfSourceAddress)) + + if marshaledTransaction, err := tx.MarshalBinary(); err != nil { + b.Error(err) + } else { + transactions[i] = marshaledTransaction + } + } + + var wg sync.WaitGroup + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + wg.Add(1) + + currentIndex := i + if err := ants.Submit(func() { + if tx, err := transaction.FromBytes(transactions[currentIndex]); err != nil { + b.Error(err) + } else { + tx.VerifySignature() + tx.GetPayload().(*valuetransfer.ValueTransfer).VerifySignatures() + } + + wg.Done() + }); err != nil { + b.Error(err) + } + } + + wg.Wait() +} + func BenchmarkVerifySignature(b *testing.B) { transactions := make([]*transaction.Transaction, b.N) for i := 0; i < b.N; i++ { -- GitLab