Skip to content

Commit

Permalink
Add fake clientset for k8s testing
Browse files Browse the repository at this point in the history
Former-commit-id: 9b376ca447951e73c8e217f938a3c22a66fb687f [formerly 7429dc8]
Former-commit-id: 27e853cfd065b16cb41d307c49001654ea6b461b
  • Loading branch information
chenyunchen committed Jun 21, 2018
1 parent 14618ed commit 1274daf
Show file tree
Hide file tree
Showing 4 changed files with 265 additions and 23 deletions.
8 changes: 4 additions & 4 deletions src/kubernetes/nodes.go
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package kubernetes

import (
v1 "k8s.io/api/core/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
)

func GetNode(clientset *kubernetes.Clientset, name string) (*v1.Node, error) {
func GetNode(clientset kubernetes.Interface, name string) (*corev1.Node, error) {
return clientset.CoreV1().Nodes().Get(name, metav1.GetOptions{})
}

func GetNodes(clientset *kubernetes.Clientset) ([]*v1.Node, error) {
nodes := []*v1.Node{}
func GetNodes(clientset kubernetes.Interface) ([]*corev1.Node, error) {
nodes := []*corev1.Node{}
nodesList, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{})
if err != nil {
return nodes, err
Expand Down
44 changes: 35 additions & 9 deletions src/kubernetes/nodes_test.go
Original file line number Diff line number Diff line change
@@ -1,30 +1,56 @@
package kubernetes

import (
"github.com/linkernetworks/kubeconfig"
"github.com/stretchr/testify/assert"
"k8s.io/client-go/kubernetes"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fakeclientset "k8s.io/client-go/kubernetes/fake"
"testing"
)

func TestGetNodeFail(t *testing.T) {
config, err := kubeconfig.Load("")
func TestGetNode(t *testing.T) {
clientset := fakeclientset.NewSimpleClientset()

node := corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "K8S-Node",
},
}
_, err := clientset.CoreV1().Nodes().Create(&node)
assert.NoError(t, err)

clientset, err := kubernetes.NewForConfig(config)
result, err := GetNode(clientset, "K8S-Node")
assert.NoError(t, err)
assert.Equal(t, node.GetName(), result.GetName())
}

_, err = GetNode(clientset, "UnKnown_Name")
func TestGetNodeFail(t *testing.T) {
clientset := fakeclientset.NewSimpleClientset()

_, err := GetNode(clientset, "UnKnown_Name")
assert.Error(t, err)
}

func TestGetNodes(t *testing.T) {
config, err := kubeconfig.Load("")
clientset := fakeclientset.NewSimpleClientset()

node := corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "K8S-Node1",
},
}
_, err := clientset.CoreV1().Nodes().Create(&node)
assert.NoError(t, err)

clientset, err := kubernetes.NewForConfig(config)
node = corev1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "K8S-Node2",
},
}
_, err = clientset.CoreV1().Nodes().Create(&node)
assert.NoError(t, err)

_, err = GetNodes(clientset)
nodes, err := GetNodes(clientset)
assert.NoError(t, err)
assert.Equal(t, 2, len(nodes))
}
16 changes: 6 additions & 10 deletions src/serviceprovider/serviceprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,13 @@ func New(cf config.Config) *Container {
logger.Infof("Connecting to mongodb: %s", cf.Mongo.Url)
mongo := mongo.New(cf.Mongo.Url)

sp := &Container{
Config: cf,
Redis: redisService,
Mongo: mongo,
}
k8sConfig, _ := kubeconfig.Load(cf.Kubernetes)

if cf.Kubernetes == nil {
logger.Warnln("kubernetes service is not loaded: kubernetes config is not defined.")
} else {
config, _ := kubeconfig.Load(cf.Kubernetes)
sp.Kubernetes = config
sp := &Container{
Config: cf,
Redis: redisService,
Mongo: mongo,
Kubernetes: k8sConfig,
}

return sp
Expand Down
Loading

0 comments on commit 1274daf

Please sign in to comment.