登录
首页 >  Golang >  Go问答

如何在golang中使用httptest添加条件来测试http请求

来源:stackoverflow

时间:2024-03-16 14:27:20 405浏览 收藏

在 Golang 中使用 `httptest` 测试 HTTP 请求时,可以通过添加条件来检查 HTTP 状态。这对于验证监控堆栈(如 Prometheus、Thanos 和 Grafana)的可用性很有用。当 Pod 启动并运行时,添加条件以验证 HTTP 状态为 200,否则打印错误。该条件可以扩展到同时检查所有三个监控组件,确保它们处于正常状态。

问题内容

我是 golang 初学者,开始开发后端 rbac 应用程序来管理 kubernetes 集群的访问,我们有一个监控堆栈,位于代理服务器 prometheus 、thanos 和 grafana url 后面。我无法添加条件来使用 httptest 检查 http 状态。如果 pod 已启动并运行,我必须添加条件,否则打印错误。

rq := httptest.NewRequest("GET", "/", nil)
rw := httptest.NewRecorder()
proxy.ServeHTTP(rw, rq)

if rw.Code != 200 && monitoringArgs.selector == "PROMETHEUS" {

    fmt.Printf("Target pods are in error state, please check with 'oc get pods -n %s -l %s'", monitoringArgs.namespace, monitoringArgs.selector)

}

如何为所有三个 prometheus/grafana/thanos 添加条件


正确答案


您也可以在类似逻辑中使用 pod 的重新启动计数

pods, err := clientset.CoreV1().Pods(namespace).List(metav1.ListOptions{
    LabelSelector: "app=myapp",
})

// check status for the pods - to see Probe status
for _, pod := range pods.Items {
    pod.Status.Conditions // use your custom logic here

    for _, container := range pod.Status.ContainerStatuses {
        container.RestartCount // use this number in your logic
    }
}

以上就是《如何在golang中使用httptest添加条件来测试http请求》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>