mirror of
https://github.com/danderson/netboot.git
synced 2025-08-11 00:57:11 +02:00
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package pcap
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/kr/pretty"
|
|
)
|
|
|
|
func TestFiles(t *testing.T) {
|
|
for _, fname := range []string{"usec", "nsec"} {
|
|
f, err := os.Open(fmt.Sprintf("testdata/%s.pcap", fname))
|
|
if err != nil {
|
|
t.Fatalf("Opening test input file: %s", err)
|
|
}
|
|
r, err := NewReader(f)
|
|
if err != nil {
|
|
t.Fatalf("Creating pcap reader: %s", err)
|
|
}
|
|
if r.LinkType != LinkEthernet {
|
|
t.Errorf("Expected link type %d, got %d", LinkEthernet, r.LinkType)
|
|
}
|
|
pkts := []*Packet{}
|
|
ReadLoop:
|
|
for {
|
|
pkt, err := r.Next()
|
|
if err != nil {
|
|
if err == io.EOF {
|
|
break ReadLoop
|
|
}
|
|
t.Fatalf("Unexpected error reading packets: %s", err)
|
|
}
|
|
pkts = append(pkts, pkt)
|
|
}
|
|
res := pretty.Sprintf("%# v", pkts)
|
|
expectedFile := fmt.Sprintf("testdata/%s.parsed", fname)
|
|
expected, err := ioutil.ReadFile(expectedFile)
|
|
if err != nil {
|
|
t.Fatalf("Reading expected file: %s", err)
|
|
}
|
|
if res != string(expected) {
|
|
if os.Getenv("UPDATE_TESTDATA") != "" {
|
|
ioutil.WriteFile(expectedFile, []byte(res), 0644)
|
|
t.Errorf("%s.pcap didn't decode to %s.parsed (updated %s.parsed)", fname, fname, fname)
|
|
} else {
|
|
t.Fatalf("%s.pcap didn't decode to %s.parsed (rerun with UPDATE_TESTDATA=1 to get diff)", fname, fname)
|
|
}
|
|
}
|
|
}
|
|
}
|