mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-05 03:01:11 +00:00
72 lines
1.7 KiB
Go
72 lines
1.7 KiB
Go
// Copyright 2012 Google, Inc. All rights reserved.
|
|
//
|
|
// Use of this source code is governed by a BSD-style license
|
|
// that can be found in the LICENSE file in the root of the source
|
|
// tree.
|
|
|
|
package pcapgo
|
|
|
|
import (
|
|
"bytes"
|
|
"github.com/google/gopacket"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestWriteHeader(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
w := NewWriter(&buf)
|
|
w.WriteFileHeader(0x1234, 0x56)
|
|
want := []byte{
|
|
0xd4, 0xc3, 0xb2, 0xa1, 0x02, 0x00, 0x04, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x34, 0x12, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00,
|
|
}
|
|
if got := buf.Bytes(); !bytes.Equal(got, want) {
|
|
t.Errorf("buf mismatch:\nwant: %+v\ngot: %+v", want, got)
|
|
}
|
|
}
|
|
|
|
func TestWritePacket(t *testing.T) {
|
|
ci := gopacket.CaptureInfo{
|
|
Timestamp: time.Unix(0x01020304, 0xAA*1000),
|
|
Length: 0xABCD,
|
|
CaptureLength: 10,
|
|
}
|
|
data := []byte{9, 8, 7, 6, 5, 4, 3, 2, 1, 0}
|
|
var buf bytes.Buffer
|
|
w := NewWriter(&buf)
|
|
w.WritePacket(ci, data)
|
|
want := []byte{
|
|
0x04, 0x03, 0x02, 0x01, 0xAA, 0x00, 0x00, 0x00,
|
|
0x0A, 0x00, 0x00, 0x00, 0xCD, 0xAB, 0x00, 0x00,
|
|
0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
|
|
}
|
|
if got := buf.Bytes(); !bytes.Equal(got, want) {
|
|
t.Errorf("buf mismatch:\nwant: %+v\ngot: %+v", want, got)
|
|
}
|
|
}
|
|
|
|
func TestCaptureInfoErrors(t *testing.T) {
|
|
data := []byte{1, 2, 3, 4}
|
|
ts := time.Unix(0, 0)
|
|
for _, test := range []gopacket.CaptureInfo{
|
|
gopacket.CaptureInfo{
|
|
Timestamp: ts,
|
|
Length: 5,
|
|
CaptureLength: 5,
|
|
},
|
|
gopacket.CaptureInfo{
|
|
Timestamp: ts,
|
|
Length: 3,
|
|
CaptureLength: 4,
|
|
},
|
|
} {
|
|
var buf bytes.Buffer
|
|
w := NewWriter(&buf)
|
|
if err := w.WritePacket(test, data); err == nil {
|
|
t.Errorf("CaptureInfo %+v should have error", test)
|
|
}
|
|
}
|
|
}
|