tendermint/tests/benchmarks/simple/simple.go

70 lines
1.3 KiB
Go
Raw Normal View History

2016-01-18 14:37:42 -08:00
package main
import (
"bufio"
"errors"
"fmt"
"net"
2016-05-14 00:09:47 -07:00
"reflect"
2016-01-18 14:37:42 -08:00
2017-01-12 12:47:55 -08:00
"github.com/tendermint/abci/types"
common "github.com/tendermint/go-common"
2016-01-18 14:37:42 -08:00
)
func main() {
conn, err := common.Connect("unix://test.sock")
2016-01-18 14:37:42 -08:00
if err != nil {
common.Exit(err.Error())
2016-01-18 14:37:42 -08:00
}
// Make a bunch of requests
counter := 0
for i := 0; ; i++ {
2016-05-14 00:09:47 -07:00
req := types.ToRequestEcho("foobar")
2016-01-18 14:37:42 -08:00
_, err := makeRequest(conn, req)
if err != nil {
common.Exit(err.Error())
2016-01-18 14:37:42 -08:00
}
counter += 1
if counter%1000 == 0 {
fmt.Println(counter)
}
}
}
2016-01-30 19:36:33 -08:00
func makeRequest(conn net.Conn, req *types.Request) (*types.Response, error) {
2016-01-18 14:37:42 -08:00
var bufWriter = bufio.NewWriter(conn)
// Write desired request
2016-01-30 19:36:33 -08:00
err := types.WriteMessage(req, bufWriter)
2016-01-18 14:37:42 -08:00
if err != nil {
return nil, err
}
2016-05-14 00:09:47 -07:00
err = types.WriteMessage(types.ToRequestFlush(), bufWriter)
2016-01-18 14:37:42 -08:00
if err != nil {
return nil, err
}
2016-01-30 19:44:04 -08:00
err = bufWriter.Flush()
if err != nil {
return nil, err
}
2016-01-18 14:37:42 -08:00
// Read desired response
2016-01-30 19:36:33 -08:00
var res = &types.Response{}
err = types.ReadMessage(conn, res)
2016-01-18 14:37:42 -08:00
if err != nil {
return nil, err
}
2016-01-30 19:36:33 -08:00
var resFlush = &types.Response{}
err = types.ReadMessage(conn, resFlush)
2016-01-18 14:37:42 -08:00
if err != nil {
return nil, err
}
2016-05-17 17:06:24 -07:00
if _, ok := resFlush.Value.(*types.Response_Flush); !ok {
2017-01-16 22:59:46 -08:00
return nil, errors.New(fmt.Sprintf("Expected flush response but got something else: %v", reflect.TypeOf(resFlush)))
2016-01-18 14:37:42 -08:00
}
return res, nil
}