gitee.com/leisunstar/runtime@v0.0.0-20200521203717-5cef3e7b53f9/virtcontainers/veth_endpoint_test.go (about)

     1  // Copyright (c) 2018 Intel Corporation
     2  //
     3  // SPDX-License-Identifier: Apache-2.0
     4  //
     5  
     6  package virtcontainers
     7  
     8  import (
     9  	"net"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  func TestCreateVethNetworkEndpoint(t *testing.T) {
    16  	assert := assert.New(t)
    17  	macAddr := net.HardwareAddr{0x02, 0x00, 0xCA, 0xFE, 0x00, 0x04}
    18  
    19  	expected := &VethEndpoint{
    20  		NetPair: NetworkInterfacePair{
    21  			TapInterface: TapInterface{
    22  				ID:   "uniqueTestID-4",
    23  				Name: "br4_kata",
    24  				TAPIface: NetworkInterface{
    25  					Name: "tap4_kata",
    26  				},
    27  			},
    28  			VirtIface: NetworkInterface{
    29  				Name:     "eth4",
    30  				HardAddr: macAddr.String(),
    31  			},
    32  			NetInterworkingModel: DefaultNetInterworkingModel,
    33  		},
    34  		EndpointType: VethEndpointType,
    35  	}
    36  
    37  	result, err := createVethNetworkEndpoint(4, "", DefaultNetInterworkingModel)
    38  	assert.NoError(err)
    39  
    40  	// the resulting ID  will be random - so let's overwrite to test the rest of the flow
    41  	result.NetPair.ID = "uniqueTestID-4"
    42  
    43  	// the resulting mac address will be random - so lets overwrite it
    44  	result.NetPair.VirtIface.HardAddr = macAddr.String()
    45  
    46  	assert.Exactly(result, expected)
    47  }
    48  
    49  func TestCreateVethNetworkEndpointChooseIfaceName(t *testing.T) {
    50  	assert := assert.New(t)
    51  	macAddr := net.HardwareAddr{0x02, 0x00, 0xCA, 0xFE, 0x00, 0x04}
    52  
    53  	expected := &VethEndpoint{
    54  		NetPair: NetworkInterfacePair{
    55  			TapInterface: TapInterface{
    56  				ID:   "uniqueTestID-4",
    57  				Name: "br4_kata",
    58  				TAPIface: NetworkInterface{
    59  					Name: "tap4_kata",
    60  				},
    61  			},
    62  			VirtIface: NetworkInterface{
    63  				Name:     "eth1",
    64  				HardAddr: macAddr.String(),
    65  			},
    66  			NetInterworkingModel: DefaultNetInterworkingModel,
    67  		},
    68  		EndpointType: VethEndpointType,
    69  	}
    70  
    71  	result, err := createVethNetworkEndpoint(4, "eth1", DefaultNetInterworkingModel)
    72  	assert.NoError(err)
    73  
    74  	// the resulting ID will be random - so let's overwrite to test the rest of the flow
    75  	result.NetPair.ID = "uniqueTestID-4"
    76  
    77  	// the resulting mac address will be random - so lets overwrite it
    78  	result.NetPair.VirtIface.HardAddr = macAddr.String()
    79  
    80  	assert.Exactly(result, expected)
    81  }
    82  
    83  func TestCreateVethNetworkEndpointInvalidArgs(t *testing.T) {
    84  	type endpointValues struct {
    85  		idx    int
    86  		ifName string
    87  	}
    88  
    89  	assert := assert.New(t)
    90  
    91  	// all elements are expected to result in failure
    92  	failingValues := []endpointValues{
    93  		{-1, "bar"},
    94  		{-1, ""},
    95  	}
    96  
    97  	for _, d := range failingValues {
    98  		_, err := createVethNetworkEndpoint(d.idx, d.ifName, DefaultNetInterworkingModel)
    99  		assert.Error(err)
   100  	}
   101  }