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  }