server: go.chromium.org/goma/server/rpc/grpctest Index | Examples | Files

package grpctest

import "go.chromium.org/goma/server/rpc/grpctest"

Package grpctest provides a test server for unit tests that use gRPC.

Code:

package main

import (
    "context"
    "fmt"
    "os"

    "google.golang.org/grpc"

    gomapb "go.chromium.org/goma/server/proto/api"
    pb "go.chromium.org/goma/server/proto/execlog"
    "go.chromium.org/goma/server/rpc/grpctest"
)

// MyServer is fake execlog server.
type MyServer struct {
    Req  *gomapb.SaveLogReq
    Resp *gomapb.SaveLogResp
    Err  error
}

func (s *MyServer) SaveLog(ctx context.Context, req *gomapb.SaveLogReq) (*gomapb.SaveLogResp, error) {
    s.Req = req
    return s.Resp, s.Err
}

func main() {
    srv := grpc.NewServer()
    s := &MyServer{
        Resp: &gomapb.SaveLogResp{},
    }
    pb.RegisterLogServiceServer(srv, s)
    addr, stop, err := grpctest.StartServer(srv)
    if err != nil {
        fmt.Printf("error creating test server: %v\n", err)
        os.Exit(1)
    }
    defer stop()

    conn, err := grpc.Dial(addr, grpc.WithInsecure())
    if err != nil {
        fmt.Printf("error connecting to %s: %v\n", addr, err)
        os.Exit(1)
    }
    defer conn.Close()
    client := pb.NewLogServiceClient(conn)
    ctx := context.Background()
    resp, err := client.SaveLog(ctx, &gomapb.SaveLogReq{})
    if err != nil {
        fmt.Printf("SaveLog()=%v, %v; want nil error\n", resp, err)
        os.Exit(1)
    }
}

Index

Examples

Package Files

grpctest.go

func StartServer Uses

func StartServer(server *grpc.Server) (addr string, stop func(), err error)

StartServer instantiates a gRPC server suitable for unit tests, and returns the server address the client can use to connect and a stop function that must be called if err is nil to stop the server and cleanup resources.

Package grpctest imports 3 packages (graph). Updated 2019-11-15. Refresh now. Tools for package owners.