github.com/KYVENetwork/cometbft/v38@v38.0.3/proxy/app_conn_test.go (about)

     1  package proxy
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/KYVENetwork/cometbft/v38/abci/example/kvstore"
     9  	"github.com/KYVENetwork/cometbft/v38/abci/server"
    10  	abci "github.com/KYVENetwork/cometbft/v38/abci/types"
    11  	"github.com/KYVENetwork/cometbft/v38/libs/log"
    12  	cmtrand "github.com/KYVENetwork/cometbft/v38/libs/rand"
    13  )
    14  
    15  var SOCKET = "socket"
    16  
    17  func TestEcho(t *testing.T) {
    18  	sockPath := fmt.Sprintf("unix:///tmp/echo_%v.sock", cmtrand.Str(6))
    19  	clientCreator := NewRemoteClientCreator(sockPath, SOCKET, true)
    20  
    21  	// Start server
    22  	s := server.NewSocketServer(sockPath, kvstore.NewInMemoryApplication())
    23  	s.SetLogger(log.TestingLogger().With("module", "abci-server"))
    24  	if err := s.Start(); err != nil {
    25  		t.Fatalf("Error starting socket server: %v", err.Error())
    26  	}
    27  	t.Cleanup(func() {
    28  		if err := s.Stop(); err != nil {
    29  			t.Error(err)
    30  		}
    31  	})
    32  
    33  	// Start client
    34  	cli, err := clientCreator.NewABCIClient()
    35  	if err != nil {
    36  		t.Fatalf("Error creating ABCI client: %v", err.Error())
    37  	}
    38  	cli.SetLogger(log.TestingLogger().With("module", "abci-client"))
    39  	if err := cli.Start(); err != nil {
    40  		t.Fatalf("Error starting ABCI client: %v", err.Error())
    41  	}
    42  
    43  	proxy := NewAppConnMempool(cli, NopMetrics())
    44  	t.Log("Connected")
    45  
    46  	for i := 0; i < 1000; i++ {
    47  		_, err = proxy.CheckTx(context.Background(), &abci.RequestCheckTx{Tx: []byte(fmt.Sprintf("echo-%v", i))})
    48  		if err != nil {
    49  			t.Fatal(err)
    50  		}
    51  	}
    52  	if err := proxy.Flush(context.Background()); err != nil {
    53  		t.Error(err)
    54  	}
    55  }
    56  
    57  func BenchmarkEcho(b *testing.B) {
    58  	b.StopTimer() // Initialize
    59  	sockPath := fmt.Sprintf("unix:///tmp/echo_%v.sock", cmtrand.Str(6))
    60  	clientCreator := NewRemoteClientCreator(sockPath, SOCKET, true)
    61  
    62  	// Start server
    63  	s := server.NewSocketServer(sockPath, kvstore.NewInMemoryApplication())
    64  	s.SetLogger(log.TestingLogger().With("module", "abci-server"))
    65  	if err := s.Start(); err != nil {
    66  		b.Fatalf("Error starting socket server: %v", err.Error())
    67  	}
    68  	b.Cleanup(func() {
    69  		if err := s.Stop(); err != nil {
    70  			b.Error(err)
    71  		}
    72  	})
    73  
    74  	// Start client
    75  	cli, err := clientCreator.NewABCIClient()
    76  	if err != nil {
    77  		b.Fatalf("Error creating ABCI client: %v", err.Error())
    78  	}
    79  	cli.SetLogger(log.TestingLogger().With("module", "abci-client"))
    80  	if err := cli.Start(); err != nil {
    81  		b.Fatalf("Error starting ABCI client: %v", err.Error())
    82  	}
    83  
    84  	proxy := NewAppConnMempool(cli, NopMetrics())
    85  	b.Log("Connected")
    86  	b.StartTimer() // Start benchmarking tests
    87  
    88  	for i := 0; i < b.N; i++ {
    89  		_, err = proxy.CheckTx(context.Background(), &abci.RequestCheckTx{Tx: []byte("hello")})
    90  		if err != nil {
    91  			b.Error(err)
    92  		}
    93  	}
    94  	if err := proxy.Flush(context.Background()); err != nil {
    95  		b.Error(err)
    96  	}
    97  
    98  	b.StopTimer()
    99  }