youtubebeat/vendor/github.com/elastic/beats/libbeat/common/tuples_test.go

90 lines
3.3 KiB
Go

// Licensed to Elasticsearch B.V. under one or more contributor
// license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright
// ownership. Elasticsearch B.V. licenses this file to you under
// the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
// +build !integration
package common
import (
"net"
"testing"
"github.com/stretchr/testify/assert"
)
func TestTuples_tuples_ipv4(t *testing.T) {
assert := assert.New(t)
var tuple IPPortTuple
// from net/ip.go
var v4InV6Prefix = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff}
tuple = NewIPPortTuple(4, net.IPv4(192, 168, 0, 1), 9200, net.IPv4(192, 168, 0, 2), 9201)
assert.Equal(v4InV6Prefix, tuple.raw[0:12], "prefix_src")
assert.Equal([]byte{192, 168, 0, 1}, tuple.raw[12:16], "src_ip")
assert.Equal([]byte{0x23, 0xf0}, tuple.raw[16:18], "src_port")
assert.Equal(v4InV6Prefix, tuple.raw[18:30], "prefix_dst")
assert.Equal([]byte{192, 168, 0, 2}, tuple.raw[30:34], "dst_ip")
assert.Equal([]byte{0x23, 0xf1}, tuple.raw[34:36], "dst_port")
assert.Equal(36, len(tuple.raw))
assert.Equal(v4InV6Prefix, tuple.revRaw[0:12], "rev prefix_dst")
assert.Equal([]byte{192, 168, 0, 2}, tuple.revRaw[12:16], "rev dst_ip")
assert.Equal([]byte{0x23, 0xf1}, tuple.revRaw[16:18], "rev dst_port")
assert.Equal(v4InV6Prefix, tuple.revRaw[18:30], "rev prefix_src")
assert.Equal([]byte{192, 168, 0, 1}, tuple.revRaw[30:34], "rev src_ip")
assert.Equal([]byte{0x23, 0xf0}, tuple.revRaw[34:36], "rev src_port")
assert.Equal(36, len(tuple.revRaw))
tcpTuple := TCPTupleFromIPPort(&tuple, 1)
assert.Equal(tuple.raw[:], tcpTuple.raw[0:36], "Wrong TCP tuple hashable")
assert.Equal([]byte{0, 0, 0, 1}, tcpTuple.raw[36:40], "stream_id")
}
func TestTuples_tuples_ipv6(t *testing.T) {
assert := assert.New(t)
var tuple IPPortTuple
tuple = NewIPPortTuple(16, net.ParseIP("2001:db8::1"),
9200, net.ParseIP("2001:db8::123:12:1"), 9201)
ip1 := []byte{0x20, 0x1, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1}
ip2 := []byte{0x20, 0x1, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0x1, 0x23, 0, 0x12, 0, 0x1}
assert.Equal(ip1, tuple.raw[0:16], "src_ip")
assert.Equal([]byte{0x23, 0xf0}, tuple.raw[16:18], "src_port")
assert.Equal(ip2, tuple.raw[18:34], "dst_ip")
assert.Equal([]byte{0x23, 0xf1}, tuple.raw[34:36], "dst_port")
assert.Equal(36, len(tuple.raw))
assert.Equal(ip2, tuple.revRaw[0:16], "rev dst_ip")
assert.Equal([]byte{0x23, 0xf1}, tuple.revRaw[16:18], "rev dst_port")
assert.Equal(ip1, tuple.revRaw[18:34], "rev src_ip")
assert.Equal([]byte{0x23, 0xf0}, tuple.revRaw[34:36], "rev src_port")
assert.Equal(36, len(tuple.revRaw))
tcpTuple := TCPTupleFromIPPort(&tuple, 1)
assert.Equal(tuple.raw[:], tcpTuple.raw[0:36], "Wrong TCP tuple hashable")
assert.Equal([]byte{0, 0, 0, 1}, tcpTuple.raw[36:40], "stream_id")
}