2017-07-06 08:07:40 -07:00
|
|
|
package coin
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
cmn "github.com/tendermint/tmlibs/common"
|
|
|
|
"github.com/tendermint/tmlibs/log"
|
|
|
|
|
|
|
|
"github.com/tendermint/basecoin"
|
|
|
|
"github.com/tendermint/basecoin/stack"
|
|
|
|
"github.com/tendermint/basecoin/state"
|
|
|
|
)
|
|
|
|
|
|
|
|
func makeHandler() basecoin.Handler {
|
|
|
|
return NewHandler()
|
|
|
|
}
|
|
|
|
|
2017-07-12 09:54:07 -07:00
|
|
|
func makeSimpleTx(from, to basecoin.Actor, amount Coins) basecoin.Tx {
|
|
|
|
in := []TxInput{{Address: from, Coins: amount}}
|
2017-07-06 08:07:40 -07:00
|
|
|
out := []TxOutput{{Address: to, Coins: amount}}
|
|
|
|
return NewSendTx(in, out)
|
|
|
|
}
|
|
|
|
|
|
|
|
func BenchmarkSimpleTransfer(b *testing.B) {
|
|
|
|
h := makeHandler()
|
|
|
|
store := state.NewMemKVStore()
|
|
|
|
logger := log.NewNopLogger()
|
|
|
|
|
|
|
|
// set the initial account
|
|
|
|
acct := NewAccountWithKey(Coins{{"mycoin", 1234567890}})
|
|
|
|
h.SetOption(logger, store, NameCoin, "account", acct.MakeOption())
|
|
|
|
sender := acct.Actor()
|
|
|
|
receiver := basecoin.Actor{App: "foo", Address: cmn.RandBytes(20)}
|
|
|
|
|
|
|
|
// now, loop...
|
|
|
|
for i := 1; i <= b.N; i++ {
|
2017-07-10 03:19:42 -07:00
|
|
|
ctx := stack.MockContext("foo", 100).WithPermissions(sender)
|
2017-07-12 09:54:07 -07:00
|
|
|
tx := makeSimpleTx(sender, receiver, Coins{{"mycoin", 2}})
|
2017-07-06 08:07:40 -07:00
|
|
|
_, err := h.DeliverTx(ctx, store, tx)
|
|
|
|
// never should error
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|