diff --git a/virtcontainers/device/manager/manager_test.go b/virtcontainers/device/manager/manager_test.go index 3b2fc57688..79b00f3347 100644 --- a/virtcontainers/device/manager/manager_test.go +++ b/virtcontainers/device/manager/manager_test.go @@ -25,9 +25,10 @@ const fileMode0640 = os.FileMode(0640) // dirMode is the permission bits used for creating a directory const dirMode = os.FileMode(0750) | os.ModeDir -func TestNewDevices(t *testing.T) { +func TestNewDevice(t *testing.T) { dm := &deviceManager{ blockDriver: VirtioBlock, + devices: make(map[string]api.Device), } savedSysDevPrefix := config.SysDevPrefix @@ -53,7 +54,7 @@ func TestNewDevices(t *testing.T) { DevType: "c", } - _, err = dm.NewDevices([]config.DeviceInfo{deviceInfo}) + _, err = dm.NewDevice(deviceInfo) assert.NotNil(t, err) format := strconv.FormatInt(major, 10) + ":" + strconv.FormatInt(minor, 10) @@ -62,7 +63,7 @@ func TestNewDevices(t *testing.T) { // Return true for non-existent /sys/dev path. deviceInfo.ContainerPath = path - _, err = dm.NewDevices([]config.DeviceInfo{deviceInfo}) + _, err = dm.NewDevice(deviceInfo) assert.Nil(t, err) err = os.MkdirAll(ueventPathPrefix, dirMode) @@ -73,18 +74,17 @@ func TestNewDevices(t *testing.T) { err = ioutil.WriteFile(ueventPath, content, fileMode0640) assert.Nil(t, err) - _, err = dm.NewDevices([]config.DeviceInfo{deviceInfo}) + _, err = dm.NewDevice(deviceInfo) assert.NotNil(t, err) content = []byte("MAJOR=252\nMINOR=3\nDEVNAME=vfio/2") err = ioutil.WriteFile(ueventPath, content, fileMode0640) assert.Nil(t, err) - devices, err := dm.NewDevices([]config.DeviceInfo{deviceInfo}) + device, err := dm.NewDevice(deviceInfo) assert.Nil(t, err) - assert.Equal(t, len(devices), 1) - vfioDev, ok := devices[0].(*drivers.VFIODevice) + vfioDev, ok := device.(*drivers.VFIODevice) assert.True(t, ok) assert.Equal(t, vfioDev.DeviceInfo.HostPath, path) assert.Equal(t, vfioDev.DeviceInfo.ContainerPath, path) @@ -98,6 +98,7 @@ func TestNewDevices(t *testing.T) { func TestAttachVFIODevice(t *testing.T) { dm := &deviceManager{ blockDriver: VirtioBlock, + devices: make(map[string]api.Device), } tmpDir, err := ioutil.TempDir("", "") assert.Nil(t, err) @@ -128,7 +129,7 @@ func TestAttachVFIODevice(t *testing.T) { DevType: "c", } - device, err := dm.createDevice(deviceInfo) + device, err := dm.NewDevice(deviceInfo) assert.Nil(t, err) _, ok := device.(*drivers.VFIODevice) assert.True(t, ok) @@ -144,6 +145,7 @@ func TestAttachVFIODevice(t *testing.T) { func TestAttachGenericDevice(t *testing.T) { dm := &deviceManager{ blockDriver: VirtioBlock, + devices: make(map[string]api.Device), } path := "/dev/tty2" deviceInfo := config.DeviceInfo{ @@ -152,7 +154,7 @@ func TestAttachGenericDevice(t *testing.T) { DevType: "c", } - device, err := dm.createDevice(deviceInfo) + device, err := dm.NewDevice(deviceInfo) assert.Nil(t, err) _, ok := device.(*drivers.GenericDevice) assert.True(t, ok) @@ -168,6 +170,7 @@ func TestAttachGenericDevice(t *testing.T) { func TestAttachBlockDevice(t *testing.T) { dm := &deviceManager{ blockDriver: VirtioBlock, + devices: make(map[string]api.Device), } path := "/dev/hda" deviceInfo := config.DeviceInfo{ @@ -177,7 +180,7 @@ func TestAttachBlockDevice(t *testing.T) { } devReceiver := &api.MockDeviceReceiver{} - device, err := dm.createDevice(deviceInfo) + device, err := dm.NewDevice(deviceInfo) assert.Nil(t, err) _, ok := device.(*drivers.BlockDevice) assert.True(t, ok) @@ -190,7 +193,7 @@ func TestAttachBlockDevice(t *testing.T) { // test virtio SCSI driver dm.blockDriver = VirtioSCSI - device, err = dm.createDevice(deviceInfo) + device, err = dm.NewDevice(deviceInfo) assert.Nil(t, err) err = device.Attach(devReceiver) assert.Nil(t, err) diff --git a/virtcontainers/filesystem_test.go b/virtcontainers/filesystem_test.go index 7687acb917..43ba939475 100644 --- a/virtcontainers/filesystem_test.go +++ b/virtcontainers/filesystem_test.go @@ -33,7 +33,7 @@ func TestFilesystemCreateAllResourcesSuccessful(t *testing.T) { id: testSandboxID, storage: fs, config: sandboxConfig, - devManager: manager.NewDeviceManager(manager.VirtioBlock), + devManager: manager.NewDeviceManager(manager.VirtioBlock, nil), containers: map[string]*Container{}, } diff --git a/virtcontainers/kata_agent_test.go b/virtcontainers/kata_agent_test.go index 6a0bb09dd4..c7484640e7 100644 --- a/virtcontainers/kata_agent_test.go +++ b/virtcontainers/kata_agent_test.go @@ -25,17 +25,15 @@ import ( "google.golang.org/grpc" pb "github.com/kata-containers/agent/protocols/grpc" - "github.com/kata-containers/runtime/virtcontainers/device/api" - "github.com/kata-containers/runtime/virtcontainers/device/config" - "github.com/kata-containers/runtime/virtcontainers/device/drivers" + "github.com/kata-containers/runtime/virtcontainers/device/manager" vcAnnotations "github.com/kata-containers/runtime/virtcontainers/pkg/annotations" "github.com/kata-containers/runtime/virtcontainers/pkg/mock" ) -const ( - testKataProxyURLTempl = "unix://%s/kata-proxy-test.sock" - testBlockDeviceCtrPath = "testBlockDeviceCtrPath" - testPCIAddr = "04/02" +var ( + testKataProxyURLTempl = "unix://%s/kata-proxy-test.sock" + //testBlockDeviceCtrPath = "testBlockDeviceCtrPath" + //testPCIAddr = "04/02" ) func proxyHandlerDiscard(c net.Conn) { @@ -444,15 +442,21 @@ func TestAppendDevicesEmptyContainerDeviceList(t *testing.T) { devList := []*pb.Device{} expected := []*pb.Device{} - ctrDevices := []api.Device{} + ctrDevices := []ContainerDevice{} - updatedDevList := k.appendDevices(devList, ctrDevices) + c := &Container{ + sandbox: &Sandbox{ + devManager: manager.NewDeviceManager("virtio-scsi", nil), + }, + devices: ctrDevices, + } + updatedDevList := k.appendDevices(devList, c) assert.True(t, reflect.DeepEqual(updatedDevList, expected), "Device lists didn't match: got %+v, expecting %+v", updatedDevList, expected) } -func TestAppendDevices(t *testing.T) { +/*func TestAppendDevices(t *testing.T) { k := kataAgent{} devList := []*pb.Device{} @@ -465,10 +469,13 @@ func TestAppendDevices(t *testing.T) { } ctrDevices := []api.Device{ &drivers.BlockDevice{ - DeviceInfo: config.DeviceInfo{ - ContainerPath: testBlockDeviceCtrPath, + DeviceInfo: &config.DeviceInfo{ + HostPath: testBlockDeviceCtrPath, + }, + BlockDrive: &config.BlockDrive{ + File: testBlockDeviceCtrPath, + PCIAddr: testPCIAddr, }, - PCIAddr: testPCIAddr, }, } @@ -476,7 +483,7 @@ func TestAppendDevices(t *testing.T) { assert.True(t, reflect.DeepEqual(updatedDevList, expected), "Device lists didn't match: got %+v, expecting %+v", updatedDevList, expected) -} +}*/ func TestConstraintGRPCSpec(t *testing.T) { assert := assert.New(t) diff --git a/virtcontainers/qemu_arch_base_test.go b/virtcontainers/qemu_arch_base_test.go index 518c8135d0..3c35c81676 100644 --- a/virtcontainers/qemu_arch_base_test.go +++ b/virtcontainers/qemu_arch_base_test.go @@ -15,7 +15,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/kata-containers/runtime/virtcontainers/device/config" - "github.com/kata-containers/runtime/virtcontainers/device/drivers" ) const ( @@ -206,12 +205,12 @@ func testQemuArchBaseAppend(t *testing.T, structure interface{}, expected []govm devices = qemuArchBase.append9PVolume(devices, s) case Socket: devices = qemuArchBase.appendSocket(devices, s) - case drivers.Drive: + case config.BlockDrive: devices = qemuArchBase.appendBlockDevice(devices, s) - case drivers.VFIODevice: + case config.VFIODrive: devices = qemuArchBase.appendVFIODevice(devices, s) - case drivers.VhostUserNetDevice: - devices = qemuArchBase.appendVhostUserDevice(devices, &s) + case config.VhostUserDeviceAttrs: + devices = qemuArchBase.appendVhostUserDevice(devices, s) } assert.Equal(devices, expected) @@ -364,7 +363,7 @@ func TestQemuArchBaseAppendBlockDevice(t *testing.T) { }, } - drive := drivers.Drive{ + drive := config.BlockDrive{ File: file, Format: format, ID: id, @@ -388,7 +387,8 @@ func TestQemuArchBaseAppendVhostUserDevice(t *testing.T) { }, } - vhostUserDevice := drivers.VhostUserNetDevice{ + vhostUserDevice := config.VhostUserDeviceAttrs{ + Type: config.VhostUserNet, MacAddress: macAddress, } vhostUserDevice.ID = id @@ -406,7 +406,7 @@ func TestQemuArchBaseAppendVFIODevice(t *testing.T) { }, } - vfDevice := drivers.VFIODevice{ + vfDevice := config.VFIODrive{ BDF: bdf, } diff --git a/virtcontainers/sandbox_test.go b/virtcontainers/sandbox_test.go index cc6049d1c2..a6124db41c 100644 --- a/virtcontainers/sandbox_test.go +++ b/virtcontainers/sandbox_test.go @@ -18,7 +18,6 @@ import ( "github.com/stretchr/testify/assert" - "github.com/kata-containers/runtime/virtcontainers/device/api" "github.com/kata-containers/runtime/virtcontainers/device/config" "github.com/kata-containers/runtime/virtcontainers/device/drivers" "github.com/kata-containers/runtime/virtcontainers/device/manager" @@ -1153,18 +1152,23 @@ func TestSandboxAttachDevicesVFIO(t *testing.T) { config.SysIOMMUPath = savedIOMMUPath }() + dm := manager.NewDeviceManager(manager.VirtioSCSI, nil) path := filepath.Join(vfioPath, testFDIOGroup) deviceInfo := config.DeviceInfo{ HostPath: path, ContainerPath: path, DevType: "c", } - vfioDevice := drivers.NewVFIODevice(deviceInfo) + dev, err := dm.NewDevice(deviceInfo) + assert.Nil(t, err, "deviceManager.NewDevice return error: %v", err) c := &Container{ id: "100", - devices: []api.Device{ - vfioDevice, + devices: []ContainerDevice{ + { + ID: dev.DeviceID(), + ContainerPath: path, + }, }, } @@ -1172,12 +1176,19 @@ func TestSandboxAttachDevicesVFIO(t *testing.T) { containers[c.id] = c sandbox := Sandbox{ + id: "100", containers: containers, + storage: &filesystem{}, hypervisor: &mockHypervisor{}, + devManager: dm, } containers[c.id].sandbox = &sandbox + err = sandbox.storage.createAllResources(&sandbox) + assert.Nil(t, err, "Error while create all resources for sandbox") + err = sandbox.storeSandboxDevices() + assert.Nil(t, err, "Error while store sandbox devices %s", err) err = containers[c.id].attachDevices() assert.Nil(t, err, "Error while attaching devices %s", err) @@ -1584,10 +1595,9 @@ func TestAttachBlockDevice(t *testing.T) { DevType: "b", } - dm := manager.NewDeviceManager(VirtioBlock) - devices, err := dm.NewDevices([]config.DeviceInfo{deviceInfo}) + dm := manager.NewDeviceManager(VirtioBlock, nil) + device, err := dm.NewDevice(deviceInfo) assert.Nil(t, err) - device := devices[0] _, ok := device.(*drivers.BlockDevice) assert.True(t, ok)