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

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package procfs
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/require"
    11  	"go.mondoo.com/cnquery/providers/os/connection/mock"
    12  )
    13  
    14  func TestParseProcCpuX64(t *testing.T) {
    15  	trans, err := mock.New("./testdata/cpu-info-x64.toml", nil)
    16  	require.NoError(t, err)
    17  
    18  	f, err := trans.FileSystem().Open("/proc/cpuinfo")
    19  	require.NoError(t, err)
    20  	defer f.Close()
    21  
    22  	cpuInfo, err := ParseCpuInfo(f)
    23  	require.NoError(t, err)
    24  
    25  	assert.NotNil(t, cpuInfo, "cpuInfo is not nil")
    26  
    27  	proc1 := Processor{
    28  		Id:              0,
    29  		VendorID:        "GenuineIntel",
    30  		CPUFamily:       "6",
    31  		Model:           "94",
    32  		ModelName:       "Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz",
    33  		Stepping:        "3",
    34  		Microcode:       "",
    35  		CPUMHz:          4000,
    36  		CacheSize:       8192,
    37  		PhysicalID:      0,
    38  		Siblings:        0x1,
    39  		CoreID:          0x0,
    40  		CPUCores:        0x1,
    41  		ApicID:          "0",
    42  		InitialApicID:   "0",
    43  		FPU:             "yes",
    44  		FPUException:    "yes",
    45  		CpuIDLevel:      0x16,
    46  		WP:              "yes",
    47  		Flags:           []string{"fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", "cx8", "apic", "sep", "mtrr", "pge", "mca", "cmov", "pat", "pse36", "clflush", "mmx", "fxsr", "sse", "sse2", "ss", "ht", "pbe", "syscall", "nx", "pdpe1gb", "lm", "constant_tsc", "rep_good", "nopl", "xtopology", "nonstop_tsc", "cpuid", "pni", "pclmulqdq", "dtes64", "ds_cpl", "ssse3", "sdbg", "fma", "cx16", "xtpr", "pcid", "sse4_1", "sse4_2", "movbe", "popcnt", "aes", "xsave", "avx", "f16c", "rdrand", "hypervisor", "lahf_lm", "abm", "3dnowprefetch", "pti", "fsgsbase", "bmi1", "hle", "avx2", "bmi2", "erms", "rtm", "xsaveopt", "arat"},
    48  		Bugs:            []string{"cpu_meltdown", "spectre_v1", "spectre_v2", "spec_store_bypass", "l1tf", "mds", "swapgs", "taa", "itlb_multihit"},
    49  		BogoMips:        7999.96,
    50  		CLFlushSize:     0x40,
    51  		CacheAlignment:  0x40,
    52  		AddressSizes:    "39 bits physical, 48 bits virtual",
    53  		PowerManagement: "",
    54  	}
    55  
    56  	// the second proc is identical
    57  	proc2 := proc1
    58  	proc2.Id = 1
    59  	proc2.PhysicalID = 1
    60  	proc2.ApicID = "1"
    61  	proc2.InitialApicID = "1"
    62  	proc2.BogoMips = 1425.15
    63  
    64  	assert.Equal(t, &CpuInfo{
    65  		Processors: []Processor{
    66  			proc1,
    67  			proc2,
    68  		},
    69  	}, cpuInfo)
    70  }
    71  
    72  func TestParseProcCpuArm(t *testing.T) {
    73  	trans, err := mock.New("./testdata/cpu-info-aarch64.toml", nil)
    74  	require.NoError(t, err)
    75  
    76  	f, err := trans.FileSystem().Open("/proc/cpuinfo")
    77  	require.NoError(t, err)
    78  	defer f.Close()
    79  
    80  	cpuInfo, err := ParseCpuInfo(f)
    81  	require.NoError(t, err)
    82  
    83  	assert.NotNil(t, cpuInfo, "cpuInfo is not nil")
    84  
    85  	proc1 := Processor{
    86  		Id:              0x0,
    87  		VendorID:        "",
    88  		CPUFamily:       "",
    89  		Model:           "",
    90  		ModelName:       "",
    91  		Stepping:        "",
    92  		Microcode:       "",
    93  		CPUMHz:          0,
    94  		CacheSize:       0,
    95  		PhysicalID:      0x0,
    96  		Siblings:        0x0,
    97  		CoreID:          0x0,
    98  		CPUCores:        0x0,
    99  		ApicID:          "",
   100  		InitialApicID:   "",
   101  		FPU:             "",
   102  		FPUException:    "",
   103  		CpuIDLevel:      0x0,
   104  		WP:              "",
   105  		Flags:           []string{"fp", "asimd", "evtstrm", "aes", "pmull", "sha1", "sha2", "crc32", "atomics", "fphp", "asimdhp", "cpuid", "asimdrdm", "lrcpc", "dcpop", "asimddp", "ssbs"},
   106  		Bugs:            []string(nil),
   107  		BogoMips:        243.75,
   108  		CLFlushSize:     0x0,
   109  		CacheAlignment:  0x0,
   110  		AddressSizes:    "",
   111  		PowerManagement: "",
   112  	}
   113  	proc2 := proc1
   114  	proc2.Id = 1
   115  
   116  	assert.Equal(t, &CpuInfo{
   117  		Processors: []Processor{
   118  			proc1,
   119  			proc2,
   120  		},
   121  	}, cpuInfo)
   122  }