github.com/cilium/cilium@v1.16.2/pkg/monitor/dissect_test.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package monitor
     5  
     6  import (
     7  	"fmt"
     8  	"net"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestDissectSummary(t *testing.T) {
    15  
    16  	srcMAC := "01:23:45:67:89:ab"
    17  	dstMAC := "02:33:45:67:89:ab"
    18  
    19  	srcIP := "1.2.3.4"
    20  	dstIP := "5.6.7.8"
    21  
    22  	sport := "80"
    23  	dport := "443"
    24  
    25  	// Generated in scapy:
    26  	// Ether(src="01:23:45:67:89:ab", dst="02:33:45:67:89:ab")/IP(src="1.2.3.4",dst="5.6.7.8")/TCP(sport=80,dport=443)
    27  	packetData := []byte{2, 51, 69, 103, 137, 171, 1, 35, 69, 103, 137, 171, 8, 0, 69, 0, 0, 40, 0, 1, 0, 0, 64, 6, 106, 188, 1, 2, 3, 4, 5, 6, 7, 8, 0, 80, 1, 187, 0, 0, 0, 0, 0, 0, 0, 0, 80, 2, 32, 0, 125, 196, 0, 0}
    28  
    29  	summary := GetDissectSummary(packetData)
    30  
    31  	require.NotEqual(t, "", summary.Ethernet)
    32  	require.NotEqual(t, "", summary.IPv4)
    33  	require.NotEqual(t, "", summary.TCP)
    34  
    35  	require.Equal(t, srcMAC, summary.L2.Src)
    36  	require.Equal(t, dstMAC, summary.L2.Dst)
    37  
    38  	require.Equal(t, srcIP, summary.L3.Src)
    39  	require.Equal(t, dstIP, summary.L3.Dst)
    40  
    41  	require.Equal(t, sport, summary.L4.Src)
    42  	require.Equal(t, dport, summary.L4.Dst)
    43  }
    44  
    45  func TestConnectionSummary(t *testing.T) {
    46  	srcIP := "1.2.3.4"
    47  	dstIP := "5.6.7.8"
    48  
    49  	sport := "80"
    50  	dport := "443"
    51  
    52  	// Generated in scapy:
    53  	// Ether(src="01:23:45:67:89:ab", dst="02:33:45:67:89:ab")/IP(src="1.2.3.4",dst="5.6.7.8")/TCP(sport=80,dport=443)
    54  	packetData := []byte{2, 51, 69, 103, 137, 171, 1, 35, 69, 103, 137, 171, 8, 0, 69, 0, 0, 40, 0, 1, 0, 0, 64, 6, 106, 188, 1, 2, 3, 4, 5, 6, 7, 8, 0, 80, 1, 187, 0, 0, 0, 0, 0, 0, 0, 0, 80, 2, 32, 0, 125, 196, 0, 0}
    55  
    56  	summary := GetConnectionSummary(packetData)
    57  
    58  	expect := fmt.Sprintf("%s -> %s %s",
    59  		net.JoinHostPort(srcIP, sport),
    60  		net.JoinHostPort(dstIP, dport),
    61  		"tcp SYN")
    62  	require.Equal(t, expect, summary)
    63  }