iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Go gRPC 服务器使集成测试失败
  • 867
分享到

Go gRPC 服务器使集成测试失败

2024-04-04 23:04:33 867人浏览 安东尼
摘要

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Go grpc 服务器使集成测试失败》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Go grpc 服务器使集成测试失败》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我最近又开始玩 go,目前的任务是实现一个服务(将在 k8s 上运行),该服务应充当 grpc 服务器。

根据要求,目前,为了满足 k8s 上的 readinessprobe,我需要为我的服务实现一个运行状况检查端点,并且应该对此进行测试:我所做的是:

func main() {
    server := starthttpserver()
    defer server.close()

    c := make(chan os.signal, 1)
    signal.notify(c, os.interrupt, syscall.sigterm, syscall.sigint)

    <-c
    log.println("stopped")
}

func startHttpserver() *http.server {
    http.handlefunc("/", func(w http.responsewriter, r *http.request) {
        w.writeheader(http.statusok)
    })

    server := &http.server{
        addr: net.joinhostport("", strconv.itoa(livelinessport)),
    }

    go server.listenandserve()

    return server
}

我按照这篇文章以这种方式进行了测试:

func testmain(m *testing.m) {
    flag.parse()

    wg := setup()

    result := m.run()

    shutdown(wg)

    os.exit(result)
}

func shutdown(wg *sync.waitgroup) {
    syscall.kill(syscall.getpid(), syscall.sigint)
    wg.wait()
}

func setup() *sync.waitgroup{
    os.setenv("app_env", envtest)

    wg := &sync.waitgroup{}
    startmainprocess(wg)
    return wg
}

func startmainprocess(wg *sync.waitgroup) {
    go func() {
        wg.add(1)
        defer wg.done()
        main()
    }()
}

func testk8shealth(t *testing.t) {
    res, err := http.get("http://:8080/")
    if err != nil {
        t.errorf("unexpected api error: %s", err)
        return
    }

    defer res.body.close()

    if res.statuscode != http.statusok {
        t.errorf("unexpected status code: %d", res.statuscode)
        return
    }
}

到目前为止一切顺利:

$ go test
pass
2018/08/13 09:23:16 stopped
ok      GitHub.com/...        0.015s

问题是当我尝试在主应用程序中添加 grpc 服务器时,遵循 gprc go 示例。我已将其添加到我的主文件中

3994464714​​35

但是现在当我运行测试时,在实际测试运行后,发送中断信号时,它失败了。

$  go test 
pass
signal: interrupt
fail    github.com/...        0.016s

我做了一些测试,这并不取决于实际测试(因为它通过了一个测试函数,即 return,并且它在使用 goland 运行测试套件时工作:

goroot=/usr/local/go #gosetup
gopath=/users/marco/documents/projects/go #gosetup
/usr/local/go/bin/go test -c -i -o /private/var/folders/jh/znhv9f090yb7y390dckb23s00000gn/t/[...] #gosetup
/usr/local/go/bin/go tool test2JSON -t /private/var/folders/jh/znhv9f090yb7y390dckb23s00000gn/t/[...] -test.v -test.run
^testk8shealth$ #gosetup
=== run   testk8shealth
--- pass: testk8shealth (0.00s)
pass

process finished with exit code 1

--- 编辑

我发现问题出在监听器周围。主函数中有:

func main() {
    net.listen("tcp", fmt.sprintf(":%d", serverport))
    c := make(chan os.signal, 1)
    signal.notify(c, os.interrupt, syscall.sigterm, syscall.sigint)

    <-c
    log.println("stopped")
}

并且仅包含返回值的测试(与前一个测试具有相同的设置)将导致测试失败:

$ go test -v
=== RUN   Test2
--- PASS: Test2 (0.00s)
PASS
signal: interrupt
FAIL    github.com/[...]        0.014s


解决方案


grpcServer.Serve(lis) 是阻塞调用。因此,就像您对 HTTP 服务器 go server.ListenAndServe() 所做的那样,您需要在 goroutine 中运行它。您能否尝试一下 go grpcServer.Serve(lis) 是否能够通过测试?

我不确定您的新编辑是否表明问题与侦听器有关。您可以检查 net.Listen("tcp", fmt.Sprintf(":%d", serverPort)) 是否返回或阻塞。

好了,本文到此结束,带大家了解了《Go gRPC 服务器使集成测试失败》,希望本文对你有所帮助!关注编程网公众号,给大家分享更多golang知识!

您可能感兴趣的文档:

--结束END--

本文标题: Go gRPC 服务器使集成测试失败

本文链接: https://www.lsjlt.com/news/596350.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go gRPC 服务器使集成测试失败
    偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《Go gRPC 服务器使集成测试失败》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一...
    99+
    2024-04-04
  • 使用grpcui测试ASP.NETcore的gRPC服务
    grpcui类似Swagger UI,可以用来测试gRPC服务,使用起来特别简单。 其原理是通过自动发现gRPC服务协议(当然前提是gRPC服务暴露了Protobuf协议),然后启动...
    99+
    2024-04-02
  • 服务器使用UDP通讯127.0.0.1测试成功连接服务器却通讯失败
    首先看看本人情况 解释一下: 1:左边窗口是模拟服务程序,功能是收到消息后把消息打印出来,并把收到的消息再发回给发送消息的主机 2:右边窗口是模拟客户程序,功能是将输入的消息发送给服务程序的主机,并将接收的消息打印出来 3:程序均采用的是...
    99+
    2023-08-22
    服务器 udp 运维
  • go test ./package 转储成功测试的标准输出,而不仅仅是失败的测试
    积累知识,胜过积蓄金银!毕竟在Golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《go test ./package...
    99+
    2024-04-04
  • 亚马逊测试服务器连接失败怎么回事儿
    1.检查硬件故障:检查连接到亚马逊测试服务器的硬件设备是否正常工作,例如网卡、调制解调器、交换机等。 2.检查网络故障:检查网络连接是否正常,确保您的设备与网络连接可靠,如果网络连接不稳定,可能会导致连接失败。 3.检查软件配置:检查您的...
    99+
    2023-10-27
    亚马逊 回事儿 服务器
  • 使用持续集成工具进行 Go 函数单元测试
    在 go 中使用持续集成 (ci) 工具进行函数单元测试可以实现自动化的单元测试,从而提高开发速度和代码可靠性。首先需要设置 jenkins 等 ci 环境,创建新的作业并添加构建步骤来...
    99+
    2024-05-03
    单元测试 关键词: go
  • DNS服务器检测失败怎么解决
    如果DNS服务器检测失败,可以尝试以下解决方法:1. 检查网络连接:确保计算机与网络连接正常。可以尝试重新启动计算机、调整网络连接或...
    99+
    2023-08-14
    DNS服务器 服务器
  • 禾匠商城v4队列服务测试失败问题解决方法
    前提: PHP72、数据库5.6 phpMyAdmin 工具选择PHP72版本 宝塔->安全:开放3306和6379端口 默认的宝塔市场的镜像是:操作系统CentOS Linux 7.5左右,最好别差太远 安装配置环境   1、在宝塔 软件...
    99+
    2023-09-05
    php 开发语言
  • 云服务器连接失败什么原因造成的
    无法连接到云服务器 当用户无法连接到云服务器时,他们可以尝试通过以下方式来解决: 检查网络连接,确保服务器与互联网连接通畅。 确认服务器是否已经关闭,或者网络服务是否正在运行。 检查服务器配置是否正确,例如服务器的IP地址、端口号等...
    99+
    2023-10-28
    原因 服务器
  • 如何使用go语言编写http服务器并与git集成?
    Go语言是一种现代化的编程语言,它的出现为Web应用程序的开发带来了很多便利。在本文中,我们将介绍如何使用Go语言编写一个HTTP服务器,并将其与Git集成起来。 Go语言HTTP服务器的基础 在开始编写HTTP服务器之前,我们需要了...
    99+
    2023-08-25
    http git shell
  • 连接云服务器失败是什么原因造成的
    如果您的云服务器连接到云平台时发生了失败,通常会出现以下几种原因: 网络连接问题:云平台通常采用多跳连接模式,连接服务器的计算机需要连接到另一个云平台上才能完成计算任务。这个问题可能是由于网络连接问题导致的。 数据库连接问题:如果您的应...
    99+
    2023-10-27
    服务器
  • 从零搭建脚手架之集成Spring Retry实现失败重试和熔断器模式(实战教程)
    目录背景实战添加依赖启用重试@Recover@CircuitBreaker高级实战方式一 @CircuitBreaker + RetryTemplate方式二 @CircuitBre...
    99+
    2024-04-02
  • 连接云服务器失败是什么原因造成的呢
    网络连接问题:当你尝试连接云服务器时,网络连接可能会出现问题,例如网络延迟、丢包、网络堵塞等。此外,如果你使用的是HTTP/HTTPS协议,那么连接失败可能会导致服务器无法正确解析你的请求。 服务器配置问题:云服务器的配置可能会影响连接成...
    99+
    2023-10-27
    服务器
  • 服务器性能测试工具怎么使用
    服务器性能测试工具可以帮助测试服务器的性能表现,下面是使用步骤:1. 选择一款适合您的服务器的性能测试工具,例如Apache JMe...
    99+
    2023-06-04
    服务器性能测试工具 服务器
  • 电脑连接云服务器失败是什么原因造成的
    如果您的电脑连接云服务器失败,以下是一些可能的原因: 云服务器的连接:在连接云服务器时,可能会因为网络问题或其他网络因素导致连接故障。您可以重新启动云服务器,或者与其他人协助连接,以确保云服务器能够成功连接。 网络连接中断:如果您的设备...
    99+
    2023-10-26
    服务器 电脑
  • 电脑连接云服务器失败是什么原因造成的呢
    如果您的电脑连接云服务器失败,可以尝试以下几种可能的原因: 重新开启云服务器:如果您的Windows操作系统与云服务器版本不同,则您需要尝试重新开启云服务器。 重置密码:如果您的云服务器密码忘记或者与云服务器绑定的密码与您之前使用的云服...
    99+
    2023-10-26
    服务器 电脑
  • 亚马逊刷新服务器设置失败什么原因造成的
    亚马逊刷新服务器设置失败可能有多种原因,以下是一些可能的原因: 服务器配置错误:如果服务器配置不正确,可能会导致刷新服务器设置失败。例如,如果服务器没有足够的内存或处理器速度,可能会导致刷新失败。 网络问题:如果网络连接不稳定或存在其他...
    99+
    2023-10-27
    亚马逊 原因 服务器
  • 阿里云服务器密钥生成失败原因与解决方案
    在使用阿里云服务器时,可能会遇到密钥生成失败的问题。本文将深入探讨这个问题的原因以及可能的解决方案。 阿里云服务器是阿里云推出的一种高性能计算资源,具有高可用性、安全性和灵活性等特点。在使用阿里云服务器时,密钥是非常重要的一部分,它主要用于...
    99+
    2024-01-25
    密钥 阿里 解决方案
  • 使用幻兽帕鲁服务器存档失败怎么解决
    要解决幻兽帕鲁服务器存档失败的问题,您可以尝试以下几种方法: 检查服务器连接:确保您的网络连接稳定,并确认在服务器存档失败时没有...
    99+
    2024-04-09
    服务器 幻兽帕鲁服务器
  • 电脑连接云服务器失败是什么原因造成的怎么解决
    检查是否有无线网连接:如果云服务器是通过无线网连接的,可以检查是否有无线连接。可以使用网线连接电脑并打开无线连接的路由器端口。 检查是否有云服务器服务器的IP地址不正确:检查云服务器服务器的IP地址是否正确,如果不正确,可能会导致连接失败...
    99+
    2023-10-26
    服务器 电脑
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作