@@ -42,6 +42,7 @@ import (
42
42
// api.Registry.GroupOrDie(v1.GroupName).GroupVersions[0].String() is changed
43
43
// to "v1"?
44
44
45
+ runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
45
46
_ "k8s.io/kubernetes/pkg/apis/core/install"
46
47
"k8s.io/kubernetes/pkg/features"
47
48
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
@@ -2385,3 +2386,70 @@ func TestTruncatePodHostname(t *testing.T) {
2385
2386
assert .Equal (t , test .output , output )
2386
2387
}
2387
2388
}
2389
+
2390
+ func TestPodResourcesAreReclaimed (t * testing.T ) {
2391
+
2392
+ type args struct {
2393
+ pod * v1.Pod
2394
+ status v1.PodStatus
2395
+ runtimeStatus kubecontainer.PodStatus
2396
+ }
2397
+ tests := []struct {
2398
+ name string
2399
+ args args
2400
+ want bool
2401
+ }{
2402
+ {
2403
+ "pod with running containers" ,
2404
+ args {
2405
+ pod : & v1.Pod {},
2406
+ status : v1.PodStatus {
2407
+ ContainerStatuses : []v1.ContainerStatus {
2408
+ runningState ("containerA" ),
2409
+ runningState ("containerB" ),
2410
+ },
2411
+ },
2412
+ },
2413
+ false ,
2414
+ },
2415
+ {
2416
+ "pod with containers in runtime cache" ,
2417
+ args {
2418
+ pod : & v1.Pod {},
2419
+ status : v1.PodStatus {},
2420
+ runtimeStatus : kubecontainer.PodStatus {
2421
+ ContainerStatuses : []* kubecontainer.ContainerStatus {
2422
+ {},
2423
+ },
2424
+ },
2425
+ },
2426
+ false ,
2427
+ },
2428
+ {
2429
+ "pod with sandbox present" ,
2430
+ args {
2431
+ pod : & v1.Pod {},
2432
+ status : v1.PodStatus {},
2433
+ runtimeStatus : kubecontainer.PodStatus {
2434
+ SandboxStatuses : []* runtimeapi.PodSandboxStatus {
2435
+ {},
2436
+ },
2437
+ },
2438
+ },
2439
+ false ,
2440
+ },
2441
+ }
2442
+
2443
+ testKubelet := newTestKubelet (t , false )
2444
+ defer testKubelet .Cleanup ()
2445
+ kl := testKubelet .kubelet
2446
+
2447
+ for _ , tt := range tests {
2448
+ t .Run (tt .name , func (t * testing.T ) {
2449
+ testKubelet .fakeRuntime .PodStatus = tt .args .runtimeStatus
2450
+ if got := kl .PodResourcesAreReclaimed (tt .args .pod , tt .args .status ); got != tt .want {
2451
+ t .Errorf ("PodResourcesAreReclaimed() = %v, want %v" , got , tt .want )
2452
+ }
2453
+ })
2454
+ }
2455
+ }
0 commit comments