Commit b7d0a4c6 authored by Hugo's avatar Hugo Committed by vipwzw

rollback to test whether has bug 318

parent 2e41497b
......@@ -5,7 +5,9 @@
package tendermint
import (
"context"
"encoding/binary"
"errors"
"flag"
"fmt"
"math/rand"
......@@ -18,20 +20,25 @@ import (
"github.com/33cn/chain33/common/limits"
"github.com/33cn/chain33/common/log"
"github.com/33cn/chain33/executor"
"github.com/33cn/chain33/mempool"
"github.com/33cn/chain33/p2p"
"github.com/33cn/chain33/queue"
"github.com/33cn/chain33/rpc"
"github.com/33cn/chain33/store"
_ "github.com/33cn/chain33/system"
"github.com/33cn/chain33/types"
_ "github.com/33cn/plugin/plugin/dapp/init"
pty "github.com/33cn/plugin/plugin/dapp/norm/types"
"google.golang.org/grpc"
_ "github.com/33cn/chain33/system"
_ "github.com/33cn/plugin/plugin/dapp/init"
_ "github.com/33cn/plugin/plugin/store/init"
)
var (
random *rand.Rand
txNumber = 10
loopCount = 10
conn *grpc.ClientConn
c types.Chain33Client
)
func init() {
......@@ -42,7 +49,6 @@ func init() {
random = rand.New(rand.NewSource(types.Now().UnixNano()))
log.SetLogLevel("info")
}
func TestTendermintPerf(t *testing.T) {
TendermintPerf()
fmt.Println("=======start clear test data!=======")
......@@ -50,39 +56,67 @@ func TestTendermintPerf(t *testing.T) {
}
func TendermintPerf() {
q, chain, s, exec, cs, p2p := initEnvTendermint()
q, chain, s, mem, exec, cs, p2p := initEnvTendermint()
defer chain.Close()
defer mem.Close()
defer exec.Close()
defer s.Close()
defer q.Close()
defer cs.Close()
defer p2p.Close()
sendReplyList(q)
err := createConn()
for err != nil {
err = createConn()
}
time.Sleep(10 * time.Second)
for i := 0; i < loopCount; i++ {
NormPut()
time.Sleep(time.Second)
}
time.Sleep(10 * time.Second)
}
func initEnvTendermint() (queue.Queue, *blockchain.BlockChain, queue.Module, *executor.Executor, queue.Module, queue.Module) {
func initEnvTendermint() (queue.Queue, *blockchain.BlockChain, queue.Module, queue.Module, *executor.Executor, queue.Module, queue.Module) {
var q = queue.New("channel")
flag.Parse()
cfg, sub := types.InitCfg("chain33.test.toml")
types.Init(cfg.Title, cfg)
chain := blockchain.New(cfg.BlockChain)
chain.SetQueueClient(q.Client())
exec := executor.New(cfg.Exec, sub.Exec)
exec.SetQueueClient(q.Client())
types.SetMinFee(0)
s := store.New(cfg.Store, sub.Store)
s.SetQueueClient(q.Client())
cs := New(cfg.Consensus, sub.Consensus["tendermint"])
cs.SetQueueClient(q.Client())
mem := mempool.New(cfg.Mempool, nil)
mem.SetQueueClient(q.Client())
network := p2p.New(cfg.P2P)
network.SetQueueClient(q.Client())
return q, chain, s, exec, cs, network
rpc.InitCfg(cfg.RPC)
gapi := rpc.NewGRpcServer(q.Client(), nil)
go gapi.Listen()
return q, chain, s, mem, exec, cs, network
}
func createConn() error {
var err error
url := "127.0.0.1:8802"
fmt.Println("grpc url:", url)
conn, err = grpc.Dial(url, grpc.WithInsecure())
if err != nil {
fmt.Fprintln(os.Stderr, err)
return err
}
c = types.NewChain33Client(conn)
r = rand.New(rand.NewSource(types.Now().UnixNano()))
return nil
}
func generateKey(i, valI int) string {
......@@ -115,38 +149,13 @@ func prepareTxList() *types.Transaction {
nput := &pty.NormAction_Nput{Nput: &pty.NormPut{Key: []byte(key), Value: []byte(value)}}
action := &pty.NormAction{Value: nput, Ty: pty.NormActionPut}
tx := &types.Transaction{Execer: []byte("norm"), Payload: types.Encode(action), Fee: 0}
tx := &types.Transaction{Execer: []byte("norm"), Payload: types.Encode(action), Fee: fee}
tx.To = address.ExecAddress("norm")
tx.Nonce = random.Int63()
tx.Sign(types.SECP256K1, getprivkey("CC38546E9E659D15E6B4893F0AB32A06D103931A8230B0BDE71459D2B27D6944"))
return tx
}
func getReplyList(n int) (txs []*types.Transaction) {
for i := 0; i < int(n); i++ {
txs = append(txs, prepareTxList())
}
return txs
}
func sendReplyList(q queue.Queue) {
client := q.Client()
client.Sub("mempool")
var count int
for msg := range client.Recv() {
if msg.Ty == types.EventTxList {
count++
msg.Reply(client.NewMessage("consensus", types.EventReplyTxList,
&types.ReplyTxList{Txs: getReplyList(txNumber)}))
//tendermint call RequestTx twice
if count >= loopCount*2 {
time.Sleep(4 * time.Second)
break
}
}
}
}
func clearTestData() {
err := os.RemoveAll("datadir")
if err != nil {
......@@ -154,3 +163,17 @@ func clearTestData() {
}
fmt.Println("test data clear successfully!")
}
func NormPut() {
tx := prepareTxList()
reply, err := c.SendTransaction(context.Background(), tx)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
if !reply.IsOk {
fmt.Fprintln(os.Stderr, errors.New(string(reply.GetMsg())))
return
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment