mirror of https://github.com/subgraph/fw-daemon
parent
6cdb400d32
commit
e8f5001483
@ -0,0 +1,78 @@
|
|||||||
|
package procsnitch
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
"os"
|
||||||
|
"sync"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
type TestListener struct {
|
||||||
|
network string
|
||||||
|
address string
|
||||||
|
waitGroup *sync.WaitGroup
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewTestListener(network, address string, wg *sync.WaitGroup) *TestListener {
|
||||||
|
l := TestListener{
|
||||||
|
network: network,
|
||||||
|
address: address,
|
||||||
|
waitGroup: wg,
|
||||||
|
}
|
||||||
|
return &l
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *TestListener) AcceptLoop() {
|
||||||
|
l.waitGroup.Add(1)
|
||||||
|
listener, err := net.Listen(l.network, l.address)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer listener.Close()
|
||||||
|
|
||||||
|
l.waitGroup.Done()
|
||||||
|
|
||||||
|
for {
|
||||||
|
conn, err := listener.Accept()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
go l.SessionWorker(conn)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *TestListener) SessionWorker(conn net.Conn) {
|
||||||
|
for {
|
||||||
|
time.Sleep(time.Second * 60)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLookupUNIXSocketProcess(t *testing.T) {
|
||||||
|
// listen for a connection
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
network := "unix"
|
||||||
|
address := "./testing_socket"
|
||||||
|
l := NewTestListener(network, address, &wg)
|
||||||
|
go l.AcceptLoop()
|
||||||
|
wg.Wait()
|
||||||
|
|
||||||
|
// XXX fix me
|
||||||
|
time.Sleep(time.Second * 1)
|
||||||
|
|
||||||
|
// dial a connection
|
||||||
|
conn, err := net.Dial(network, address)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer os.Remove(address)
|
||||||
|
conn.Write([]byte("hello"))
|
||||||
|
procInfo := LookupUNIXSocketProcess(address)
|
||||||
|
if procInfo == nil {
|
||||||
|
t.Error("failured to acquire proc info for unix domain socket")
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
fmt.Println("Acquired proc info for UNIX domain socket!", procInfo)
|
||||||
|
}
|
Loading…
Reference in new issue