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  }