From 72ee90494ecf83c1ac0d1f6022dd244be41f98a4 Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Tue, 31 Mar 2015 12:58:29 -0700 Subject: [PATCH] Add unit test --- .../controller/nodecontroller.go | 3 ++- .../controller/nodecontroller_test.go | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/pkg/cloudprovider/controller/nodecontroller.go b/pkg/cloudprovider/controller/nodecontroller.go index dfb6bca309b..d449f54d7a2 100644 --- a/pkg/cloudprovider/controller/nodecontroller.go +++ b/pkg/cloudprovider/controller/nodecontroller.go @@ -220,7 +220,8 @@ func (nc *NodeController) SyncCloudNodes() error { nodeMap[node.Name] = &node } - // Create nodes which have been created in cloud, but not in kubernetes cluster. + // Create nodes which have been created in cloud, but not in kubernetes cluster + // Skip nodes if we hit an error while trying to get their addresses. for _, node := range matches.Items { if _, ok := nodeMap[node.Name]; !ok { glog.V(3).Infof("Querying addresses for new node: %s", node.Name) diff --git a/pkg/cloudprovider/controller/nodecontroller_test.go b/pkg/cloudprovider/controller/nodecontroller_test.go index 7324a04b4a8..6af24cc2c86 100644 --- a/pkg/cloudprovider/controller/nodecontroller_test.go +++ b/pkg/cloudprovider/controller/nodecontroller_test.go @@ -412,6 +412,7 @@ func TestSyncCloudNodes(t *testing.T) { expectedRequestCount int expectedNameCreated []string expectedExtIDCreated []string + expectedAddrsCreated []string expectedDeleted []string }{ { @@ -425,11 +426,13 @@ func TestSyncCloudNodes(t *testing.T) { "node0": "ext-node0", "node1": "ext-node1", }, + Addresses: []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"}}, }, matchRE: ".*", expectedRequestCount: 1, // List expectedNameCreated: []string{}, expectedExtIDCreated: []string{}, + expectedAddrsCreated: []string{}, expectedDeleted: []string{}, }, { @@ -443,11 +446,13 @@ func TestSyncCloudNodes(t *testing.T) { "node0": "ext-node0", "node1": "ext-node1", }, + Addresses: []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"}}, }, matchRE: ".*", expectedRequestCount: 2, // List + Create expectedNameCreated: []string{"node1"}, expectedExtIDCreated: []string{"ext-node1"}, + expectedAddrsCreated: []string{"1.2.3.4"}, expectedDeleted: []string{}, }, { @@ -461,11 +466,13 @@ func TestSyncCloudNodes(t *testing.T) { "node0": "ext-node0", "node1": "ext-node1", }, + Addresses: []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"}}, }, matchRE: ".*", expectedRequestCount: 2, // List + Delete expectedNameCreated: []string{}, expectedExtIDCreated: []string{}, + expectedAddrsCreated: []string{}, expectedDeleted: []string{"node1"}, }, { @@ -480,11 +487,13 @@ func TestSyncCloudNodes(t *testing.T) { "node1": "ext-node1", "fake": "ext-fake", }, + Addresses: []api.NodeAddress{{Type: api.NodeLegacyHostIP, Address: "1.2.3.4"}}, }, matchRE: "node[0-9]+", expectedRequestCount: 2, // List + Create expectedNameCreated: []string{"node1"}, expectedExtIDCreated: []string{"ext-node1"}, + expectedAddrsCreated: []string{"1.2.3.4"}, expectedDeleted: []string{}, }, } @@ -505,6 +514,10 @@ func TestSyncCloudNodes(t *testing.T) { if !reflect.DeepEqual(item.expectedExtIDCreated, nodeExtIDs) { t.Errorf("expected node external id list %+v, got %+v", item.expectedExtIDCreated, nodeExtIDs) } + nodeAddrs := sortedNodeAddresses(item.fakeNodeHandler.CreatedNodes) + if !reflect.DeepEqual(item.expectedAddrsCreated, nodeAddrs) { + t.Errorf("expected node address list %+v, got %+v", item.expectedAddrsCreated, nodeAddrs) + } nodes = sortedNodeNames(item.fakeNodeHandler.DeletedNodes) if !reflect.DeepEqual(item.expectedDeleted, nodes) { t.Errorf("expected node list %+v, got %+v", item.expectedDeleted, nodes) @@ -1446,6 +1459,17 @@ func sortedNodeNames(nodes []*api.Node) []string { return nodeNames } +func sortedNodeAddresses(nodes []*api.Node) []string { + nodeAddresses := []string{} + for _, node := range nodes { + for _, addr := range node.Status.Addresses { + nodeAddresses = append(nodeAddresses, addr.Address) + } + } + sort.Strings(nodeAddresses) + return nodeAddresses +} + func sortedNodeExternalIDs(nodes []*api.Node) []string { nodeExternalIDs := []string{} for _, node := range nodes {