Co-authored-by: Marko <marko@baricevic.me> Co-authored-by: marbar3778 <marbar3778@yahoo.com>
99 lines
2.4 KiB
Go
99 lines
2.4 KiB
Go
package serverv2_test
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
gogoproto "github.com/cosmos/gogoproto/proto"
|
|
"github.com/spf13/viper"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
coreapp "cosmossdk.io/core/app"
|
|
"cosmossdk.io/core/transaction"
|
|
"cosmossdk.io/log"
|
|
serverv2 "cosmossdk.io/server/v2"
|
|
grpc "cosmossdk.io/server/v2/api/grpc"
|
|
"cosmossdk.io/server/v2/appmanager"
|
|
)
|
|
|
|
type mockInterfaceRegistry struct{}
|
|
|
|
func (*mockInterfaceRegistry) Resolve(typeUrl string) (gogoproto.Message, error) {
|
|
panic("not implemented")
|
|
}
|
|
|
|
func (*mockInterfaceRegistry) ListImplementations(ifaceTypeURL string) []string {
|
|
panic("not implemented")
|
|
}
|
|
func (*mockInterfaceRegistry) ListAllInterfaces() []string { panic("not implemented") }
|
|
|
|
type mockApp[T transaction.Tx] struct {
|
|
serverv2.AppI[T]
|
|
}
|
|
|
|
func (*mockApp[T]) GetGPRCMethodsToMessageMap() map[string]func() gogoproto.Message {
|
|
return map[string]func() gogoproto.Message{}
|
|
}
|
|
|
|
func (*mockApp[T]) GetAppManager() *appmanager.AppManager[T] {
|
|
return nil
|
|
}
|
|
|
|
func (*mockApp[T]) InterfaceRegistry() coreapp.InterfaceRegistry {
|
|
return &mockInterfaceRegistry{}
|
|
}
|
|
|
|
func TestServer(t *testing.T) {
|
|
currentDir, err := os.Getwd()
|
|
require.NoError(t, err)
|
|
configPath := filepath.Join(currentDir, "testdata")
|
|
|
|
v, err := serverv2.ReadConfig(configPath)
|
|
if err != nil {
|
|
v = viper.New()
|
|
}
|
|
|
|
logger := log.NewLogger(os.Stdout)
|
|
grpcServer := grpc.New[transaction.Tx]()
|
|
err = grpcServer.Init(&mockApp[transaction.Tx]{}, v, logger)
|
|
require.NoError(t, err)
|
|
|
|
mockServer := &mockServer{name: "mock-server-1", ch: make(chan string, 100)}
|
|
|
|
server := serverv2.NewServer(
|
|
logger,
|
|
grpcServer,
|
|
mockServer,
|
|
)
|
|
|
|
serverCfgs := server.Configs()
|
|
require.Equal(t, serverCfgs[grpcServer.Name()].(*grpc.Config).Address, grpc.DefaultConfig().Address)
|
|
require.Equal(t, serverCfgs[mockServer.Name()].(*mockServerConfig).MockFieldOne, MockServerDefaultConfig().MockFieldOne)
|
|
|
|
// write config
|
|
err = server.WriteConfig(configPath)
|
|
require.NoError(t, err)
|
|
|
|
v, err = serverv2.ReadConfig(configPath)
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, v.GetString(grpcServer.Name()+".address"), grpc.DefaultConfig().Address)
|
|
|
|
// start empty
|
|
ctx, cancelFn := context.WithCancel(context.TODO())
|
|
go func() {
|
|
// wait 5sec and cancel context
|
|
<-time.After(5 * time.Second)
|
|
cancelFn()
|
|
|
|
err = server.Stop(ctx)
|
|
require.NoError(t, err)
|
|
}()
|
|
|
|
err = server.Start(ctx)
|
|
require.NoError(t, err)
|
|
}
|