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 }