mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 15:58:37 +00:00
use sub test in gc_controller_test.go
This commit is contained in:
parent
961a5ed144
commit
7d45e12523
@ -18,6 +18,7 @@ package podgc
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
@ -72,6 +73,7 @@ func TestGCTerminated(t *testing.T) {
|
|||||||
deletedPodNames sets.String
|
deletedPodNames sets.String
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
|
// case 1
|
||||||
pods: []nameToPhase{
|
pods: []nameToPhase{
|
||||||
{name: "a", phase: v1.PodFailed},
|
{name: "a", phase: v1.PodFailed},
|
||||||
{name: "b", phase: v1.PodSucceeded},
|
{name: "b", phase: v1.PodSucceeded},
|
||||||
@ -81,6 +83,7 @@ func TestGCTerminated(t *testing.T) {
|
|||||||
deletedPodNames: sets.NewString(),
|
deletedPodNames: sets.NewString(),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
// case 2
|
||||||
pods: []nameToPhase{
|
pods: []nameToPhase{
|
||||||
{name: "a", phase: v1.PodFailed},
|
{name: "a", phase: v1.PodFailed},
|
||||||
{name: "b", phase: v1.PodSucceeded},
|
{name: "b", phase: v1.PodSucceeded},
|
||||||
@ -90,6 +93,7 @@ func TestGCTerminated(t *testing.T) {
|
|||||||
deletedPodNames: sets.NewString("a", "b"),
|
deletedPodNames: sets.NewString("a", "b"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
// case 3
|
||||||
pods: []nameToPhase{
|
pods: []nameToPhase{
|
||||||
{name: "a", phase: v1.PodRunning},
|
{name: "a", phase: v1.PodRunning},
|
||||||
{name: "b", phase: v1.PodSucceeded},
|
{name: "b", phase: v1.PodSucceeded},
|
||||||
@ -99,6 +103,7 @@ func TestGCTerminated(t *testing.T) {
|
|||||||
deletedPodNames: sets.NewString("b"),
|
deletedPodNames: sets.NewString("b"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
// case 4
|
||||||
pods: []nameToPhase{
|
pods: []nameToPhase{
|
||||||
{name: "a", phase: v1.PodFailed},
|
{name: "a", phase: v1.PodFailed},
|
||||||
{name: "b", phase: v1.PodSucceeded},
|
{name: "b", phase: v1.PodSucceeded},
|
||||||
@ -107,6 +112,7 @@ func TestGCTerminated(t *testing.T) {
|
|||||||
deletedPodNames: sets.NewString("a"),
|
deletedPodNames: sets.NewString("a"),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
// case 5
|
||||||
pods: []nameToPhase{
|
pods: []nameToPhase{
|
||||||
{name: "a", phase: v1.PodFailed},
|
{name: "a", phase: v1.PodFailed},
|
||||||
{name: "b", phase: v1.PodSucceeded},
|
{name: "b", phase: v1.PodSucceeded},
|
||||||
@ -117,33 +123,35 @@ func TestGCTerminated(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i, test := range testCases {
|
for i, test := range testCases {
|
||||||
client := fake.NewSimpleClientset(&v1.NodeList{Items: []v1.Node{*testutil.NewNode("node")}})
|
t.Run(fmt.Sprintf("case: %v", i), func(t *testing.T) {
|
||||||
gcc, podInformer, _ := NewFromClient(client, test.threshold)
|
client := fake.NewSimpleClientset(&v1.NodeList{Items: []v1.Node{*testutil.NewNode("node")}})
|
||||||
deletedPodNames := make([]string, 0)
|
gcc, podInformer, _ := NewFromClient(client, test.threshold)
|
||||||
var lock sync.Mutex
|
deletedPodNames := make([]string, 0)
|
||||||
gcc.deletePod = func(_, name string) error {
|
var lock sync.Mutex
|
||||||
lock.Lock()
|
gcc.deletePod = func(_, name string) error {
|
||||||
defer lock.Unlock()
|
lock.Lock()
|
||||||
deletedPodNames = append(deletedPodNames, name)
|
defer lock.Unlock()
|
||||||
return nil
|
deletedPodNames = append(deletedPodNames, name)
|
||||||
}
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
creationTime := time.Unix(0, 0)
|
creationTime := time.Unix(0, 0)
|
||||||
for _, pod := range test.pods {
|
for _, pod := range test.pods {
|
||||||
creationTime = creationTime.Add(1 * time.Hour)
|
creationTime = creationTime.Add(1 * time.Hour)
|
||||||
podInformer.Informer().GetStore().Add(&v1.Pod{
|
podInformer.Informer().GetStore().Add(&v1.Pod{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: pod.name, CreationTimestamp: metav1.Time{Time: creationTime}},
|
ObjectMeta: metav1.ObjectMeta{Name: pod.name, CreationTimestamp: metav1.Time{Time: creationTime}},
|
||||||
Status: v1.PodStatus{Phase: pod.phase},
|
Status: v1.PodStatus{Phase: pod.phase},
|
||||||
Spec: v1.PodSpec{NodeName: "node"},
|
Spec: v1.PodSpec{NodeName: "node"},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
gcc.gc()
|
gcc.gc()
|
||||||
|
|
||||||
if pass := compareStringSetToList(test.deletedPodNames, deletedPodNames); !pass {
|
if pass := compareStringSetToList(test.deletedPodNames, deletedPodNames); !pass {
|
||||||
t.Errorf("[%v]pod's deleted expected and actual did not match.\n\texpected: %v\n\tactual: %v",
|
t.Errorf("[%v]pod's deleted expected and actual did not match.\n\texpected: %v\n\tactual: %v",
|
||||||
i, test.deletedPodNames.List(), deletedPodNames)
|
i, test.deletedPodNames.List(), deletedPodNames)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,38 +411,40 @@ func TestGCUnscheduledTerminating(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for i, test := range testCases {
|
for i, test := range testCases {
|
||||||
client := fake.NewSimpleClientset()
|
t.Run(test.name, func(t *testing.T) {
|
||||||
gcc, podInformer, _ := NewFromClient(client, -1)
|
client := fake.NewSimpleClientset()
|
||||||
deletedPodNames := make([]string, 0)
|
gcc, podInformer, _ := NewFromClient(client, -1)
|
||||||
var lock sync.Mutex
|
deletedPodNames := make([]string, 0)
|
||||||
gcc.deletePod = func(_, name string) error {
|
var lock sync.Mutex
|
||||||
lock.Lock()
|
gcc.deletePod = func(_, name string) error {
|
||||||
defer lock.Unlock()
|
lock.Lock()
|
||||||
deletedPodNames = append(deletedPodNames, name)
|
defer lock.Unlock()
|
||||||
return nil
|
deletedPodNames = append(deletedPodNames, name)
|
||||||
}
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
creationTime := time.Unix(0, 0)
|
creationTime := time.Unix(0, 0)
|
||||||
for _, pod := range test.pods {
|
for _, pod := range test.pods {
|
||||||
creationTime = creationTime.Add(1 * time.Hour)
|
creationTime = creationTime.Add(1 * time.Hour)
|
||||||
podInformer.Informer().GetStore().Add(&v1.Pod{
|
podInformer.Informer().GetStore().Add(&v1.Pod{
|
||||||
ObjectMeta: metav1.ObjectMeta{Name: pod.name, CreationTimestamp: metav1.Time{Time: creationTime},
|
ObjectMeta: metav1.ObjectMeta{Name: pod.name, CreationTimestamp: metav1.Time{Time: creationTime},
|
||||||
DeletionTimestamp: pod.deletionTimeStamp},
|
DeletionTimestamp: pod.deletionTimeStamp},
|
||||||
Status: v1.PodStatus{Phase: pod.phase},
|
Status: v1.PodStatus{Phase: pod.phase},
|
||||||
Spec: v1.PodSpec{NodeName: pod.nodeName},
|
Spec: v1.PodSpec{NodeName: pod.nodeName},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pods, err := podInformer.Lister().List(labels.Everything())
|
pods, err := podInformer.Lister().List(labels.Everything())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Error while listing all Pods: %v", err)
|
t.Errorf("Error while listing all Pods: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
gcc.gcUnscheduledTerminating(pods)
|
gcc.gcUnscheduledTerminating(pods)
|
||||||
|
|
||||||
if pass := compareStringSetToList(test.deletedPodNames, deletedPodNames); !pass {
|
if pass := compareStringSetToList(test.deletedPodNames, deletedPodNames); !pass {
|
||||||
t.Errorf("[%v]pod's deleted expected and actual did not match.\n\texpected: %v\n\tactual: %v, test: %v",
|
t.Errorf("[%v]pod's deleted expected and actual did not match.\n\texpected: %v\n\tactual: %v, test: %v",
|
||||||
i, test.deletedPodNames.List(), deletedPodNames, test.name)
|
i, test.deletedPodNames.List(), deletedPodNames, test.name)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user