mirror of
https://github.com/rwinkhart/sys.git
synced 2026-09-02 15:17:31 -04:00
unix: test AF_VSOCK sockets on linux
Follow the implementation of the tests added in CL 354269 for darwin. Change-Id: I00701227dfb26169a356d875ddb3737849d0bba0 Reviewed-on: https://go-review.googlesource.com/c/sys/+/356289 Trust: Tobias Klauser <tobias.klauser@gmail.com> Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Matt Layher <mdlayher@gmail.com>
This commit is contained in:
committed by
Tobias Klauser
parent
97ac67df71
commit
69063c4bb7
@@ -138,7 +138,7 @@ func TestSockaddrCtl_sockaddr(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSockaddVM_sockaddr(t *testing.T) {
|
func TestSockaddrVM_sockaddr(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
sa *SockaddrVM
|
sa *SockaddrVM
|
||||||
@@ -154,7 +154,7 @@ func TestSockaddVM_sockaddr(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "with CID and Port",
|
name: "with CID and port",
|
||||||
sa: &SockaddrVM{
|
sa: &SockaddrVM{
|
||||||
CID: VMADDR_CID_HOST,
|
CID: VMADDR_CID_HOST,
|
||||||
Port: VMADDR_PORT_ANY,
|
Port: VMADDR_PORT_ANY,
|
||||||
|
|||||||
@@ -253,6 +253,23 @@ func Test_anyToSockaddr(t *testing.T) {
|
|||||||
err: EINVAL,
|
err: EINVAL,
|
||||||
proto: makeProto(^0),
|
proto: makeProto(^0),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "AF_VSOCK emtpy",
|
||||||
|
rsa: sockaddrVMToAny(RawSockaddrVM{}),
|
||||||
|
err: EAFNOSUPPORT,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "AF_VSOCK Cid and Port",
|
||||||
|
rsa: sockaddrVMToAny(RawSockaddrVM{
|
||||||
|
Family: AF_VSOCK,
|
||||||
|
Cid: VMADDR_CID_HOST,
|
||||||
|
Port: VMADDR_PORT_ANY,
|
||||||
|
}),
|
||||||
|
sa: &SockaddrVM{
|
||||||
|
CID: VMADDR_CID_HOST,
|
||||||
|
Port: VMADDR_PORT_ANY,
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "AF_MAX EAFNOSUPPORT",
|
name: "AF_MAX EAFNOSUPPORT",
|
||||||
rsa: &RawSockaddrAny{
|
rsa: &RawSockaddrAny{
|
||||||
@@ -788,6 +805,58 @@ func TestSockaddrNFCLLCP_sockaddr(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSockaddrVM_sockaddr(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
sa *SockaddrVM
|
||||||
|
raw *RawSockaddrVM
|
||||||
|
err error
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "empty",
|
||||||
|
sa: &SockaddrVM{},
|
||||||
|
raw: &RawSockaddrVM{
|
||||||
|
Family: AF_VSOCK,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "with CID, port and flags",
|
||||||
|
sa: &SockaddrVM{
|
||||||
|
CID: VMADDR_CID_HOST,
|
||||||
|
Port: VMADDR_PORT_ANY,
|
||||||
|
Flags: VMADDR_FLAG_TO_HOST,
|
||||||
|
},
|
||||||
|
raw: &RawSockaddrVM{
|
||||||
|
Family: AF_VSOCK,
|
||||||
|
Port: VMADDR_PORT_ANY,
|
||||||
|
Cid: VMADDR_CID_HOST,
|
||||||
|
Flags: VMADDR_FLAG_TO_HOST,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
out, l, err := tt.sa.sockaddr()
|
||||||
|
if err != tt.err {
|
||||||
|
t.Fatalf("unexpected error: %v, want: %v", err, tt.err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Must be 0 on error or a fixed size otherwise.
|
||||||
|
if (tt.err != nil && l != 0) || (tt.raw != nil && l != SizeofSockaddrVM) {
|
||||||
|
t.Fatalf("unexpected Socklen: %d", l)
|
||||||
|
}
|
||||||
|
|
||||||
|
if out != nil {
|
||||||
|
raw := (*RawSockaddrVM)(out)
|
||||||
|
if !reflect.DeepEqual(raw, tt.raw) {
|
||||||
|
t.Fatalf("unexpected RawSockaddrVM:\n got: %#v\nwant: %#v", raw, tt.raw)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// These helpers explicitly copy the contents of in into out to produce
|
// These helpers explicitly copy the contents of in into out to produce
|
||||||
// the correct sockaddr structure, without relying on unsafe casting to
|
// the correct sockaddr structure, without relying on unsafe casting to
|
||||||
// a type of a larger size.
|
// a type of a larger size.
|
||||||
@@ -862,3 +931,12 @@ func sockaddrNFCLLCPToAny(in RawSockaddrNFCLLCP) *RawSockaddrAny {
|
|||||||
)
|
)
|
||||||
return &out
|
return &out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func sockaddrVMToAny(in RawSockaddrVM) *RawSockaddrAny {
|
||||||
|
var out RawSockaddrAny
|
||||||
|
copy(
|
||||||
|
(*(*[SizeofSockaddrAny]byte)(unsafe.Pointer(&out)))[:],
|
||||||
|
(*(*[SizeofSockaddrVM]byte)(unsafe.Pointer(&in)))[:],
|
||||||
|
)
|
||||||
|
return &out
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user