fix: node status filter

Signed-off-by: hongming <talonwan@yunify.com>
This commit is contained in:
hongming
2020-07-16 12:08:44 +08:00
parent de5f4c36e0
commit 4f3007c143
2 changed files with 161 additions and 8 deletions

View File

@@ -23,6 +23,10 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
"kubesphere.io/kubesphere/pkg/api"
"kubesphere.io/kubesphere/pkg/apiserver/query"
"kubesphere.io/kubesphere/pkg/models/resources/v1alpha3"
"strconv"
"testing"
)
@@ -144,3 +148,112 @@ func TestNodesGetterGet(t *testing.T) {
}
}
func TestListNodes(t *testing.T) {
tests := []struct {
query *query.Query
expected *api.ListResult
}{
{
&query.Query{
Pagination: &query.Pagination{
Limit: 1,
Offset: 0,
},
SortBy: query.FieldName,
Ascending: false,
Filters: map[query.Field]query.Value{query.FieldName: query.Value(node2.Name)},
},
&api.ListResult{
Items: []interface{}{
node2,
},
TotalItems: 1,
},
},
{
&query.Query{
Pagination: &query.Pagination{
Limit: 1,
Offset: 0,
},
SortBy: query.FieldName,
Ascending: false,
Filters: map[query.Field]query.Value{query.FieldStatus: query.Value(statusUnschedulable)},
},
&api.ListResult{
Items: []interface{}{
node1,
},
TotalItems: 1,
},
},
{
&query.Query{
Pagination: &query.Pagination{
Limit: 1,
Offset: 0,
},
SortBy: query.FieldName,
Ascending: false,
Filters: map[query.Field]query.Value{query.FieldStatus: query.Value(statusRunning)},
},
&api.ListResult{
Items: []interface{}{
node2,
},
TotalItems: 1,
},
},
}
getter := prepare()
for index, test := range tests {
t.Run(strconv.Itoa(index), func(t *testing.T) {
got, err := getter.List("", test.query)
if err != nil {
t.Error(err)
}
if diff := cmp.Diff(got, test.expected); diff != "" {
t.Errorf("%T differ (-got, +want): %s", test.expected, diff)
}
})
}
}
var (
node1 = &corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node1",
},
Spec: corev1.NodeSpec{
Unschedulable: true,
},
}
node2 = &corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "node2",
},
Spec: corev1.NodeSpec{
Unschedulable: false,
},
}
nodes = []*corev1.Node{node1, node2}
)
func prepare() v1alpha3.Interface {
fake := fake.NewSimpleClientset(node1, node2)
informer := informers.NewSharedInformerFactory(fake, 0)
for _, node := range nodes {
informer.Core().V1().Nodes().Informer().GetIndexer().Add(node)
}
return New(informer)
}