Merge pull request #39944 from NickrenREN/controller-service-test

Automatic merge from submit-queue

add test for service controller sync and remove unused function
pull/6/head
Kubernetes Submit Queue 2017-04-17 18:15:04 -07:00 committed by GitHub
commit 32ee95496e
3 changed files with 119 additions and 18 deletions

View File

@ -44,6 +44,7 @@ go_test(
library = ":go_default_library",
tags = ["automanaged"],
deps = [
"//pkg/api:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/api/v1:go_default_library",
"//pkg/client/clientset_generated/clientset/fake:go_default_library",

View File

@ -573,24 +573,6 @@ func nodeSlicesEqualForLB(x, y []*v1.Node) bool {
return stringSlicesEqual(nodeNames(x), nodeNames(y))
}
func intSlicesEqual(x, y []int) bool {
if len(x) != len(y) {
return false
}
if !sort.IntsAreSorted(x) {
sort.Ints(x)
}
if !sort.IntsAreSorted(y) {
sort.Ints(y)
}
for i := range x {
if x[i] != y[i] {
return false
}
}
return true
}
func stringSlicesEqual(x, y []string) bool {
if len(x) != len(y) {
return false

View File

@ -23,6 +23,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/tools/record"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset/fake"
@ -296,3 +297,120 @@ func TestGetNodeConditionPredicate(t *testing.T) {
}
// TODO(a-robinson): Add tests for update/sync/delete.
func TestSyncService(t *testing.T) {
controller, _, _ := newController()
testServiceName := "sync-test-name"
testServiceUID := types.UID("sync-test-uid")
testService := newService(testServiceName, testServiceUID, v1.ServiceTypeLoadBalancer)
keyExpected := testService.GetObjectMeta().GetNamespace() + "/" + testService.GetObjectMeta().GetName()
controller.enqueueService(testService)
cachedServiceTest := controller.cache.getOrCreate(keyExpected)
cachedServiceTest.state = testService
controller.cache.set(keyExpected, cachedServiceTest)
keyGot, quit := controller.workingQueue.Get()
if quit {
t.Fatalf("get no workingQueue element")
}
if keyExpected != keyGot.(string) {
t.Fatalf("get service key error, expected: %s, got: %s", keyExpected, keyGot.(string))
}
err := controller.syncService(keyExpected)
if err != nil {
t.Fatalf("sync service error: %v", err)
}
_, exist := controller.cache.get(keyExpected)
if exist {
t.Fatalf("sync service error, workingQueue should not contain service: %s any more", keyExpected)
}
}
func TestProcessServiceDeletion(t *testing.T) {
controller, _, _ := newController()
testServiceName := "sync-test-name"
testServiceUID := types.UID("sync-test-uid")
testService := newService(testServiceName, testServiceUID, v1.ServiceTypeLoadBalancer)
keyExpected := testService.GetObjectMeta().GetNamespace() + "/" + testService.GetObjectMeta().GetName()
controller.enqueueService(testService)
cachedServiceTest := controller.cache.getOrCreate(keyExpected)
cachedServiceTest.state = testService
controller.cache.set(keyExpected, cachedServiceTest)
keyGot, quit := controller.workingQueue.Get()
if quit {
t.Fatalf("get no workingQueue element")
}
if keyExpected != keyGot.(string) {
t.Fatalf("get service key error, expected: %s, got: %s", keyExpected, keyGot.(string))
}
err, _ := controller.processServiceDeletion(keyExpected)
if err != nil {
t.Fatalf("delete service error: %v", err)
}
_, exist := controller.cache.get(keyExpected)
if exist {
t.Fatalf("delete service error, workingQueue should not contain service: %s any more", keyExpected)
}
}
func TestProcessServiceUpdate(t *testing.T) {
controller, _, _ := newController()
testServiceName := "sync-test-name"
testServiceUID := types.UID("sync-test-uid")
lbIP := "192.168.1.1"
testService := newService(testServiceName, testServiceUID, v1.ServiceTypeLoadBalancer)
testService.Spec.LoadBalancerIP = lbIP
keyExpected := testService.GetObjectMeta().GetNamespace() + "/" + testService.GetObjectMeta().GetName()
controller.enqueueService(testService)
cachedServiceTest := controller.cache.getOrCreate(keyExpected)
cachedServiceTest.state = testService
controller.cache.set(keyExpected, cachedServiceTest)
keyGot, quit := controller.workingQueue.Get()
if quit {
t.Fatalf("get no workingQueue element")
}
if keyExpected != keyGot.(string) {
t.Fatalf("get service key error, expected: %s, got: %s", keyExpected, keyGot.(string))
}
copy, err := api.Scheme.DeepCopy(testService)
if err != nil {
t.Fatalf("copy service error: %v", err)
}
newService := copy.(*v1.Service)
newLBIP := "192.168.1.11"
newService.Spec.LoadBalancerIP = newLBIP
err, _ = controller.processServiceUpdate(cachedServiceTest, newService, keyExpected)
if err != nil {
t.Fatalf("update service error: %v", err)
}
cachedServiceGot, exist := controller.cache.get(keyExpected)
if !exist {
t.Fatalf("update service error, workingQueue should contain service: %s", keyExpected)
}
if cachedServiceGot.state.Spec.LoadBalancerIP != newLBIP {
t.Fatalf("update LoadBalancerIP error, expected: %s, got: %s", newLBIP, cachedServiceGot.state.Spec.LoadBalancerIP)
}
}