pcap_test.go (1403B)
1 package pcap 2 3 import ( 4 "bytes" 5 "os" 6 "testing" 7 "time" 8 ) 9 10 func TestDecode(t *testing.T) { 11 f, err := os.Open("testdata/text_udp.pcap") 12 if err != nil { 13 t.Fatal(err) 14 } 15 defer f.Close() 16 17 gheader := GlobalHeader{ 18 SnapLen: 524288, 19 } 20 header := Header{ 21 // from tcpdump -tt -r testdata/text_udp.pcap 22 Time: time.UnixMicro(1721314372204926), 23 OrigLen: 45, 24 } 25 26 capture, err := Decode(f) 27 if err != nil { 28 t.Fatal(err) 29 } 30 31 if len(capture.Packets) != 1 { 32 t.Fatalf("expected 1 packet, found %d", len(capture.Packets)) 33 } 34 if capture.Header != gheader { 35 t.Errorf("decoded global header %v, want %v", capture.Header, gheader) 36 } 37 if capture.Packets[0].Header != header { 38 t.Errorf("decoded packet header %v, want %v", capture.Packets[0].Header, header) 39 } 40 } 41 42 func TestEncode(t *testing.T) { 43 want, err := os.ReadFile("testdata/text_udp.pcap") 44 if err != nil { 45 t.Fatal(err) 46 } 47 capture, err := Decode(bytes.NewReader(want)) 48 if err != nil { 49 t.Fatal(err) 50 } 51 buf := &bytes.Buffer{} 52 if _, err := Encode(buf, capture); err != nil { 53 t.Fatal(err) 54 } 55 if !bytes.Equal(buf.Bytes(), want) { 56 t.Errorf("Encode(%v) = %x, want %x", capture, buf.Bytes(), want) 57 } 58 } 59 60 func TestTimestamp(t *testing.T) { 61 want := [2]uint32{1, 100} 62 when := time.Unix(1, 100) 63 sec, nsec := timestamp(when) 64 got := [2]uint32{sec, nsec} 65 if got != want { 66 t.Errorf("timestamp(%s) = %v, want %v", when, got, want) 67 } 68 }