gitlab.com/jfprevost/gitlab-runner-notlscheck@v11.11.4+incompatible/log/dump_unix_test.go (about)

     1  // +build darwin dragonfly freebsd linux netbsd openbsd
     2  
     3  package log
     4  
     5  import (
     6  	"os"
     7  	"syscall"
     8  	"testing"
     9  
    10  	"github.com/sirupsen/logrus"
    11  	"github.com/sirupsen/logrus/hooks/test"
    12  	"github.com/stretchr/testify/assert"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func TestStackDumping(t *testing.T) {
    17  	logger, hook := test.NewNullLogger()
    18  	logger.SetFormatter(new(logrus.TextFormatter))
    19  
    20  	stopCh := make(chan bool)
    21  
    22  	dumpedCh, finishedCh := watchForGoroutinesDump(logger, stopCh)
    23  	require.NotNil(t, dumpedCh)
    24  	require.NotNil(t, finishedCh)
    25  
    26  	proc, err := os.FindProcess(os.Getpid())
    27  	require.NoError(t, err)
    28  	proc.Signal(syscall.SIGUSR1)
    29  
    30  	<-dumpedCh
    31  	logrusOutput, err := hook.LastEntry().String()
    32  	require.NoError(t, err)
    33  	assert.Contains(t, logrusOutput, "=== received SIGUSR1 ===")
    34  	assert.Contains(t, logrusOutput, "*** goroutine dump...")
    35  
    36  	close(stopCh)
    37  	<-finishedCh
    38  }