github.com/aquayi/gokit@v0.0.0-20170805152833-88827a405d9b/init_test.go (about) 1 package GoKit 2 3 import ( 4 "os" 5 "runtime" 6 "testing" 7 8 "syscall" 9 10 "io/ioutil" 11 12 "fmt" 13 14 "github.com/stretchr/testify/assert" 15 ) 16 17 func Test_Init(t *testing.T) { 18 filename := "test.pid" 19 20 Init(filename) 21 defer os.Remove(filename) 22 23 // 检查核心数设置 24 expected := runtime.GOMAXPROCS(-1) 25 actual := runtime.NumCPU() 26 assert.Equal(t, expected, actual, "没能把GOMAXPROCS设置成最大核心数") 27 28 // 检查是否正确保存了pid 29 expectedPID := fmt.Sprint(syscall.Getpid()) 30 data, _ := ioutil.ReadFile(filename) 31 actualPID := string(data) 32 assert.Equal(t, expectedPID, actualPID, "保存的PID的实际的不一致。") 33 } 34 35 func Test_WaitingKill(t *testing.T) { 36 ast := assert.New(t) 37 done := WaitingKill() 38 39 go func() { 40 // 获取当前进程的 pid 41 pid := syscall.Getpid() 42 43 // 通过pid号,找到当前进程 44 p, err := os.FindProcess(pid) 45 ast.Nil(err, "CANNOT find %d Procesee", pid) 46 47 // 给当前进程发送关闭信号 syscall.SIGINT 48 // 相当于在命令行,按下了 Ctrl+c 49 err = p.Signal(syscall.SIGINT) 50 ast.Nil(err, "FAIL to send syscall.SIGINT to %d Process", pid) 51 }() 52 53 data, ok := <-done 54 assert.False(t, ok, "从关闭通道done中,接收到了实际传输过来的数据: %v", data) 55 }