summaryrefslogtreecommitdiff
path: root/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/defrag/lcmdefrag/lcmdefrag_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/defrag/lcmdefrag/lcmdefrag_test.go')
-rw-r--r--src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/defrag/lcmdefrag/lcmdefrag_test.go105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/defrag/lcmdefrag/lcmdefrag_test.go b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/defrag/lcmdefrag/lcmdefrag_test.go
new file mode 100644
index 00000000000..3d54191b4f5
--- /dev/null
+++ b/src/mongo/gotools/src/github.com/mongodb/mongo-tools/vendor/github.com/google/gopacket/defrag/lcmdefrag/lcmdefrag_test.go
@@ -0,0 +1,105 @@
+// Copyright 2018 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 lcmdefrag
+
+import (
+ "testing"
+
+ "github.com/google/gopacket"
+ "github.com/google/gopacket/layers"
+)
+
+var (
+ fragmentOne = []byte{
+ 0x4c, 0x43, 0x30, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d,
+ 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x02, 0x4c, 0x43, 0x4d, 0x5f,
+ 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x00, 0x6c, 0x63,
+ 0x6d, 0x20, 0x73, 0x65, 0x6c, 0x66, 0x20, 0x74, 0x65, 0x73, 0x74,
+ }
+
+ fragmentTwo = []byte{
+ 0x4c, 0x43, 0x30, 0x33, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d,
+ 0x00, 0x00, 0x00, 0x2d, 0x00, 0x01, 0x00, 0x02, 0x6c, 0x63, 0x6d, 0x20,
+ 0x73, 0x65, 0x6c, 0x66, 0x20, 0x74, 0x65, 0x73, 0x74,
+ }
+
+ completePacket = []byte{
+ 0x4c, 0x43, 0x30, 0x32, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x43, 0x4d, 0x5f,
+ 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x00, 0x6c, 0x63,
+ 0x6d, 0x20, 0x73, 0x65, 0x6c, 0x66, 0x20, 0x74, 0x65, 0x73, 0x74,
+ }
+)
+
+func TestOrderedLCMDefrag(t *testing.T) {
+ defragmenter := NewLCMDefragmenter()
+ var err error
+
+ packet := gopacket.NewPacket(fragmentOne, layers.LayerTypeLCM, gopacket.NoCopy)
+ lcm := packet.Layer(layers.LayerTypeLCM).(*layers.LCM)
+
+ lcm, err = defragmenter.Defrag(lcm)
+ if lcm != nil {
+ t.Fatal("Returned incomplete LCM message.")
+ }
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ packet = gopacket.NewPacket(fragmentTwo, layers.LayerTypeLCM, gopacket.NoCopy)
+ lcm = packet.Layer(layers.LayerTypeLCM).(*layers.LCM)
+
+ lcm, err = defragmenter.Defrag(lcm)
+ if lcm == nil {
+ t.Fatal("Did not receive defragmented LCM message.")
+ }
+ if err != nil {
+ t.Fatal(err)
+ }
+}
+
+func TestUnorderedLCMDefrag(t *testing.T) {
+ defragmenter := NewLCMDefragmenter()
+ var err error
+
+ packet := gopacket.NewPacket(fragmentTwo, layers.LayerTypeLCM, gopacket.NoCopy)
+ lcm := packet.Layer(layers.LayerTypeLCM).(*layers.LCM)
+
+ lcm, err = defragmenter.Defrag(lcm)
+ if lcm != nil {
+ t.Fatal("Returned incomplete LCM message.")
+ }
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ packet = gopacket.NewPacket(fragmentOne, layers.LayerTypeLCM, gopacket.NoCopy)
+ lcm = packet.Layer(layers.LayerTypeLCM).(*layers.LCM)
+
+ lcm, err = defragmenter.Defrag(lcm)
+ if lcm == nil {
+ t.Fatal("Did not receive defragmented LCM message.")
+ }
+ if err != nil {
+ t.Fatal(err)
+ }
+}
+
+func TestNonLCMDefrag(t *testing.T) {
+ defragmenter := NewLCMDefragmenter()
+ var err error
+
+ packet := gopacket.NewPacket(completePacket, layers.LayerTypeLCM, gopacket.NoCopy)
+ lcm := packet.Layer(layers.LayerTypeLCM).(*layers.LCM)
+
+ lcm, err = defragmenter.Defrag(lcm)
+ if lcm == nil {
+ t.Fatal("Did not receive complete LCM message.")
+ }
+ if err != nil {
+ t.Fatal(err)
+ }
+}