github.com/kata-containers/runtime@v0.0.0-20210505125100-04f29832a923/virtcontainers/types/bridges_test.go (about) 1 // Copyright (c) 2017 Intel Corporation 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 // 5 6 package types 7 8 import ( 9 "fmt" 10 "testing" 11 12 "github.com/stretchr/testify/assert" 13 ) 14 15 func testAddRemoveDevice(t *testing.T, b *Bridge) { 16 assert := assert.New(t) 17 18 // add device 19 devID := "abc123" 20 21 addr, err := b.AddDevice(devID) 22 assert.NoError(err) 23 if addr < 1 { 24 assert.Fail("address cannot be less than 1") 25 } 26 27 // remove device 28 err = b.RemoveDevice("") 29 assert.Error(err) 30 31 err = b.RemoveDevice(devID) 32 assert.NoError(err) 33 34 // add device when the bridge is full 35 b.Devices = make(map[uint32]string) 36 for i := uint32(1); i <= b.MaxCapacity; i++ { 37 b.Devices[i] = fmt.Sprintf("%d", i) 38 } 39 addr, err = b.AddDevice(devID) 40 assert.Error(err) 41 if addr != 0 { 42 assert.Fail("address should be 0") 43 } 44 } 45 46 func TestAddressFormat(t *testing.T) { 47 assert := assert.New(t) 48 49 // successful cases for AddressFormat functions 50 var ccwbridge = NewBridge(CCW, "", make(map[uint32]string), 0) 51 format, err := ccwbridge.AddressFormatCCW("0") 52 assert.NoError(err) 53 assert.Equal(format, "fe.0.0", "Format string should be fe.0.0") 54 format, err = ccwbridge.AddressFormatCCWForVirtServer("0") 55 assert.NoError(err) 56 assert.Equal(format, "0.0.0", "Format string should be 0.0.0") 57 58 // failure cases for AddressFormat functions 59 var pcibridge = NewBridge(PCI, "", make(map[uint32]string), 0) 60 _, err = pcibridge.AddressFormatCCW("0") 61 assert.Error(err) 62 _, err = pcibridge.AddressFormatCCWForVirtServer("0") 63 assert.Error(err) 64 65 } 66 67 func TestNewBridge(t *testing.T) { 68 assert := assert.New(t) 69 70 var pci Type = "pci" 71 var pcie Type = "pcie" 72 var ccw Type = "ccw" 73 var maxDefaultCapacity uint32 74 75 var pcibridge = NewBridge(PCI, "", make(map[uint32]string), 0) 76 assert.Equal(pcibridge.Type, pci, "Type should be PCI") 77 assert.Equal(pcibridge.Devices, make(map[uint32]string), "Devices should be equal to make(map[uint32]string)") 78 assert.Equal(pcibridge.Addr, 0, "Address should be 0") 79 80 var pciebridge = NewBridge(PCIE, "", make(map[uint32]string), 0) 81 assert.Equal(pciebridge.Type, pcie, "Type should be PCIE") 82 assert.Equal(pciebridge.Devices, make(map[uint32]string), "Devices should be equal to make(map[uint32]string)") 83 assert.Equal(pciebridge.Addr, 0, "Address should be 0") 84 85 var ccwbridge = NewBridge(CCW, "", make(map[uint32]string), 0) 86 assert.Equal(ccwbridge.Type, ccw, "Type should be CCW") 87 assert.Equal(ccwbridge.Devices, make(map[uint32]string), "Devices should be equal to make(map[uint32]string)") 88 assert.Equal(ccwbridge.Addr, 0, "Address should be 0") 89 90 var defaultbridge = NewBridge("", "", make(map[uint32]string), 0) 91 assert.Empty(defaultbridge.Type) 92 assert.Equal(defaultbridge.MaxCapacity, maxDefaultCapacity, "MaxCapacity should be 0") 93 } 94 95 func TestAddRemoveDevicePCI(t *testing.T) { 96 97 // create a pci bridge 98 bridges := []*Bridge{{make(map[uint32]string), "rgb123", 5, PCI, PCIBridgeMaxCapacity}} 99 100 testAddRemoveDevice(t, bridges[0]) 101 } 102 103 func TestAddRemoveDeviceCCW(t *testing.T) { 104 105 // create a CCW bridge 106 bridges := []*Bridge{{make(map[uint32]string), "rgb123", 5, CCW, CCWBridgeMaxCapacity}} 107 108 testAddRemoveDevice(t, bridges[0]) 109 }