From fee83f65d4e194d651389a4323d5a0fe3ddccc9a Mon Sep 17 00:00:00 2001 From: Jiaying Zhang Date: Wed, 21 Jun 2017 17:55:47 -0700 Subject: [PATCH] Add unit test coverage for nvidiaGPUManager initialization Part of #47750 ```release-note NONE ``` --- pkg/kubelet/gpu/nvidia/BUILD | 1 + .../gpu/nvidia/nvidia_gpu_manager_test.go | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/pkg/kubelet/gpu/nvidia/BUILD b/pkg/kubelet/gpu/nvidia/BUILD index cb136291152..c785ddebad1 100644 --- a/pkg/kubelet/gpu/nvidia/BUILD +++ b/pkg/kubelet/gpu/nvidia/BUILD @@ -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", diff --git a/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager_test.go b/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager_test.go index d8613de527c..dc7253f0940 100644 --- a/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager_test.go +++ b/pkg/kubelet/gpu/nvidia/nvidia_gpu_manager_test.go @@ -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{}