pkg.re/essentialkaos/ek.v11@v12.41.0+incompatible/pid/pid_linux_test.go (about)

     1  //go:build linux || freebsd
     2  // +build linux freebsd
     3  
     4  package pid
     5  
     6  // ////////////////////////////////////////////////////////////////////////////////// //
     7  //                                                                                    //
     8  //                         Copyright (c) 2022 ESSENTIAL KAOS                          //
     9  //      Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>     //
    10  //                                                                                    //
    11  // ////////////////////////////////////////////////////////////////////////////////// //
    12  
    13  import (
    14  	"fmt"
    15  	"io/ioutil"
    16  	"os"
    17  	"time"
    18  
    19  	. "pkg.re/essentialkaos/check.v1"
    20  )
    21  
    22  // ////////////////////////////////////////////////////////////////////////////////// //
    23  
    24  func (s *PidSuite) TestIsWorks(c *C) {
    25  	Dir = s.Dir
    26  
    27  	err := Create("test")
    28  
    29  	c.Assert(err, IsNil)
    30  	c.Assert(IsWorks("test"), Equals, true)
    31  
    32  	Remove("test")
    33  
    34  	c.Assert(IsWorks("test"), Equals, false)
    35  
    36  	// Write fake pid to pid file
    37  	ioutil.WriteFile(s.Dir+"/test.pid", []byte("69999\n"), 0644)
    38  
    39  	c.Assert(IsWorks("test"), Equals, false)
    40  
    41  	procfsDir = c.MkDir()
    42  	err = os.Mkdir(procfsDir+"/69999", 0755)
    43  
    44  	if err != nil {
    45  		c.Fatal(fmt.Sprintf("Can't create directory %s", procfsDir+"/69999"))
    46  	}
    47  
    48  	time.Sleep(2 * time.Second)
    49  
    50  	err = os.Mkdir(procfsDir+"/1", 0755)
    51  
    52  	if err != nil {
    53  		c.Fatal(fmt.Sprintf("Can't create directory %s", procfsDir+"/1"))
    54  	}
    55  
    56  	c.Assert(IsWorks("test"), Equals, false)
    57  }
    58  
    59  func (s *PidSuite) TestIsProcessWorks(c *C) {
    60  	c.Assert(IsProcessWorks(os.Getpid()), Equals, true)
    61  	c.Assert(IsProcessWorks(999999), Equals, false)
    62  }