| // Copyright 2012 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package net | |
| import "testing" | |
| const ( | |
| numOfTestIPv4MCAddrs = 14 | |
| numOfTestIPv6MCAddrs = 18 | |
| ) | |
| var ( | |
| igmpInterfaceTable = []Interface{ | |
| {Name: "lo"}, | |
| {Name: "eth0"}, {Name: "eth1"}, {Name: "eth2"}, | |
| {Name: "eth0.100"}, {Name: "eth0.101"}, {Name: "eth0.102"}, {Name: "eth0.103"}, | |
| {Name: "device1tap2"}, | |
| } | |
| igmp6InterfaceTable = []Interface{ | |
| {Name: "lo"}, | |
| {Name: "eth0"}, {Name: "eth1"}, {Name: "eth2"}, | |
| {Name: "eth0.100"}, {Name: "eth0.101"}, {Name: "eth0.102"}, {Name: "eth0.103"}, | |
| {Name: "device1tap2"}, | |
| {Name: "pan0"}, | |
| } | |
| ) | |
| func TestParseProcNet(t *testing.T) { | |
| defer func() { | |
| if p := recover(); p != nil { | |
| t.Fatalf("panicked") | |
| } | |
| }() | |
| var ifmat4 []Addr | |
| for _, ifi := range igmpInterfaceTable { | |
| ifmat := parseProcNetIGMP("testdata/igmp", &ifi) | |
| ifmat4 = append(ifmat4, ifmat...) | |
| } | |
| if len(ifmat4) != numOfTestIPv4MCAddrs { | |
| t.Fatalf("parseProcNetIGMP returns %v addresses, expected %v", len(ifmat4), numOfTestIPv4MCAddrs) | |
| } | |
| var ifmat6 []Addr | |
| for _, ifi := range igmp6InterfaceTable { | |
| ifmat := parseProcNetIGMP6("testdata/igmp6", &ifi) | |
| ifmat6 = append(ifmat6, ifmat...) | |
| } | |
| if len(ifmat6) != numOfTestIPv6MCAddrs { | |
| t.Fatalf("parseProcNetIGMP6 returns %v addresses, expected %v", len(ifmat6), numOfTestIPv6MCAddrs) | |
| } | |
| } |