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 }