Back to

Package grpctest

Latest Go to latest

The latest major version is .

Published: Jul 31, 2020 | License: BSD-3-Clause | Module:


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



package main

import (


	gomapb ""
	pb ""

// 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)
	defer stop()

	conn, err := grpc.Dial(addr, grpc.WithInsecure())
	if err != nil {
		fmt.Printf("error connecting to %s: %v\n", addr, err)
	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)



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