mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 09:49:50 +00:00
test ensureInternalBackendService, ensureInternalBackendServiceGroups
This commit is contained in:
parent
26c0a0d11f
commit
ac6ff68e20
@ -17,6 +17,8 @@ limitations under the License.
|
|||||||
package gce
|
package gce
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@ -45,6 +47,69 @@ func createInternalLoadBalancer(gce *GCECloud, existingFwdRule *compute.Forwardi
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestEnsureInternalBackendServiceUpdates(t *testing.T) {
|
||||||
|
vals := DefaultTestClusterValues()
|
||||||
|
nodeNames := []string{"test-node-1"}
|
||||||
|
|
||||||
|
gce, err := fakeGCECloud(projectID, region, zoneName)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
lbName := cloudprovider.GetLoadBalancerName(fakeApiService)
|
||||||
|
nodes, err := createAndInsertNodes(gce, nodeNames, zoneName)
|
||||||
|
igName := makeInstanceGroupName(clusterID)
|
||||||
|
igLinks, err := gce.ensureInternalInstanceGroups(igName, nodes)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
sharedBackend := shareBackendService(fakeApiService)
|
||||||
|
bsName := makeBackendServiceName(lbName, clusterID, sharedBackend, cloud.SchemeInternal, "TCP", fakeApiService.Spec.SessionAffinity)
|
||||||
|
err = gce.ensureInternalBackendService(bsName, "description", fakeApiService.Spec.SessionAffinity, cloud.SchemeInternal, "TCP", igLinks, "")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Update the Internal Backend Service with a new ServiceAffinity
|
||||||
|
err = gce.ensureInternalBackendService(bsName, "description", v1.ServiceAffinityNone, cloud.SchemeInternal, "TCP", igLinks, "")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
bs, err := gce.GetRegionBackendService(bsName, gce.region)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, bs.SessionAffinity, strings.ToUpper(string(v1.ServiceAffinityNone)))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEnsureInternalBackendServiceGroups(t *testing.T) {
|
||||||
|
projectID := "test-project"
|
||||||
|
region := "us-central1"
|
||||||
|
zoneName := "us-central1-b"
|
||||||
|
clusterID := "test-cluster-id"
|
||||||
|
nodeNames := []string{"test-node-1"}
|
||||||
|
|
||||||
|
gce, err := fakeGCECloud(projectID, region, zoneName)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
lbName := cloudprovider.GetLoadBalancerName(fakeApiService)
|
||||||
|
nodes, err := createAndInsertNodes(gce, nodeNames, zoneName)
|
||||||
|
igName := makeInstanceGroupName(clusterID)
|
||||||
|
igLinks, err := gce.ensureInternalInstanceGroups(igName, nodes)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
sharedBackend := shareBackendService(fakeApiService)
|
||||||
|
bsName := makeBackendServiceName(lbName, clusterID, sharedBackend, cloud.SchemeInternal, "TCP", fakeApiService.Spec.SessionAffinity)
|
||||||
|
err = gce.ensureInternalBackendService(bsName, "description", fakeApiService.Spec.SessionAffinity, cloud.SchemeInternal, "TCP", igLinks, "")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
// Update the BackendService with new Instances
|
||||||
|
newNodeNames := []string{"new-test-node-1", "new-test-node-2"}
|
||||||
|
err = gce.ensureInternalBackendServiceGroups(bsName, newNodeNames)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
bs, err := gce.GetRegionBackendService(bsName, gce.region)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
// Check that the instances are updated
|
||||||
|
newNodes, err := createAndInsertNodes(gce, newNodeNames, zoneName)
|
||||||
|
newIgLinks, err := gce.ensureInternalInstanceGroups(igName, newNodes)
|
||||||
|
backends := backendsFromGroupLinks(newIgLinks)
|
||||||
|
assert.Equal(t, bs.Backends, backends)
|
||||||
|
}
|
||||||
|
|
||||||
func TestEnsureInternalLoadBalancer(t *testing.T) {
|
func TestEnsureInternalLoadBalancer(t *testing.T) {
|
||||||
projectID := "test-project"
|
projectID := "test-project"
|
||||||
region := "us-central1"
|
region := "us-central1"
|
||||||
@ -108,6 +173,8 @@ func TestEnsureInternalLoadBalancer(t *testing.T) {
|
|||||||
assert.Equal(t, lbName, fwdRule.Name)
|
assert.Equal(t, lbName, fwdRule.Name)
|
||||||
assert.Equal(t, "TCP", fwdRule.IPProtocol)
|
assert.Equal(t, "TCP", fwdRule.IPProtocol)
|
||||||
assert.Equal(t, backendServiceLink, fwdRule.BackendService)
|
assert.Equal(t, backendServiceLink, fwdRule.BackendService)
|
||||||
|
// if no Subnetwork specified, defaults to the GCE NetworkURL
|
||||||
|
assert.Equal(t, gce.NetworkURL(), fwdRule.Subnetwork)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEnsureInternalLoadBalancerWithExistingResources(t *testing.T) {
|
func TestEnsureInternalLoadBalancerWithExistingResources(t *testing.T) {
|
||||||
@ -161,7 +228,7 @@ func TestEnsureInternalLoadBalancerClearPreviousResources(t *testing.T) {
|
|||||||
|
|
||||||
// Create a ForwardingRule that's missing an IP address
|
// Create a ForwardingRule that's missing an IP address
|
||||||
existingFwdRule := &compute.ForwardingRule{
|
existingFwdRule := &compute.ForwardingRule{
|
||||||
Name: "Bad Name",
|
Name: lbName,
|
||||||
IPAddress: "",
|
IPAddress: "",
|
||||||
Ports: []string{"123"},
|
Ports: []string{"123"},
|
||||||
IPProtocol: "TCP",
|
IPProtocol: "TCP",
|
||||||
@ -196,7 +263,7 @@ func TestEnsureInternalLoadBalancerClearPreviousResources(t *testing.T) {
|
|||||||
sharedBackend := shareBackendService(fakeApiService)
|
sharedBackend := shareBackendService(fakeApiService)
|
||||||
backendServiceName := makeBackendServiceName(lbName, clusterID, sharedBackend, cloud.SchemeInternal, "TCP", fakeApiService.Spec.SessionAffinity)
|
backendServiceName := makeBackendServiceName(lbName, clusterID, sharedBackend, cloud.SchemeInternal, "TCP", fakeApiService.Spec.SessionAffinity)
|
||||||
existingBS := &compute.BackendService{
|
existingBS := &compute.BackendService{
|
||||||
Name: "Bad Name",
|
Name: lbName,
|
||||||
Protocol: "TCP",
|
Protocol: "TCP",
|
||||||
HealthChecks: []string{existingHC.SelfLink},
|
HealthChecks: []string{existingHC.SelfLink},
|
||||||
SessionAffinity: translateAffinityType(fakeApiService.Spec.SessionAffinity),
|
SessionAffinity: translateAffinityType(fakeApiService.Spec.SessionAffinity),
|
||||||
@ -267,10 +334,20 @@ func TestUpdateInternalLoadBalancerBackendServices(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Check that the new BackendService has the correct attributes
|
// Check that the new BackendService has the correct attributes
|
||||||
|
url_base := fmt.Sprintf("https://www.googleapis.com/compute/v1/projects/%s", vals.ProjectID)
|
||||||
|
|
||||||
assert.NotEqual(t, existingBS, bs)
|
assert.NotEqual(t, existingBS, bs)
|
||||||
assert.NotEmpty(t, bs.SelfLink)
|
assert.Equal(
|
||||||
assert.NotEmpty(t, bs.Description)
|
t,
|
||||||
assert.NotEmpty(t, bs.HealthChecks)
|
bs.SelfLink,
|
||||||
|
fmt.Sprintf("%s/regions/%s/backendServices/%s", url_base, vals.Region, bs.Name),
|
||||||
|
)
|
||||||
|
assert.Equal(t, bs.Description, `{"kubernetes.io/service-name":"/"}`)
|
||||||
|
assert.Equal(
|
||||||
|
t,
|
||||||
|
bs.HealthChecks,
|
||||||
|
[]string{fmt.Sprintf("%s/healthChecks/k8s-%s-node", url_base, vals.ClusterID)},
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateInternalLoadBalancerNodes(t *testing.T) {
|
func TestUpdateInternalLoadBalancerNodes(t *testing.T) {
|
||||||
@ -300,10 +377,10 @@ func TestUpdateInternalLoadBalancerNodes(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, 1, len(instances))
|
assert.Equal(t, 1, len(instances))
|
||||||
assert.Equal(
|
assert.Contains(
|
||||||
t,
|
t,
|
||||||
"https://www.googleapis.com/compute/v1/projects/test-project/zones/us-central1-b/instances/test-node-2",
|
|
||||||
instances[0].Instance,
|
instances[0].Instance,
|
||||||
|
fmt.Sprintf("projects/%s/zones/%s/instances/%s", projectID, zoneName, newNodeName),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user