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 }