goroutines_test.go 809 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. //go:build linux || darwin
  2. package proc
  3. import (
  4. "errors"
  5. "os"
  6. "strings"
  7. "testing"
  8. "github.com/stretchr/testify/assert"
  9. "github.com/wuntsong-org/go-zero-plus/core/logx/logtest"
  10. )
  11. func TestDumpGoroutines(t *testing.T) {
  12. t.Run("real file", func(t *testing.T) {
  13. buf := logtest.NewCollector(t)
  14. dumpGoroutines(fileCreator{})
  15. assert.True(t, strings.Contains(buf.String(), ".dump"))
  16. })
  17. t.Run("fake file", func(t *testing.T) {
  18. const msg = "any message"
  19. buf := logtest.NewCollector(t)
  20. err := errors.New(msg)
  21. dumpGoroutines(fakeCreator{
  22. file: &os.File{},
  23. err: err,
  24. })
  25. assert.True(t, strings.Contains(buf.String(), msg))
  26. })
  27. }
  28. type fakeCreator struct {
  29. file *os.File
  30. err error
  31. }
  32. func (fc fakeCreator) Create(name string) (file *os.File, err error) {
  33. return fc.file, fc.err
  34. }