mirror of
https://github.com/weaveworks/scope.git
synced 2026-08-18 03:46:45 +00:00
@@ -2,6 +2,7 @@ package render_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"testing"
|
||||
|
||||
"github.com/weaveworks/common/test"
|
||||
@@ -45,10 +46,11 @@ type testcase struct {
|
||||
}
|
||||
|
||||
func testMap(t *testing.T, f render.MapFunc, input testcase) {
|
||||
localNetworks := report.NewNetworks()
|
||||
if err := localNetworks.AddCIDR("1.2.3.0/16"); err != nil {
|
||||
_, ipNet, err := net.ParseCIDR("1.2.3.0/16")
|
||||
if err != nil {
|
||||
t.Fatalf(err.Error())
|
||||
}
|
||||
localNetworks := report.Networks([]*net.IPNet{ipNet})
|
||||
if have := f(input.n, localNetworks); input.ok != (len(have) > 0) {
|
||||
name := input.name
|
||||
if name == "" {
|
||||
|
||||
+15
-3
@@ -1,6 +1,7 @@
|
||||
package render
|
||||
|
||||
import (
|
||||
"net"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
@@ -67,15 +68,26 @@ func isKnownService(hostname string) bool {
|
||||
// used to determine which nodes in the report are "remote", i.e. outside of
|
||||
// our infrastructure.
|
||||
func LocalNetworks(r report.Report) report.Networks {
|
||||
networks := report.NewNetworks()
|
||||
var (
|
||||
result = report.Networks{}
|
||||
networks = map[string]struct{}{}
|
||||
)
|
||||
|
||||
for _, topology := range []report.Topology{r.Host, r.Overlay} {
|
||||
for _, md := range topology.Nodes {
|
||||
nets, _ := md.Sets.Lookup(host.LocalNetworks)
|
||||
for _, s := range nets {
|
||||
networks.AddCIDR(s)
|
||||
_, ipNet, err := net.ParseCIDR(s)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
_, ok := networks[ipNet.String()]
|
||||
if !ok {
|
||||
result = append(result, ipNet)
|
||||
networks[ipNet.String()] = struct{}{}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return networks
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package render_test
|
||||
|
||||
import (
|
||||
"net"
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
@@ -29,14 +30,21 @@ func TestReportLocalNetworks(t *testing.T) {
|
||||
},
|
||||
},
|
||||
})
|
||||
want := report.NewNetworks()
|
||||
for _, cidr := range []string{"10.0.0.1/8", "192.168.1.1/24", "10.32.0.1/12"} {
|
||||
if err := want.AddCIDR(cidr); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
want := report.Networks([]*net.IPNet{
|
||||
mustParseCIDR("10.0.0.1/8"),
|
||||
mustParseCIDR("192.168.1.1/24"),
|
||||
mustParseCIDR("10.32.0.1/12"),
|
||||
})
|
||||
have := render.LocalNetworks(r)
|
||||
if !reflect.DeepEqual(want, have) {
|
||||
t.Errorf("%s", test.Diff(want, have))
|
||||
}
|
||||
}
|
||||
|
||||
func mustParseCIDR(s string) *net.IPNet {
|
||||
_, ipNet, err := net.ParseCIDR(s)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return ipNet
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user