github.com/k8snetworkplumbingwg/sriov-network-operator@v1.2.1-0.20240408194816-2d2e5a45d453/test/util/network/network_test.go (about) 1 package network 2 3 import ( 4 "testing" 5 6 netattdefv1 "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io/v1" 7 "github.com/stretchr/testify/assert" 8 9 k8sv1 "k8s.io/api/core/v1" 10 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 11 ) 12 13 func TestGetSriovNicIPs(t *testing.T) { 14 networkStatus := `[{ 15 "name": "network1", 16 "interface": "eth0", 17 "ips": [ 18 "10.132.2.200" 19 ], 20 "mac": "0a:58:0a:84:02:c8", 21 "default": true, 22 "dns": {} 23 },{ 24 "name": "sriov-conformance-testing/test-multi-networkpolicy-sriov-network", 25 "interface": "net1", 26 "ips": [ 27 "2.2.2.49" 28 ], 29 "mac": "96:a2:09:fb:4d:c3", 30 "dns": {}, 31 "device-info": { 32 "type": "pci", 33 "version": "1.0.0", 34 "pci": { 35 "pci-address": "0000:19:00.4" 36 } 37 } 38 }]` 39 40 p := &k8sv1.Pod{ 41 ObjectMeta: metav1.ObjectMeta{ 42 Annotations: map[string]string{ 43 netattdefv1.NetworkStatusAnnot: networkStatus, 44 }, 45 }, 46 } 47 48 ips, err := GetSriovNicIPs(p, "eth0") 49 assert.NoError(t, err) 50 assert.Contains(t, ips, "10.132.2.200") 51 52 ips, err = GetSriovNicIPs(p, "net1") 53 assert.NoError(t, err) 54 assert.Contains(t, ips, "2.2.2.49") 55 56 _, err = GetSriovNicIPs(p, "eth999") 57 assert.Error(t, err) 58 assert.Contains(t, err.Error(), "interface [eth999] not found") 59 } 60 61 func TestGetSriovNicIPsErrors(t *testing.T) { 62 p := &k8sv1.Pod{} 63 _, err := GetSriovNicIPs(p, "eth0") 64 assert.Error(t, err) 65 assert.Contains(t, err.Error(), "has no annotation `k8s.v1.cni.cncf.io/network-status`") 66 67 p = &k8sv1.Pod{ 68 ObjectMeta: metav1.ObjectMeta{ 69 Annotations: map[string]string{ 70 "k8s.v1.cni.cncf.io/network-status": "xxx", 71 }, 72 }, 73 } 74 _, err = GetSriovNicIPs(p, "eth0") 75 assert.Error(t, err) 76 assert.Contains(t, err.Error(), "invalid character") 77 }