Back to godoc.org

Package grpctest

v0.0.15
Latest Go to latest

The latest major version is .

Published: Jul 31, 2020 | License: BSD-3-Clause | Module: go.chromium.org/goma/server

Overview

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

Example

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

func StartServer

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.

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier