go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/lsof/lsof_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package lsof 5 6 import ( 7 "strings" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestParseLsofWithoutFileDescriptors(t *testing.T) { 16 s := `p388 17 g388 18 R1 19 cloginwindow 20 u501 21 f10 22 au 23 l 24 tIPv4 25 G0x3;0x0 26 d0x6949610f649739df 27 o0t0 28 PUDP 29 n*:* 30 ` 31 32 processes, err := Parse(strings.NewReader(s)) 33 require.NoError(t, err) 34 assert.Equal(t, 1, len(processes)) 35 36 process := processes[0] 37 assert.Equal(t, "388", process.PID) 38 assert.Equal(t, "loginwindow", process.Command) 39 assert.Equal(t, "501", process.UID) 40 } 41 42 func TestParseLsofWithFileDescriptors(t *testing.T) { 43 s := `p37224 44 g678 45 R678 46 cHyper Helper 47 u501 48 f24 49 au 50 l 51 tIPv4 52 G0x10007;0x0 53 d0x6949610a99d53797 54 o0t0 55 PTCP 56 n10.184.10.188:64647->76.76.21.61:443 57 TST=ESTABLISHED 58 TQR=0 59 TQS=0 60 f25 61 au 62 l 63 tIPv4 64 G0x10007;0x0 65 d0x6949610a9a1bec8f 66 o0t0 67 PTCP 68 n10.184.10.188:64645->76.76.21.241:443 69 TST=ESTABLISHED 70 TQR=0 71 TQS=0 72 p38266 73 g38266 74 R1 75 cMail 76 u501 77 f68 78 au 79 l 80 tIPv4 81 G0x10007;0x1 82 d0x6949610a99a77797 83 o0t0 84 PTCP 85 n10.184.10.188:59637->142.251.163.108:993 86 TST=ESTABLISHED 87 TQR=0 88 TQS=0 89 ` 90 91 processes, err := Parse(strings.NewReader(s)) 92 require.NoError(t, err) 93 94 assert.Equal(t, 2, len(processes)) 95 96 process := processes[0] 97 assert.Equal(t, "37224", process.PID) 98 assert.Equal(t, "Hyper Helper", process.Command) 99 assert.Equal(t, "501", process.UID) 100 101 assert.Equal(t, 2, len(process.FileDescriptors)) 102 103 fd := process.FileDescriptors[0] 104 assert.Equal(t, "24", fd.FileDescriptor) 105 assert.Equal(t, FileTypeIPv4, fd.Type) 106 assert.Equal(t, "10.184.10.188:64647->76.76.21.61:443", fd.Name) 107 108 fd = process.FileDescriptors[1] 109 assert.Equal(t, "25", fd.FileDescriptor) 110 assert.Equal(t, FileTypeIPv4, fd.Type) 111 assert.Equal(t, "10.184.10.188:64645->76.76.21.241:443", fd.Name) 112 } 113 114 func TestParseEmpty(t *testing.T) { 115 processes, err := Parse(strings.NewReader("")) 116 if err != nil { 117 t.Fatal(err) 118 } 119 if len(processes) != 0 { 120 t.Fatal("Failed parsing empty") 121 } 122 }