mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// +build darwin linux
 | 
						|
 | 
						|
package signal // import "github.com/docker/docker/pkg/signal"
 | 
						|
 | 
						|
import (
 | 
						|
	"os"
 | 
						|
	"syscall"
 | 
						|
	"testing"
 | 
						|
	"time"
 | 
						|
 | 
						|
	"gotest.tools/assert"
 | 
						|
	is "gotest.tools/assert/cmp"
 | 
						|
)
 | 
						|
 | 
						|
func TestCatchAll(t *testing.T) {
 | 
						|
	sigs := make(chan os.Signal, 1)
 | 
						|
	CatchAll(sigs)
 | 
						|
	defer StopCatch(sigs)
 | 
						|
 | 
						|
	listOfSignals := map[string]string{
 | 
						|
		"CONT": syscall.SIGCONT.String(),
 | 
						|
		"HUP":  syscall.SIGHUP.String(),
 | 
						|
		"CHLD": syscall.SIGCHLD.String(),
 | 
						|
		"ILL":  syscall.SIGILL.String(),
 | 
						|
		"FPE":  syscall.SIGFPE.String(),
 | 
						|
		"CLD":  syscall.SIGCLD.String(),
 | 
						|
	}
 | 
						|
 | 
						|
	for sigStr := range listOfSignals {
 | 
						|
		signal, ok := SignalMap[sigStr]
 | 
						|
		if ok {
 | 
						|
			go func() {
 | 
						|
				time.Sleep(1 * time.Millisecond)
 | 
						|
				syscall.Kill(syscall.Getpid(), signal)
 | 
						|
			}()
 | 
						|
 | 
						|
			s := <-sigs
 | 
						|
			assert.Check(t, is.Equal(s.String(), signal.String()))
 | 
						|
		}
 | 
						|
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestStopCatch(t *testing.T) {
 | 
						|
	signal := SignalMap["HUP"]
 | 
						|
	channel := make(chan os.Signal, 1)
 | 
						|
	CatchAll(channel)
 | 
						|
	go func() {
 | 
						|
 | 
						|
		time.Sleep(1 * time.Millisecond)
 | 
						|
		syscall.Kill(syscall.Getpid(), signal)
 | 
						|
	}()
 | 
						|
	signalString := <-channel
 | 
						|
	assert.Check(t, is.Equal(signalString.String(), signal.String()))
 | 
						|
 | 
						|
	StopCatch(channel)
 | 
						|
	_, ok := <-channel
 | 
						|
	assert.Check(t, is.Equal(ok, false))
 | 
						|
}
 |