streaming

Media streaming and broadcast systems in Go
Log | Files | Refs | README | LICENSE

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 }