go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/processes/unixps_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package processes_test 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "go.mondoo.com/cnquery/providers-sdk/v1/inventory" 11 "go.mondoo.com/cnquery/providers/os/connection/mock" 12 "go.mondoo.com/cnquery/providers/os/resources/processes" 13 ) 14 15 func TestLinuxPSProcessParser(t *testing.T) { 16 mock, err := mock.New("./testdata/debian.toml", &inventory.Asset{ 17 Platform: &inventory.Platform{ 18 Family: []string{"linux"}, 19 }, 20 }) 21 if err != nil { 22 t.Fatal(err) 23 } 24 c, err := mock.RunCommand("ps axo pid,pcpu,pmem,vsz,rss,tty,stat,stime,time,uid,command") 25 if err != nil { 26 t.Fatal(err) 27 } 28 assert.Nil(t, err) 29 30 m, err := processes.ParseLinuxPsResult(c.Stdout) 31 assert.Nil(t, err) 32 assert.Equal(t, 3, len(m), "detected the right amount of processes") 33 34 assert.Equal(t, "/bin/bash", m[0].Command, "process command detected") 35 assert.Equal(t, int64(1), m[0].Pid, "process pid detected") 36 assert.Equal(t, int64(0), m[0].Uid, "process uid detected") 37 38 assert.Equal(t, "ps axo pid,pcpu,pmem,vsz,rss,tty,stat,stime,time,uid,command", m[1].Command, "process command detected") 39 assert.Equal(t, int64(46), m[1].Pid, "process pid detected") 40 assert.Equal(t, int64(0), m[1].Uid, "process uid detected") 41 42 assert.Equal(t, "", m[2].Command, "process command matched against empty COMMAND column") 43 assert.Equal(t, int64(3987), m[2].Pid, "process pid detected") 44 assert.Equal(t, int64(0), m[2].Uid, "process uid detected") 45 } 46 47 func TestOSxPSProcessParser(t *testing.T) { 48 mock, err := mock.New("./testdata/osx.toml", &inventory.Asset{ 49 Platform: &inventory.Platform{ 50 Family: []string{"unix"}, 51 }, 52 }) 53 if err != nil { 54 t.Fatal(err) 55 } 56 c, err := mock.RunCommand("ps Axo pid,pcpu,pmem,vsz,rss,tty,stat,stime,time,uid,command") 57 if err != nil { 58 t.Fatal(err) 59 } 60 assert.Nil(t, err) 61 62 m, err := processes.ParseLinuxPsResult(c.Stdout) 63 assert.Nil(t, err) 64 assert.Equal(t, 41, len(m), "detected the right amount of processes") 65 66 assert.Equal(t, "/sbin/launchd", m[0].Command, "process command detected") 67 assert.Equal(t, int64(1), m[0].Pid, "process pid detected") 68 assert.Equal(t, int64(0), m[0].Uid, "process uid detected") 69 70 assert.Equal(t, "/usr/sbin/syslogd", m[1].Command, "process command detected") 71 assert.Equal(t, int64(125), m[1].Pid, "process pid detected") 72 assert.Equal(t, int64(0), m[1].Uid, "process uid detected") 73 } 74 75 func TestUnixPSProcessParser(t *testing.T) { 76 mock, err := mock.New("./testdata/freebsd12.toml", &inventory.Asset{ 77 Platform: &inventory.Platform{ 78 Family: []string{"unix"}, 79 }, 80 }) 81 if err != nil { 82 t.Fatal(err) 83 } 84 c, err := mock.RunCommand("ps axo pid,pcpu,pmem,vsz,rss,tty,stat,time,uid,command") 85 if err != nil { 86 t.Fatal(err) 87 } 88 assert.Nil(t, err) 89 90 m, err := processes.ParseUnixPsResult(c.Stdout) 91 assert.Nil(t, err) 92 assert.Equal(t, 41, len(m), "detected the right amount of processes") 93 94 assert.Equal(t, "[kernel]", m[0].Command, "process command detected") 95 assert.Equal(t, int64(0), m[0].Pid, "process pid detected") 96 assert.Equal(t, int64(0), m[0].Uid, "process uid detected") 97 98 assert.Equal(t, "[Timer]", m[20].Command, "process command detected") 99 assert.Equal(t, int64(88), m[20].Pid, "process pid detected") 100 assert.Equal(t, int64(0), m[20].Uid, "process uid detected") 101 }