go_dreamfactory/lego/sys/rpcx/rpcx_test.go
2022-06-17 17:32:25 +08:00

68 lines
1.3 KiB
Go

package rpcx
import (
"context"
"fmt"
"os"
"os/signal"
"syscall"
"testing"
"time"
"go_dreamfactory/lego/sys/log"
)
func Test_Sys(t *testing.T) {
if err := log.OnInit(nil); err != nil {
fmt.Printf("err:%v", err)
return
}
if sys, err := NewSys(
SetServiceTag("dreamfactory"),
SetServiceType("worker"),
SetServiceId("worker_1"),
SetServiceVersion("1.0.0"),
SetServiceAddr("127.0.0.1:9978"),
SetConsulServers([]string{"10.0.0.9:8500"}),
); err != nil {
fmt.Printf("err:%v", err)
return
} else {
if err = sys.RegisterFunction(RpcxTestHandle); err != nil {
fmt.Printf("err:%v", err)
return
}
if err = sys.Start(); err != nil {
fmt.Printf("err:%v", err)
return
}
go func() {
time.Sleep(time.Second * 3)
if err = sys.Call(context.Background(), "worker/worker_1", "Mul", &Args{A: 1, B: 2}, &Reply{}); err != nil {
fmt.Printf("Call:%v \n", err)
return
}
}()
}
sigterm := make(chan os.Signal, 1)
signal.Notify(sigterm, syscall.SIGINT, syscall.SIGTERM)
select {
case <-sigterm:
fmt.Printf("terminating: via signal\n")
}
}
type Args struct {
A int
B int
}
type Reply struct {
Error string
}
func RpcxTestHandle(ctx context.Context, args *Args, reply *Reply) error {
fmt.Printf("A:%d + B:%d = %d", args.A, args.B, args.A+args.B)
return nil
}