moby/libnetwork/drvregistry/drvregistry_test.go
Sebastiaan van Stijn 3af2963c74
libnetwork/drvregistry: format code with gofumpt
Formatting the code with https://github.com/mvdan/gofumpt

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2023-06-29 00:31:46 +02:00

147 lines
3.2 KiB
Go

package drvregistry
import (
"runtime"
"sort"
"testing"
"github.com/docker/docker/libnetwork/datastore"
"github.com/docker/docker/libnetwork/driverapi"
"github.com/docker/docker/libnetwork/ipamapi"
builtinIpam "github.com/docker/docker/libnetwork/ipams/builtin"
nullIpam "github.com/docker/docker/libnetwork/ipams/null"
remoteIpam "github.com/docker/docker/libnetwork/ipams/remote"
"gotest.tools/v3/assert"
is "gotest.tools/v3/assert/cmp"
)
const mockDriverName = "mock-driver"
type mockDriver struct {
driverapi.Driver
}
var mockDriverCaps = driverapi.Capability{DataScope: datastore.LocalScope}
var md = mockDriver{}
func mockDriverInit(reg driverapi.DriverCallback, opt map[string]interface{}) error {
return reg.RegisterDriver(mockDriverName, &md, mockDriverCaps)
}
func (m *mockDriver) Type() string {
return mockDriverName
}
func (m *mockDriver) IsBuiltIn() bool {
return true
}
func getNew(t *testing.T) *DrvRegistry {
reg, err := New(nil, nil, nil, nil, nil)
if err != nil {
t.Fatal(err)
}
err = initIPAMDrivers(reg)
if err != nil {
t.Fatal(err)
}
return reg
}
func initIPAMDrivers(r *DrvRegistry) error {
for _, fn := range [](func(ipamapi.Callback, interface{}, interface{}) error){
builtinIpam.Init, //nolint:staticcheck
remoteIpam.Init, //nolint:staticcheck
nullIpam.Init, //nolint:staticcheck
} {
if err := fn(r, nil, nil); err != nil {
return err
}
}
return nil
}
func TestNew(t *testing.T) {
getNew(t)
}
func TestAddDriver(t *testing.T) {
reg := getNew(t)
err := reg.AddDriver(mockDriverName, mockDriverInit, nil)
assert.NilError(t, err)
}
func TestAddDuplicateDriver(t *testing.T) {
reg := getNew(t)
err := reg.AddDriver(mockDriverName, mockDriverInit, nil)
assert.NilError(t, err)
// Try adding the same driver
err = reg.AddDriver(mockDriverName, mockDriverInit, nil)
assert.Check(t, is.ErrorContains(err, ""))
}
func TestIPAMDefaultAddressSpaces(t *testing.T) {
reg := getNew(t)
as1, as2, err := reg.IPAMDefaultAddressSpaces("default")
assert.NilError(t, err)
assert.Check(t, as1 != "")
assert.Check(t, as2 != "")
}
func TestDriver(t *testing.T) {
reg := getNew(t)
err := reg.AddDriver(mockDriverName, mockDriverInit, nil)
assert.NilError(t, err)
d, cap := reg.Driver(mockDriverName)
assert.Check(t, d != nil)
assert.Check(t, cap != nil)
}
func TestIPAM(t *testing.T) {
reg := getNew(t)
i, cap := reg.IPAM("default")
assert.Check(t, i != nil)
assert.Check(t, cap != nil)
}
func TestWalkIPAMs(t *testing.T) {
reg := getNew(t)
ipams := make([]string, 0, 2)
reg.WalkIPAMs(func(name string, driver ipamapi.Ipam, cap *ipamapi.Capability) bool {
ipams = append(ipams, name)
return false
})
sort.Strings(ipams)
expected := []string{"default", "null"}
if runtime.GOOS == "windows" {
expected = append(expected, "windows")
}
assert.Check(t, is.DeepEqual(ipams, expected))
}
func TestWalkDrivers(t *testing.T) {
reg := getNew(t)
err := reg.AddDriver(mockDriverName, mockDriverInit, nil)
assert.NilError(t, err)
var driverName string
reg.WalkDrivers(func(name string, driver driverapi.Driver, capability driverapi.Capability) bool {
driverName = name
return false
})
assert.Check(t, is.Equal(driverName, mockDriverName))
}