[tm-bench] show basic stats

```
===
Avg block time: 1225.504 ms
Avg tx throughput: 905 per sec
Avg block latency: 6.121 ms
===
```
This commit is contained in:
Anton Kaliaev
2017-03-16 20:53:09 +04:00
parent da08d589b5
commit 8af2fe79e1
4 changed files with 54 additions and 41 deletions

View File

@ -1,4 +1,4 @@
package bench
package main
import (
"crypto/rand"
@ -23,19 +23,27 @@ type transacter struct {
wg sync.WaitGroup
}
func newTransacter(target string, rate int) *transacter {
return &transacter{
Target: target,
Rate: rate,
wsc: rpcclient.NewWSClient(target, "/websocket"),
}
}
func (t *transacter) Start() error {
t.wsc = rpcclient.NewWSClient(t.Target, "/websocket")
t.stopped = false
if _, err := t.wsc.Start(); err != nil {
return err
}
wg.Add(1)
t.wg.Add(1)
go t.sendLoop()
return nil
}
func (t *transacter) Stop() {
t.stopped = true
wg.Wait()
t.wg.Wait()
t.wsc.Stop()
}
@ -59,18 +67,18 @@ func (t *transacter) sendLoop() {
}
if t.stopped {
wg.Done()
t.wg.Done()
return
}
timeToSend := time.Now() - startTime
timer.Sleep(time.Second - timeToSend)
timeToSend := time.Now().Sub(startTime)
time.Sleep(time.Second - timeToSend)
}
}
// generateTx returns a random byte sequence where first 8 bytes are the number
// of transaction.
func generateTx(num) []byte {
func generateTx(num int) []byte {
tx := make([]byte, 250)
binary.PutUvarint(tx[:32], uint64(num))
if _, err := rand.Read(tx[234:]); err != nil {