package fd import ( "net" "os" "sync" "testing") var SockFilename = "/tmp/sendfd.sock" func getFD(t *testing.T, w *sync.WaitGroup) { defer w.Done() c, err := net.Dial("unix", SockFilename) if err != nil { t.Fatal(err) } defer c.Close() sendfdConn := c.(*net.UnixConn) var fs []*os.File fs, err = Get(sendfdConn, 1, []string{"a file"}) if err != nil { t.Fatal(err) } f := fs[0] defer f.Close() b := make([]byte, 64) var n int n, err = f.Read(b) if err != nil { t.Fatal(err) } if n < 1 { t.Fatal("failed to read the data") }} func TestPutGet(t *testing.T) { f, err := os.Open("/dev/urandom") if err != nil { t.Fatal(err) } defer f.Close() os.Remove(SockFilename) l, err := net.Listen("unix", SockFilename) if err != nil { t.Fatal(err) } defer l.Close() var w sync.WaitGroup w.Add(1) go getFD(t, &w) var a net.Conn a, err = l.Accept() if err != nil { t.Fatal(err) } defer a.Close() listenConn := a.(*net.UnixConn) if err = Put(listenConn, f); err != nil { t.Fatal(err) } w.Wait()}
package fd
import (
"net"
"os"
"sync"
"testing"
)
var SockFilename = "/tmp/sendfd.sock"
func getFD(t *testing.T, w *sync.WaitGroup) {
defer w.Done()
c, err := net.Dial("unix", SockFilename)
if err != nil {
t.Fatal(err)
}
defer c.Close()
sendfdConn := c.(*net.UnixConn)
var fs []*os.File
fs, err = Get(sendfdConn, 1, []string{"a file"})
if err != nil {
t.Fatal(err)
}
f := fs[0]
defer f.Close()
b := make([]byte, 64)
var n int
n, err = f.Read(b)
if err != nil {
t.Fatal(err)
}
if n < 1 {
t.Fatal("failed to read the data")
}
}
func TestPutGet(t *testing.T) {
f, err := os.Open("/dev/urandom")
if err != nil {
t.Fatal(err)
}
defer f.Close()
os.Remove(SockFilename)
l, err := net.Listen("unix", SockFilename)
if err != nil {
t.Fatal(err)
}
defer l.Close()
var w sync.WaitGroup
w.Add(1)
go getFD(t, &w)
var a net.Conn
a, err = l.Accept()
if err != nil {
t.Fatal(err)
}
defer a.Close()
listenConn := a.(*net.UnixConn)
if err = Put(listenConn, f); err != nil {
t.Fatal(err)
}
w.Wait()
}