diff --git a/Makefile b/Makefile index 2768e279..30731806 100644 --- a/Makefile +++ b/Makefile @@ -58,6 +58,12 @@ GOLANGCI_LINT_VERSION = v1.52.2 $(GOLANGCI_LINT): | $(BINDIR) ; $(info Installing golangci-lint...) $Q GOBIN=$(BINDIR) $(GO) install github.com/golangci/golangci-lint/cmd/golangci-lint@$(GOLANGCI_LINT_VERSION) +# Tools +MOCKERY = $(BINDIR)/mockery +MOCKERY_VERSION = v2.50.2 +$(MOCKERY): | $(BINDIR) ; $(info Installing mockery...) + $Q GOBIN=$(BINDIR) $(GO) install github.com/vektra/mockery/v2@$(MOCKERY_VERSION) + # Tests TEST_TARGETS := test-default test-verbose test-race .PHONY: $(TEST_TARGETS) test @@ -76,6 +82,12 @@ test-coverage: | $(COVERAGE_DIR) ; $(info Running coverage tests...) @ ## Run c lint: $(GOLANGCI_LINT) ; $(info Running golangci-lint linter...) @ ## Run golangci-lint linter $Q $(GOLANGCI_LINT) run +.PHONY: mock-generate +mock-generate: $(MOCKERY) ; $(info Running mockery...) @ ## Run golangci-lint linter + $Q $(MOCKERY) --recursive=true --name=NetlinkManager --output=./pkg/utils/mocks/ --filename=netlink_manager_mock.go --exported --dir pkg/utils + $Q $(MOCKERY) --recursive=true --name=pciUtils --output=./pkg/sriov/mocks/ --filename=pci_utils_mock.go --exported --dir pkg/sriov + + .PHONY: fmt fmt: ; $(info Running go fmt...) @ ## Run go fmt on all source files @ $(GO) fmt ./... diff --git a/pkg/sriov/mocks/pci_utils_mock.go b/pkg/sriov/mocks/pci_utils_mock.go index b98f7828..1f310aca 100644 --- a/pkg/sriov/mocks/pci_utils_mock.go +++ b/pkg/sriov/mocks/pci_utils_mock.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.34.1. DO NOT EDIT. +// Code generated by mockery v2.50.2. DO NOT EDIT. package mocks @@ -13,6 +13,10 @@ type PciUtils struct { func (_m *PciUtils) EnableArpAndNdiscNotify(ifName string) error { ret := _m.Called(ifName) + if len(ret) == 0 { + panic("no return value specified for EnableArpAndNdiscNotify") + } + var r0 error if rf, ok := ret.Get(0).(func(string) error); ok { r0 = rf(ifName) @@ -27,6 +31,10 @@ func (_m *PciUtils) EnableArpAndNdiscNotify(ifName string) error { func (_m *PciUtils) EnableOptimisticDad(ifName string) error { ret := _m.Called(ifName) + if len(ret) == 0 { + panic("no return value specified for EnableOptimisticDad") + } + var r0 error if rf, ok := ret.Get(0).(func(string) error); ok { r0 = rf(ifName) @@ -41,6 +49,10 @@ func (_m *PciUtils) EnableOptimisticDad(ifName string) error { func (_m *PciUtils) GetPciAddress(ifName string, vf int) (string, error) { ret := _m.Called(ifName, vf) + if len(ret) == 0 { + panic("no return value specified for GetPciAddress") + } + var r0 string var r1 error if rf, ok := ret.Get(0).(func(string, int) (string, error)); ok { @@ -65,6 +77,10 @@ func (_m *PciUtils) GetPciAddress(ifName string, vf int) (string, error) { func (_m *PciUtils) GetSriovNumVfs(ifName string) (int, error) { ret := _m.Called(ifName) + if len(ret) == 0 { + panic("no return value specified for GetSriovNumVfs") + } + var r0 int var r1 error if rf, ok := ret.Get(0).(func(string) (int, error)); ok { @@ -89,6 +105,10 @@ func (_m *PciUtils) GetSriovNumVfs(ifName string) (int, error) { func (_m *PciUtils) GetVFLinkNamesFromVFID(pfName string, vfID int) ([]string, error) { ret := _m.Called(pfName, vfID) + if len(ret) == 0 { + panic("no return value specified for GetVFLinkNamesFromVFID") + } + var r0 []string var r1 error if rf, ok := ret.Get(0).(func(string, int) ([]string, error)); ok { diff --git a/pkg/utils/mocks/netlink_manager_mock.go b/pkg/utils/mocks/netlink_manager_mock.go index f77682ef..6f30fac6 100644 --- a/pkg/utils/mocks/netlink_manager_mock.go +++ b/pkg/utils/mocks/netlink_manager_mock.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.34.1. DO NOT EDIT. +// Code generated by mockery v2.50.2. DO NOT EDIT. package mocks @@ -19,6 +19,10 @@ type NetlinkManager struct { func (_m *NetlinkManager) LinkByName(_a0 string) (netlink.Link, error) { ret := _m.Called(_a0) + if len(ret) == 0 { + panic("no return value specified for LinkByName") + } + var r0 netlink.Link var r1 error if rf, ok := ret.Get(0).(func(string) (netlink.Link, error)); ok { @@ -45,6 +49,10 @@ func (_m *NetlinkManager) LinkByName(_a0 string) (netlink.Link, error) { func (_m *NetlinkManager) LinkDelAltName(_a0 netlink.Link, _a1 string) error { ret := _m.Called(_a0, _a1) + if len(ret) == 0 { + panic("no return value specified for LinkDelAltName") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link, string) error); ok { r0 = rf(_a0, _a1) @@ -59,6 +67,10 @@ func (_m *NetlinkManager) LinkDelAltName(_a0 netlink.Link, _a1 string) error { func (_m *NetlinkManager) LinkSetDown(_a0 netlink.Link) error { ret := _m.Called(_a0) + if len(ret) == 0 { + panic("no return value specified for LinkSetDown") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link) error); ok { r0 = rf(_a0) @@ -73,6 +85,10 @@ func (_m *NetlinkManager) LinkSetDown(_a0 netlink.Link) error { func (_m *NetlinkManager) LinkSetHardwareAddr(_a0 netlink.Link, _a1 net.HardwareAddr) error { ret := _m.Called(_a0, _a1) + if len(ret) == 0 { + panic("no return value specified for LinkSetHardwareAddr") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link, net.HardwareAddr) error); ok { r0 = rf(_a0, _a1) @@ -87,6 +103,10 @@ func (_m *NetlinkManager) LinkSetHardwareAddr(_a0 netlink.Link, _a1 net.Hardware func (_m *NetlinkManager) LinkSetName(_a0 netlink.Link, _a1 string) error { ret := _m.Called(_a0, _a1) + if len(ret) == 0 { + panic("no return value specified for LinkSetName") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link, string) error); ok { r0 = rf(_a0, _a1) @@ -101,6 +121,10 @@ func (_m *NetlinkManager) LinkSetName(_a0 netlink.Link, _a1 string) error { func (_m *NetlinkManager) LinkSetNsFd(_a0 netlink.Link, _a1 int) error { ret := _m.Called(_a0, _a1) + if len(ret) == 0 { + panic("no return value specified for LinkSetNsFd") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link, int) error); ok { r0 = rf(_a0, _a1) @@ -115,6 +139,10 @@ func (_m *NetlinkManager) LinkSetNsFd(_a0 netlink.Link, _a1 int) error { func (_m *NetlinkManager) LinkSetUp(_a0 netlink.Link) error { ret := _m.Called(_a0) + if len(ret) == 0 { + panic("no return value specified for LinkSetUp") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link) error); ok { r0 = rf(_a0) @@ -129,6 +157,10 @@ func (_m *NetlinkManager) LinkSetUp(_a0 netlink.Link) error { func (_m *NetlinkManager) LinkSetVfHardwareAddr(_a0 netlink.Link, _a1 int, _a2 net.HardwareAddr) error { ret := _m.Called(_a0, _a1, _a2) + if len(ret) == 0 { + panic("no return value specified for LinkSetVfHardwareAddr") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link, int, net.HardwareAddr) error); ok { r0 = rf(_a0, _a1, _a2) @@ -143,6 +175,10 @@ func (_m *NetlinkManager) LinkSetVfHardwareAddr(_a0 netlink.Link, _a1 int, _a2 n func (_m *NetlinkManager) LinkSetVfRate(_a0 netlink.Link, _a1 int, _a2 int, _a3 int) error { ret := _m.Called(_a0, _a1, _a2, _a3) + if len(ret) == 0 { + panic("no return value specified for LinkSetVfRate") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link, int, int, int) error); ok { r0 = rf(_a0, _a1, _a2, _a3) @@ -157,6 +193,10 @@ func (_m *NetlinkManager) LinkSetVfRate(_a0 netlink.Link, _a1 int, _a2 int, _a3 func (_m *NetlinkManager) LinkSetVfSpoofchk(_a0 netlink.Link, _a1 int, _a2 bool) error { ret := _m.Called(_a0, _a1, _a2) + if len(ret) == 0 { + panic("no return value specified for LinkSetVfSpoofchk") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link, int, bool) error); ok { r0 = rf(_a0, _a1, _a2) @@ -171,6 +211,10 @@ func (_m *NetlinkManager) LinkSetVfSpoofchk(_a0 netlink.Link, _a1 int, _a2 bool) func (_m *NetlinkManager) LinkSetVfState(_a0 netlink.Link, _a1 int, _a2 uint32) error { ret := _m.Called(_a0, _a1, _a2) + if len(ret) == 0 { + panic("no return value specified for LinkSetVfState") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link, int, uint32) error); ok { r0 = rf(_a0, _a1, _a2) @@ -185,6 +229,10 @@ func (_m *NetlinkManager) LinkSetVfState(_a0 netlink.Link, _a1 int, _a2 uint32) func (_m *NetlinkManager) LinkSetVfTrust(_a0 netlink.Link, _a1 int, _a2 bool) error { ret := _m.Called(_a0, _a1, _a2) + if len(ret) == 0 { + panic("no return value specified for LinkSetVfTrust") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link, int, bool) error); ok { r0 = rf(_a0, _a1, _a2) @@ -199,6 +247,10 @@ func (_m *NetlinkManager) LinkSetVfTrust(_a0 netlink.Link, _a1 int, _a2 bool) er func (_m *NetlinkManager) LinkSetVfVlanQosProto(_a0 netlink.Link, _a1 int, _a2 int, _a3 int, _a4 int) error { ret := _m.Called(_a0, _a1, _a2, _a3, _a4) + if len(ret) == 0 { + panic("no return value specified for LinkSetVfVlanQosProto") + } + var r0 error if rf, ok := ret.Get(0).(func(netlink.Link, int, int, int, int) error); ok { r0 = rf(_a0, _a1, _a2, _a3, _a4) diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index 3a64a422..2d51a79f 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -199,11 +199,14 @@ func GetVFLinkName(pciAddr string) (string, error) { return "", fmt.Errorf("VF device %s sysfs path (%s) has no entries", pciAddr, vfDir) } - names = make([]string, 0) - for _, f := range fInfos { - names = append(names, f.Name()) + names = make([]string, len(fInfos)) + for idx, f := range fInfos { + names[idx] = f.Name() } + if len(names) < 1 { + return "", fmt.Errorf("VF device %s has no entries", pciAddr) + } return names[0], nil }