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  }