mirror of
https://github.com/linka-cloud/grpc.git
synced 2024-11-22 10:56:26 +00:00
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
|
package process_test
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"os"
|
||
|
"testing"
|
||
|
|
||
|
"go.linka.cloud/pm/reexec"
|
||
|
"golang.org/x/sync/errgroup"
|
||
|
"google.golang.org/grpc"
|
||
|
"google.golang.org/grpc/credentials/insecure"
|
||
|
"google.golang.org/grpc/health/grpc_health_v1"
|
||
|
|
||
|
"go.linka.cloud/grpc-toolkit/logger"
|
||
|
"go.linka.cloud/grpc-toolkit/process"
|
||
|
"go.linka.cloud/grpc-toolkit/signals"
|
||
|
)
|
||
|
|
||
|
func TestChild(t *testing.T) {
|
||
|
ctx, cancel := context.WithCancel(context.Background())
|
||
|
defer cancel()
|
||
|
|
||
|
c, err := process.NewChild("test-child")
|
||
|
if err != nil {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
c.Register()
|
||
|
|
||
|
if reexec.Init() {
|
||
|
os.Exit(0)
|
||
|
}
|
||
|
|
||
|
ctx = signals.SetupSignalHandlerWithContext(ctx)
|
||
|
logger.C(ctx).Infof("starting host: %v", os.Args)
|
||
|
g, ctx := errgroup.WithContext(ctx)
|
||
|
g.Go(func() error {
|
||
|
return c.Serve(ctx)
|
||
|
})
|
||
|
g.Go(func() error {
|
||
|
conn, err := c.Dial(ctx, grpc.WithTransportCredentials(insecure.NewCredentials()))
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
res, err := grpc_health_v1.NewHealthClient(conn).Check(ctx, &grpc_health_v1.HealthCheckRequest{})
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
logger.C(ctx).Infof("health check: %v", res)
|
||
|
return c.Close()
|
||
|
})
|
||
|
if err := g.Wait(); err != nil {
|
||
|
t.Error(err)
|
||
|
}
|
||
|
}
|