Add unit test coverage for nvidiaGPUManager initialization

Part of #47750

```release-note
NONE
```
pull/6/head
Jiaying Zhang 2017-06-21 17:55:47 -07:00
parent 33fc75e223
commit fee83f65d4
2 changed files with 32 additions and 0 deletions

View File

@ -44,6 +44,7 @@ go_test(
library = ":go_default_library",
tags = ["automanaged"],
deps = [
"//pkg/kubelet/dockershim/libdocker:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",

View File

@ -17,6 +17,8 @@ limitations under the License.
package nvidia
import (
"os"
"reflect"
"testing"
"github.com/stretchr/testify/assert"
@ -26,6 +28,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"
)
type testActivePodsLister struct {
@ -60,6 +63,34 @@ func makeTestPod(numContainers, gpusPerContainer int) *v1.Pod {
return pod
}
func TestNewNvidiaGPUManager(t *testing.T) {
podLister := &testActivePodsLister{}
// Expects nil GPUManager and an error with nil dockerClient.
testGpuManager1, err := NewNvidiaGPUManager(podLister, nil)
as := assert.New(t)
as.Nil(testGpuManager1)
as.NotNil(err)
// Expects a GPUManager to be created with non-nil dockerClient.
fakeDocker := libdocker.NewFakeDockerClient()
testGpuManager2, err := NewNvidiaGPUManager(podLister, fakeDocker)
as.NotNil(testGpuManager2)
as.Nil(err)
// Expects zero capacity without any GPUs.
gpuCapacity := testGpuManager2.Capacity()
as.Equal(len(gpuCapacity), 1)
rgpu := gpuCapacity[v1.ResourceNvidiaGPU]
as.Equal(rgpu.Value(), int64(0))
err2 := testGpuManager2.Start()
if !os.IsNotExist(err2) {
gpus := reflect.ValueOf(testGpuManager2).Elem().FieldByName("allGPUs").Len()
as.NotZero(gpus)
}
}
func TestMultiContainerPodGPUAllocation(t *testing.T) {
podLister := &testActivePodsLister{}