Skip to content

Commit 1e42737

Browse files
committed
add unit tests
1 parent aae8a28 commit 1e42737

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

pkg/kubelet/kubelet_pods_test.go

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"errors"
2121
"fmt"
2222
"io/ioutil"
23+
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
2324
"os"
2425
"path/filepath"
2526
"sort"
@@ -42,6 +43,8 @@ import (
4243
// api.Registry.GroupOrDie(v1.GroupName).GroupVersions[0].String() is changed
4344
// to "v1"?
4445

46+
runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
47+
apitest "k8s.io/cri-api/pkg/apis/testing"
4548
_ "k8s.io/kubernetes/pkg/apis/core/install"
4649
"k8s.io/kubernetes/pkg/features"
4750
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
@@ -2385,3 +2388,81 @@ func TestTruncatePodHostname(t *testing.T) {
23852388
assert.Equal(t, test.output, output)
23862389
}
23872390
}
2391+
2392+
func TestKubelet_PodResourcesAreReclaimed(t *testing.T) {
2393+
2394+
type args struct {
2395+
pod *v1.Pod
2396+
status v1.PodStatus
2397+
runtimeStatus kubecontainer.PodStatus
2398+
}
2399+
tests := []struct {
2400+
name string
2401+
args args
2402+
want bool
2403+
}{
2404+
{
2405+
"pod with running containers",
2406+
args{
2407+
pod: &v1.Pod{},
2408+
status: v1.PodStatus{
2409+
ContainerStatuses: []v1.ContainerStatus{
2410+
runningState("containerA"),
2411+
runningState("containerB"),
2412+
},
2413+
},
2414+
},
2415+
false,
2416+
},
2417+
{
2418+
"pod with containers in runtime cache",
2419+
args{
2420+
pod: &v1.Pod{},
2421+
status: v1.PodStatus{},
2422+
runtimeStatus: kubecontainer.PodStatus{
2423+
ContainerStatuses: []*kubecontainer.ContainerStatus{
2424+
{},
2425+
},
2426+
},
2427+
},
2428+
false,
2429+
},
2430+
{
2431+
"pod with sandbox present",
2432+
args{
2433+
pod: &v1.Pod{
2434+
ObjectMeta: metav1.ObjectMeta{
2435+
UID: types.UID("fakesandbox"),
2436+
},
2437+
},
2438+
status: v1.PodStatus{},
2439+
},
2440+
false,
2441+
},
2442+
}
2443+
2444+
testKubelet := newTestKubelet(t, false)
2445+
defer testKubelet.Cleanup()
2446+
kl := testKubelet.kubelet
2447+
2448+
runtimeService := apitest.NewFakeRuntimeService()
2449+
runtimeService.SetFakeSandboxes([]*apitest.FakePodSandbox{
2450+
{
2451+
PodSandboxStatus: runtimeapi.PodSandboxStatus{
2452+
Id: "fakesandbox",
2453+
Labels: map[string]string{
2454+
kubetypes.KubernetesPodUIDLabel: "fakesandbox",
2455+
},
2456+
},
2457+
},
2458+
})
2459+
kl.runtimeService = runtimeService
2460+
for _, tt := range tests {
2461+
t.Run(tt.name, func(t *testing.T) {
2462+
testKubelet.fakeRuntime.PodStatus = tt.args.runtimeStatus
2463+
if got := kl.PodResourcesAreReclaimed(tt.args.pod, tt.args.status); got != tt.want {
2464+
t.Errorf("PodResourcesAreReclaimed() = %v, want %v", got, tt.want)
2465+
}
2466+
})
2467+
}
2468+
}

0 commit comments

Comments
 (0)