1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- Copyright 2017 The Kubernetes Authors.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- package ipam
- import (
- "net"
- "testing"
- "k8s.io/kubernetes/pkg/controller/nodeipam/ipam/cidrset"
- "k8s.io/kubernetes/pkg/controller/nodeipam/ipam/test"
- )
- func TestOccupyServiceCIDR(t *testing.T) {
- const clusterCIDR = "10.1.0.0/16"
- TestCase:
- for _, tc := range []struct {
- serviceCIDR string
- }{
- {"10.0.255.0/24"},
- {"10.1.0.0/24"},
- {"10.1.255.0/24"},
- {"10.2.0.0/24"},
- } {
- serviceCIDR := test.MustParseCIDR(tc.serviceCIDR)
- set, err := cidrset.NewCIDRSet(test.MustParseCIDR(clusterCIDR), 24)
- if err != nil {
- t.Errorf("test case %+v: NewCIDRSet() = %v, want nil", tc, err)
- }
- if err := occupyServiceCIDR(set, test.MustParseCIDR(clusterCIDR), serviceCIDR); err != nil {
- t.Errorf("test case %+v: occupyServiceCIDR() = %v, want nil", tc, err)
- }
- // Allocate until full.
- var cidrs []*net.IPNet
- for {
- cidr, err := set.AllocateNext()
- if err != nil {
- if err == cidrset.ErrCIDRRangeNoCIDRsRemaining {
- break
- }
- t.Errorf("set.AllocateNext() = %v, want %v", err, cidrset.ErrCIDRRangeNoCIDRsRemaining)
- continue TestCase
- }
- cidrs = append(cidrs, cidr)
- }
- // No allocated CIDR range should intersect with serviceCIDR.
- for _, c := range cidrs {
- if c.Contains(serviceCIDR.IP) || serviceCIDR.Contains(c.IP) {
- t.Errorf("test case %+v: allocated CIDR %v from service range", tc, c)
- }
- }
- }
- }
|