~ubuntu-branches/ubuntu/vivid/juju-core/vivid-proposed

« back to all changes in this revision

Viewing changes to src/code.google.com/p/go.net/ipv4/header_test.go

  • Committer: Package Import Robot
  • Author(s): Curtis C. Hovey
  • Date: 2015-09-29 19:43:29 UTC
  • mfrom: (47.1.4 wily-proposed)
  • Revision ID: package-import@ubuntu.com-20150929194329-9y496tbic30hc7vp
Tags: 1.24.6-0ubuntu1~15.04.1
Backport of 1.24.6 from wily. (LP: #1500916, #1497087)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// Copyright 2012 The Go Authors.  All rights reserved.
2
 
// Use of this source code is governed by a BSD-style
3
 
// license that can be found in the LICENSE file.
4
 
 
5
 
package ipv4
6
 
 
7
 
import (
8
 
        "bytes"
9
 
        "net"
10
 
        "reflect"
11
 
        "runtime"
12
 
        "testing"
13
 
)
14
 
 
15
 
var (
16
 
        wireHeaderFromKernel = [HeaderLen]byte{
17
 
                0x45, 0x01, 0xbe, 0xef,
18
 
                0xca, 0xfe, 0x45, 0xdc,
19
 
                0xff, 0x01, 0xde, 0xad,
20
 
                172, 16, 254, 254,
21
 
                192, 168, 0, 1,
22
 
        }
23
 
        wireHeaderToKernel = [HeaderLen]byte{
24
 
                0x45, 0x01, 0xbe, 0xef,
25
 
                0xca, 0xfe, 0x45, 0xdc,
26
 
                0xff, 0x01, 0xde, 0xad,
27
 
                172, 16, 254, 254,
28
 
                192, 168, 0, 1,
29
 
        }
30
 
        wireHeaderFromTradBSDKernel = [HeaderLen]byte{
31
 
                0x45, 0x01, 0xdb, 0xbe,
32
 
                0xca, 0xfe, 0xdc, 0x45,
33
 
                0xff, 0x01, 0xde, 0xad,
34
 
                172, 16, 254, 254,
35
 
                192, 168, 0, 1,
36
 
        }
37
 
        wireHeaderFromFreeBSD10Kernel = [HeaderLen]byte{
38
 
                0x45, 0x01, 0xef, 0xbe,
39
 
                0xca, 0xfe, 0xdc, 0x45,
40
 
                0xff, 0x01, 0xde, 0xad,
41
 
                172, 16, 254, 254,
42
 
                192, 168, 0, 1,
43
 
        }
44
 
        wireHeaderToTradBSDKernel = [HeaderLen]byte{
45
 
                0x45, 0x01, 0xef, 0xbe,
46
 
                0xca, 0xfe, 0xdc, 0x45,
47
 
                0xff, 0x01, 0xde, 0xad,
48
 
                172, 16, 254, 254,
49
 
                192, 168, 0, 1,
50
 
        }
51
 
        // TODO(mikio): Add platform dependent wire header formats when
52
 
        // we support new platforms.
53
 
 
54
 
        testHeader = &Header{
55
 
                Version:  Version,
56
 
                Len:      HeaderLen,
57
 
                TOS:      1,
58
 
                TotalLen: 0xbeef,
59
 
                ID:       0xcafe,
60
 
                Flags:    DontFragment,
61
 
                FragOff:  1500,
62
 
                TTL:      255,
63
 
                Protocol: 1,
64
 
                Checksum: 0xdead,
65
 
                Src:      net.IPv4(172, 16, 254, 254),
66
 
                Dst:      net.IPv4(192, 168, 0, 1),
67
 
        }
68
 
)
69
 
 
70
 
func TestMarshalHeader(t *testing.T) {
71
 
        b, err := testHeader.Marshal()
72
 
        if err != nil {
73
 
                t.Fatalf("ipv4.Header.Marshal failed: %v", err)
74
 
        }
75
 
        var wh []byte
76
 
        if supportsNewIPInput {
77
 
                wh = wireHeaderToKernel[:]
78
 
        } else {
79
 
                wh = wireHeaderToTradBSDKernel[:]
80
 
        }
81
 
        if !bytes.Equal(b, wh) {
82
 
                t.Fatalf("ipv4.Header.Marshal failed: %#v not equal %#v", b, wh)
83
 
        }
84
 
}
85
 
 
86
 
func TestParseHeader(t *testing.T) {
87
 
        var wh []byte
88
 
        if supportsNewIPInput {
89
 
                wh = wireHeaderFromKernel[:]
90
 
        } else {
91
 
                if runtime.GOOS == "freebsd" && freebsdVersion >= 1000000 {
92
 
                        wh = wireHeaderFromFreeBSD10Kernel[:]
93
 
                } else {
94
 
                        wh = wireHeaderFromTradBSDKernel[:]
95
 
                }
96
 
        }
97
 
        h, err := ParseHeader(wh)
98
 
        if err != nil {
99
 
                t.Fatalf("ipv4.ParseHeader failed: %v", err)
100
 
        }
101
 
        if !reflect.DeepEqual(h, testHeader) {
102
 
                t.Fatalf("ipv4.ParseHeader failed: %#v not equal %#v", h, testHeader)
103
 
        }
104
 
}