mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-06 20:10:11 +02:00
86 lines
1.7 KiB
Go
86 lines
1.7 KiB
Go
//go:build linux
|
|
|
|
package netlink
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func Test_NetLink_LinkList(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
netlink := &NetLink{}
|
|
|
|
initialLinks, err := netlink.LinkList()
|
|
require.NoError(t, err)
|
|
require.NotEmpty(t, initialLinks)
|
|
|
|
loopbackFound := false
|
|
for _, link := range initialLinks {
|
|
if link.Name != "lo" {
|
|
continue
|
|
}
|
|
loopbackFound = true
|
|
assert.Equal(t, DeviceTypeLoopback, link.DeviceType)
|
|
break
|
|
}
|
|
assert.True(t, loopbackFound, "loopback interface not found")
|
|
|
|
testLink := Link{
|
|
Name: makeLinkName(),
|
|
// note if [Link.VirtualType] is set, [Link.DeviceType]
|
|
// is ignored and gets set to [DeviceTypeNone] in LinkAdd.
|
|
DeviceType: DeviceTypeNone,
|
|
VirtualType: "wireguard",
|
|
MTU: 1420,
|
|
}
|
|
index, err := netlink.LinkAdd(testLink)
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() {
|
|
_ = netlink.LinkDel(index)
|
|
})
|
|
|
|
links, err := netlink.LinkList()
|
|
require.NoError(t, err)
|
|
|
|
testLink.Index = index
|
|
for _, link := range links {
|
|
if link.Name != testLink.Name {
|
|
continue
|
|
}
|
|
assert.Equal(t, testLink, link)
|
|
return
|
|
}
|
|
t.Errorf("created link %q not found", testLink.Name)
|
|
}
|
|
|
|
func Test_NetLink_LinkSetMTU(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
netlink := &NetLink{}
|
|
|
|
testLink := Link{
|
|
Name: makeLinkName(),
|
|
DeviceType: DeviceTypeNone,
|
|
VirtualType: "wireguard",
|
|
MTU: 1420,
|
|
}
|
|
index, err := netlink.LinkAdd(testLink)
|
|
require.NoError(t, err)
|
|
t.Cleanup(func() {
|
|
_ = netlink.LinkDel(index)
|
|
})
|
|
testLink.Index = index
|
|
|
|
err = netlink.LinkSetMTU(index, 1500)
|
|
require.NoError(t, err)
|
|
|
|
link, err := netlink.LinkByIndex(index)
|
|
require.NoError(t, err)
|
|
testLink.MTU = 1500
|
|
assert.Equal(t, testLink, link)
|
|
}
|