The tracker is responsible for managing the AWSVPC route tables which is used to implement the underlay routing based on VPC.
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package tracker
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/weaveworks/weave/net/address"
|
|
)
|
|
|
|
var (
|
|
r0to127 = cidr("10.0.0.0", "10.0.0.127")
|
|
r128to255 = cidr("10.0.0.128", "10.0.0.255")
|
|
r0to255 = cidr("10.0.0.0", "10.0.0.255")
|
|
r1dot0to255 = cidr("10.0.1.0", "10.0.1.255")
|
|
r2dot0to255 = cidr("10.0.2.0", "10.0.2.255")
|
|
)
|
|
|
|
func TestRemoveCommon(t *testing.T) {
|
|
a := []address.CIDR{r0to127, r1dot0to255}
|
|
b := []address.CIDR{r1dot0to255, r2dot0to255}
|
|
newA, newB := removeCommon(a, b)
|
|
require.Equal(t, []address.CIDR{r0to127}, newA)
|
|
require.Equal(t, []address.CIDR{r2dot0to255}, newB)
|
|
}
|
|
|
|
func TestMerge(t *testing.T) {
|
|
ranges := []address.Range{
|
|
r0to127.Range(),
|
|
r128to255.Range(),
|
|
r2dot0to255.Range(),
|
|
}
|
|
require.Equal(t, []address.Range{r0to255.Range(), r2dot0to255.Range()}, merge(ranges))
|
|
}
|
|
|
|
// Helper
|
|
|
|
// TODO(mp) DRY with helpers of other tests.
|
|
|
|
func ip(s string) address.Address {
|
|
addr, _ := address.ParseIP(s)
|
|
return addr
|
|
}
|
|
|
|
// [start; end]
|
|
func cidr(start, end string) address.CIDR {
|
|
c := address.Range{Start: ip(start), End: ip(end) + 1}.CIDRs()
|
|
if len(c) != 1 {
|
|
panic("invalid cidr")
|
|
}
|
|
return c[0]
|
|
}
|