Leaktest

Goroutine Leak Detector

Github星跟蹤圖

Leaktest Build Status codecov Sourcegraph Documentation

Refactored, tested variant of the goroutine leak detector found in both
net/http tests and the cockroachdb source tree.

Takes a snapshot of running goroutines at the start of a test, and at the end -
compares the two and voila. Ignores runtime/sys goroutines. Doesn't play nice
with t.Parallel() right now, but there are plans to do so.

Installation

Go 1.7+

go get -u github.com/fortytw2/leaktest

Go 1.5/1.6 need to use the tag v1.0.0, as newer versions depend on
context.Context.

Example

These tests fail, because they leak a goroutine

// Default "Check" will poll for 5 seconds to check that all
// goroutines are cleaned up
func TestPool(t *testing.T) {
    defer leaktest.Check(t)()

    go func() {
        for {
            time.Sleep(time.Second)
        }
    }()
}

// Helper function to timeout after X duration
func TestPoolTimeout(t *testing.T) {
    defer leaktest.CheckTimeout(t, time.Second)()

    go func() {
        for {
            time.Sleep(time.Second)
        }
    }()
}

// Use Go 1.7+ context.Context for cancellation
func TestPoolContext(t *testing.T) {
    ctx, cancel := context.WithTimeout(context.Background(), time.Second)
    defer cancel()
    defer leaktest.CheckContext(ctx, t)()

    go func() {
        for {
            time.Sleep(time.Second)
        }
    }()
}

LICENSE

Same BSD-style as Go, see LICENSE

主要指標

概覽
名稱與所有者fortytw2/leaktest
主編程語言Go
編程語言Go (語言數: 1)
平台
許可證BSD 3-Clause "New" or "Revised" License
所有者活动
創建於2016-04-26 15:19:27
推送於2020-10-15 17:02:31
最后一次提交2019-06-06 09:38:08
發布數4
最新版本名稱v1.3.0 (發布於 )
第一版名稱v1.0.0 (發布於 )
用户参与
星數1k
關注者數20
派生數49
提交數49
已啟用問題?
問題數18
打開的問題數3
拉請求數15
打開的拉請求數2
關閉的拉請求數3
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?