go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/processes/ps1getprocess_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package processes_test
     5  
     6  import (
     7  	"os"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	"github.com/stretchr/testify/require"
    12  	"go.mondoo.com/cnquery/providers/os/resources/processes"
    13  )
    14  
    15  func TestWindows2019ServiceParser(t *testing.T) {
    16  	data, err := os.Open("./testdata/windows2019.json")
    17  	require.NoError(t, err)
    18  
    19  	procs, err := processes.ParseWindowsProcesses(data)
    20  	assert.Nil(t, err)
    21  	assert.Equal(t, 2, len(procs))
    22  
    23  	expected := &processes.WindowsProcess{
    24  		ID:                2736,
    25  		Name:              "cmd",
    26  		Description:       "Windows Command Processor",
    27  		PriorityClass:     32,
    28  		PM:                2424832,
    29  		NPM:               5016,
    30  		CPU:               0,
    31  		VirtualMemorySize: 58183680,
    32  		Responding:        true,
    33  		SessionId:         0,
    34  		StartTime:         "/Date(1587025497287)/",
    35  		TotalProcessorTime: processes.WindowsTotalProcessorTime{
    36  			Ticks:             0,
    37  			Days:              0,
    38  			Hours:             0,
    39  			Milliseconds:      0,
    40  			Minutes:           0,
    41  			Seconds:           0,
    42  			TotalDays:         0,
    43  			TotalHours:        0,
    44  			TotalMilliseconds: 0,
    45  			TotalMinutes:      0,
    46  			TotalSeconds:      0,
    47  		},
    48  		UserName: "Test\\chris",
    49  		Path:     "c:\\windows\\system32\\cmd.exe",
    50  	}
    51  	found := findProcess(procs, 2736)
    52  	assert.EqualValues(t, expected, found)
    53  
    54  	expected = &processes.WindowsProcess{
    55  		ID:                3820,
    56  		Name:              "cmd",
    57  		Description:       "Windows Command Processor",
    58  		PriorityClass:     32,
    59  		PM:                2412544,
    60  		NPM:               5016,
    61  		CPU:               0.015625,
    62  		VirtualMemorySize: 58183680,
    63  		Responding:        true,
    64  		SessionId:         0,
    65  		StartTime:         "/Date(1587027060471)/",
    66  		TotalProcessorTime: processes.WindowsTotalProcessorTime{
    67  			Ticks:             156250,
    68  			Days:              0,
    69  			Hours:             0,
    70  			Milliseconds:      15,
    71  			Minutes:           0,
    72  			Seconds:           0,
    73  			TotalDays:         1.808449074074074e-07,
    74  			TotalHours:        4.340277777777778e-06,
    75  			TotalMilliseconds: 15.625,
    76  			TotalMinutes:      0.00026041666666666666,
    77  			TotalSeconds:      0.015625,
    78  		},
    79  		UserName: "Test\\chris",
    80  		Path:     "c:\\windows\\system32\\cmd.exe",
    81  	}
    82  	found = findProcess(procs, 3820)
    83  	assert.EqualValues(t, expected, found)
    84  }
    85  
    86  func TestWindows2022ServiceParser(t *testing.T) {
    87  	data, err := os.Open("./testdata/windows2022.json")
    88  	require.NoError(t, err)
    89  
    90  	procs, err := processes.ParseWindowsProcesses(data)
    91  	assert.Nil(t, err)
    92  	assert.Equal(t, 2, len(procs))
    93  
    94  	expected := &processes.WindowsProcess{
    95  		ID:                2628,
    96  		Name:              "cmd",
    97  		Description:       "Windows Command Processor",
    98  		PriorityClass:     32,
    99  		PM:                4546560,
   100  		NPM:               5976,
   101  		CPU:               0.0625,
   102  		VirtualMemorySize: 63016960,
   103  		Responding:        true,
   104  		SessionId:         0,
   105  		StartTime:         "/Date(1666622681722)/",
   106  		TotalProcessorTime: processes.WindowsTotalProcessorTime{
   107  			Ticks:             625000,
   108  			Days:              0,
   109  			Hours:             0,
   110  			Milliseconds:      62,
   111  			Minutes:           0,
   112  			Seconds:           0,
   113  			TotalDays:         7.2337962962962959e-07,
   114  			TotalHours:        1.7361111111111111e-05,
   115  			TotalMilliseconds: 62.5,
   116  			TotalMinutes:      0.0010416666666666667,
   117  			TotalSeconds:      0.0625,
   118  		},
   119  		UserName: "WIN-E692AR0A0UB\\Administrator",
   120  		Path:     "c:\\windows\\system32\\cmd.exe",
   121  	}
   122  	found := findProcess(procs, 2628)
   123  	assert.EqualValues(t, expected, found)
   124  }
   125  
   126  func findProcess(procs []processes.WindowsProcess, id int64) *processes.WindowsProcess {
   127  	for i := range procs {
   128  		if procs[i].ID == id {
   129  			return &procs[i]
   130  		}
   131  	}
   132  	return nil
   133  }