github.com/gopacket/gopacket@v1.1.0/layers/erspan2_test.go (about) 1 // Copyright 2018 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 package layers 7 8 import ( 9 "reflect" 10 "testing" 11 12 "github.com/gopacket/gopacket" 13 ) 14 15 func TestDecodeAndEncode(t *testing.T) { 16 erspan := &ERSPANII{ 17 Version: ERSPANIIVersion, 18 VLANIdentifier: 0x2aa, 19 CoS: 0x4, 20 TrunkEncap: 0x2, 21 IsTruncated: true, 22 SessionID: 0x2aa, 23 Reserved: 0x155, 24 Index: 0xF0F0F, 25 } 26 expectedBytes := []byte{0x12, 0xaa, 0x96, 0xaa, 0x15, 0x5F, 0x0F, 0x0F} 27 28 buf := gopacket.NewSerializeBuffer() 29 opts := gopacket.SerializeOptions{} 30 erspan.SerializeTo(buf, opts) 31 32 if !reflect.DeepEqual(buf.Bytes(), expectedBytes) { 33 t.Fatalf("Got %+v, expected %+v\n", buf.Bytes(), expectedBytes) 34 } 35 36 erspan2 := &ERSPANII{} 37 erspan2.DecodeFromBytes(buf.Bytes(), gopacket.NilDecodeFeedback) 38 if erspan.Version != erspan2.Version { 39 t.Fatalf("Got %+v, expected %+v\n", erspan2.Version, erspan.Version) 40 } 41 if erspan.VLANIdentifier != erspan2.VLANIdentifier { 42 t.Fatalf("Got %+v, expected %+v\n", erspan2.VLANIdentifier, erspan.VLANIdentifier) 43 } 44 if erspan.CoS != erspan2.CoS { 45 t.Fatalf("Got %+v, expected %+v\n", erspan2.CoS, erspan.CoS) 46 } 47 if erspan.TrunkEncap != erspan2.TrunkEncap { 48 t.Fatalf("Got %+v, expected %+v\n", erspan2.TrunkEncap, erspan.TrunkEncap) 49 } 50 if erspan.IsTruncated != erspan2.IsTruncated { 51 t.Fatalf("Got %+v, expected %+v\n", erspan2.IsTruncated, erspan.IsTruncated) 52 } 53 if erspan.SessionID != erspan2.SessionID { 54 t.Fatalf("Got %+v, expected %+v\n", erspan2.SessionID, erspan.SessionID) 55 } 56 if erspan.Reserved != erspan2.Reserved { 57 t.Fatalf("Got %+v, expected %+v\n", erspan2.Reserved, erspan.Reserved) 58 } 59 }