Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

How to use failpoint in go test

未关闭
#85 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
go
领域
testing-qa

调研方向

使用 main_test.go、main.go、binding__failpoint_binding__.go 以及所示的 go test 命令重现该报告。将观察到的结果与预期结果 4 进行比较,然后检查 failpoint-toolexec 和 GO_FAILPOINTS 的集成,以确定配置在哪里丢失。当提供的测试命令产生 result: 4,或使用限制已被记录时,即表示完成。

由索引模型根据 Issue 内容生成。

描述

question
[root@xxx]# cat main_test.go
package main

import (
        "testing"
"github.com/pingcap/failpoint"
)

func TestGetValue(t *testing.T) {
    failpoint.Enable("main/failpoint-name","return(4)")
        t.Log("result:", GetValue())
}
[root@xxx]# cat main.go
package main

import (
        "fmt"
        "github.com/pingcap/failpoint"
)

func GetValue() int {
        if val, _err_ := failpoint.Eval(_curpkg_("failpoint-name")); _err_ == nil {
                return val.(int)
        }

        return 1
}
func main() {

        fmt.Println("Hello world ", GetValue())
}
[root@xxx]# GOCACHE=/tmp/failpoint-cache  GO_FAILPOINTS="main/failpoint-name=return(4)" CGO_ENABLED=1 GO111MODULE=on go test-v -toolexec /usr/bin/failpoint-toolexec main_test.go main.go binding__failpoint_binding__.go
=== RUN   TestGetValue
    main_test.go:10: result: 1
--- PASS: TestGetValue (0.00s)
PASS
ok      command-line-arguments  0.006s

expect:

[root@xxx]# GOCACHE=/tmp/failpoint-cache  GO_FAILPOINTS="main/failpoint-name=return(4)" CGO_ENABLED=1 GO111MODULE=on go test-v -toolexec /usr/bin/failpoint-toolexec main_test.go main.go binding__failpoint_binding__.go
=== RUN   TestGetValue
    main_test.go:10: result: 4
--- PASS: TestGetValue (0.00s)
PASS
主要语言
Go
星标
896
派生
69
PR 合并指标
30 天内没有已合并 PR

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

pingcap/failpoint 的其他 Issue

查看 pingcap/failpoint 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。