栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

测试gRPC服务

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

测试gRPC服务

我认为您正在寻找该

google.golang.org/grpc/test/bufconn
软件包,以帮助您避免使用真实端口号启动服务,但仍允许测试流式RPC。

import "google.golang.org/grpc/test/bufconn"const bufSize = 1024 * 1024var lis *bufconn.Listenerfunc init() {    lis = bufconn.Listen(bufSize)    s := grpc.NewServer()    pb.RegisterGreeterServer(s, &server{})    go func() {        if err := s.Serve(lis); err != nil { log.Fatalf("Server exited with error: %v", err)        }    }()}func bufDialer(context.Context, string) (net.Conn, error) {    return lis.Dial()}func TestSayHello(t *testing.T) {    ctx := context.Background()    conn, err := grpc.DialContext(ctx, "bufnet", grpc.WithContextDialer(bufDialer), grpc.WithInsecure())    if err != nil {        t.Fatalf("Failed to dial bufnet: %v", err)    }    defer conn.Close()    client := pb.NewGreeterClient(conn)    resp, err := client.SayHello(ctx, &pb.HelloRequest{"Dr. Seuss"})    if err != nil {        t.Fatalf("SayHello failed: %v", err)    }    log.Printf("Response: %+v", resp)    // Test for output here.}

这种方法的好处是,您仍然可以通过网络连接来获得网络行为,但无需使用操作系统级别的资源(例如端口,这些端口可能会很快清除也可能不会很快清除),而是通过内存中的连接。它允许您以实际使用的方式对其进行测试,并为您提供适当的流式传输行为。

我的头上没有流式传输示例,但是魔术酱却在上面。它为您提供了正常网络连接的所有预期行为。诀窍是使用bufconn包来设置所示的WithDialer选项,以使用公开自己的拨号程序的侦听器。我一直在使用这种技术来测试gRPC服务,并且效果很好。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448063.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号