35e9c707dfa48ddf762938c15535267a19373500
[govpp.git] / vendor / github.com / google / gopacket / layers / usb_test.go
1 // Copyright 2014, Google, Inc. All rights reserved.
2 //
3 // Use of this source code is governed by a BSD-style license
4 // that can be found in the LICENSE file in the root of the source
5 // tree.
6
7 package layers
8
9 import (
10         _ "fmt"
11         "github.com/google/gopacket"
12         "reflect"
13         "testing"
14 )
15
16 // Generator python layers/test_creator.py --link_type USB --name USB dongle.pcap
17 // http://wiki.wireshark.org/SampleCaptures#Sample_Captures
18
19 // testPacketUSB0 is the packet:
20 //   02:41:04.689546 INTERRUPT COMPLETE to 2:1:1
21 //      0x0000:  0038 4a3b 0088 ffff 4301 8101 0200 2d00  .8J;....C.....-.
22 //      0x0010:  c0d3 5b50 0000 0000 8a85 0a00 0000 0000  ..[P............
23 //      0x0020:  0100 0000 0100 0000 0000 0000 0000 0000  ................
24 //      0x0030:  8000 0000 0000 0000 0002 0000 0000 0000  ................
25 //      0x0040:  04                                       .
26 var testPacketUSB0 = []byte{
27         0x00, 0x38, 0x4a, 0x3b, 0x00, 0x88, 0xff, 0xff, 0x43, 0x01, 0x81, 0x01, 0x02, 0x00, 0x2d, 0x00,
28         0xc0, 0xd3, 0x5b, 0x50, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x85, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
29         0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
30         0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
31         0x04,
32 }
33
34 func TestPacketUSB0(t *testing.T) {
35         p := gopacket.NewPacket(testPacketUSB0, LinkTypeLinuxUSB, gopacket.Default)
36         if p.ErrorLayer() != nil {
37                 t.Error("Failed to decode packet:", p.ErrorLayer().Error())
38         }
39         checkLayers(p, []gopacket.LayerType{LayerTypeUSB, LayerTypeUSBInterrupt}, t)
40
41         if got, ok := p.Layer(LayerTypeUSB).(*USB); ok {
42                 want := &USB{
43                         BaseLayer: BaseLayer{
44                                 Contents: []uint8{0x0, 0x38, 0x4a, 0x3b, 0x0, 0x88, 0xff, 0xff, 0x43, 0x1, 0x81, 0x1, 0x2, 0x0, 0x2d, 0x0, 0xc0, 0xd3, 0x5b, 0x50, 0x0, 0x0, 0x0, 0x0, 0x8a, 0x85, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0},
45                                 Payload:  []uint8{0x4},
46                         },
47                         ID:             0xffff88003b4a3800,
48                         EventType:      USBEventTypeComplete,
49                         TransferType:   USBTransportTypeInterrupt,
50                         Direction:      0x1,
51                         EndpointNumber: 0x1,
52                         DeviceAddress:  0x1,
53                         BusID:          0x2,
54                         TimestampSec:   1348195264,
55                         TimestampUsec:  689546,
56                         Setup:          false,
57                         Data:           true,
58                         Status:         0,
59                         UrbLength:      0x1,
60                         UrbDataLength:  0x1,
61                 }
62
63                 if !reflect.DeepEqual(got, want) {
64                         t.Errorf("USB packet processing failed:\ngot  :\n%#v\n\nwant :\n%#v\n\n", got, want)
65                 }
66         }
67
68 }
69 func BenchmarkDecodePacketUSB0(b *testing.B) {
70         for i := 0; i < b.N; i++ {
71                 gopacket.NewPacket(testPacketUSB0, LinkTypeLinuxUSB, gopacket.NoCopy)
72         }
73 }