- package main
-
- import (
- "fmt"
- "log"
- "os"
- "os/exec"
- "time"
-
- "github.com/tendermint/tendermint/abci/example/code"
- "github.com/tendermint/tendermint/abci/types"
- )
-
- var abciType string
-
- func init() {
- abciType = os.Getenv("ABCI")
- if abciType == "" {
- abciType = "socket"
- }
- }
-
- func main() {
- testCounter()
- }
-
- const (
- maxABCIConnectTries = 10
- )
-
- func ensureABCIIsUp(typ string, n int) error {
- var err error
- cmdString := "abci-cli echo hello"
- if typ == "grpc" {
- cmdString = "abci-cli --abci grpc echo hello"
- }
-
- for i := 0; i < n; i++ {
- cmd := exec.Command("bash", "-c", cmdString)
- _, err = cmd.CombinedOutput()
- if err == nil {
- break
- }
- <-time.After(500 * time.Millisecond)
- }
- return err
- }
-
- func testCounter() {
- abciApp := os.Getenv("ABCI_APP")
- if abciApp == "" {
- panic("No ABCI_APP specified")
- }
-
- fmt.Printf("Running %s test with abci=%s\n", abciApp, abciType)
- subCommand := fmt.Sprintf("abci-cli %s", abciApp)
- cmd := exec.Command("bash", "-c", subCommand)
- cmd.Stdout = os.Stdout
- if err := cmd.Start(); err != nil {
- log.Fatalf("starting %q err: %v", abciApp, err)
- }
- defer func() {
- if err := cmd.Process.Kill(); err != nil {
- log.Printf("error on process kill: %v", err)
- }
- if err := cmd.Wait(); err != nil {
- log.Printf("error while waiting for cmd to exit: %v", err)
- }
- }()
-
- if err := ensureABCIIsUp(abciType, maxABCIConnectTries); err != nil {
- log.Fatalf("echo failed: %v", err)
- }
-
- client := startClient(abciType)
- defer func() {
- if err := client.Stop(); err != nil {
- log.Printf("error trying client stop: %v", err)
- }
- }()
-
- setOption(client, "serial", "on")
- commit(client, nil)
- deliverTx(client, []byte("abc"), code.CodeTypeBadNonce, nil)
- commit(client, nil)
- deliverTx(client, []byte{0x00}, types.CodeTypeOK, nil)
- commit(client, []byte{0, 0, 0, 0, 0, 0, 0, 1})
- deliverTx(client, []byte{0x00}, code.CodeTypeBadNonce, nil)
- deliverTx(client, []byte{0x01}, types.CodeTypeOK, nil)
- deliverTx(client, []byte{0x00, 0x02}, types.CodeTypeOK, nil)
- deliverTx(client, []byte{0x00, 0x03}, types.CodeTypeOK, nil)
- deliverTx(client, []byte{0x00, 0x00, 0x04}, types.CodeTypeOK, nil)
- deliverTx(client, []byte{0x00, 0x00, 0x06}, code.CodeTypeBadNonce, nil)
- commit(client, []byte{0, 0, 0, 0, 0, 0, 0, 5})
- }
|