mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-26 18:44:47 +01:00
Fixes #635 Remove `Hotplugged bool` field from device and add two new fields instead: * `RefCount`: how many references to this device. One device can be referenced(`NewDevice()`) many times by same/different container(s), two devices are regarded identical if they have same hostPath * `AttachCount`: how many times this device has been attached. A device can only be hotplugged once to the qemu, every new Attach command will add the AttachCount, and real `Detach` will be done only when `AttachCount == 0` Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
45 lines
872 B
Go
45 lines
872 B
Go
// Copyright (c) 2018 Huawei Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package drivers
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestBumpAttachCount(t *testing.T) {
|
|
type testData struct {
|
|
attach bool
|
|
attachCount uint
|
|
expectedAC uint
|
|
expectSkip bool
|
|
expectErr bool
|
|
}
|
|
|
|
data := []testData{
|
|
{true, 0, 0, false, false},
|
|
{true, 1, 2, true, false},
|
|
{true, intMax, intMax, true, true},
|
|
{false, 0, 0, true, true},
|
|
{false, 1, 1, false, false},
|
|
{false, intMax, intMax - 1, true, false},
|
|
}
|
|
|
|
dev := &GenericDevice{}
|
|
for _, d := range data {
|
|
dev.AttachCount = d.attachCount
|
|
skip, err := dev.bumpAttachCount(d.attach)
|
|
assert.Equal(t, skip, d.expectSkip, "")
|
|
assert.Equal(t, dev.GetAttachCount(), d.expectedAC, "")
|
|
if d.expectErr {
|
|
assert.NotNil(t, err)
|
|
} else {
|
|
assert.Nil(t, err)
|
|
}
|
|
}
|
|
}
|