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 }