Darwin: add unit tests for hardware fact gathering (#83212)

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
pull/83218/head
Abhijeet Kasurde 2 weeks ago committed by GitHub
parent 523745e02e
commit 036d14f1e6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,3 @@
---
bugfixes:
- Darwin - add unit tests for Darwin hardware fact gathering.

@ -19,7 +19,6 @@ from __future__ import annotations
import struct
import time
from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.facts.hardware.base import Hardware, HardwareCollector
from ansible.module_utils.facts.sysctl import get_sysctl
@ -41,7 +40,7 @@ class DarwinHardware(Hardware):
def populate(self, collected_facts=None):
hardware_facts = {}
self.sysctl = get_sysctl(self.module, ['hw', 'machdep', 'kern'])
self.sysctl = get_sysctl(self.module, ['hw', 'machdep', 'kern', 'hw.model'])
mac_facts = self.get_mac_facts()
cpu_facts = self.get_cpu_facts()
memory_facts = self.get_memory_facts()
@ -67,9 +66,8 @@ class DarwinHardware(Hardware):
def get_mac_facts(self):
mac_facts = {}
rc, out, err = self.module.run_command("sysctl hw.model")
if rc == 0:
mac_facts['model'] = mac_facts['product_name'] = out.splitlines()[-1].split()[1]
if 'hw.model' in self.sysctl:
mac_facts['model'] = mac_facts['product_name'] = self.sysctl['hw.model']
mac_facts['osversion'] = self.sysctl['kern.osversion']
mac_facts['osrevision'] = self.sysctl['kern.osrevision']
@ -96,9 +94,8 @@ class DarwinHardware(Hardware):
total_used = 0
page_size = 4096
try:
vm_stat_command = get_bin_path('vm_stat')
except ValueError:
vm_stat_command = self.module.get_bin_path('vm_stat')
if vm_stat_command is None:
return memory_facts
rc, out, err = self.module.run_command(vm_stat_command)

@ -0,0 +1,545 @@
hw.ncpu: 10
hw.byteorder: 1234
hw.memsize: 34359738368
hw.activecpu: 10
hw.optional.arm.FEAT_FlagM: 1
hw.optional.arm.FEAT_FlagM2: 1
hw.optional.arm.FEAT_FHM: 1
hw.optional.arm.FEAT_DotProd: 1
hw.optional.arm.FEAT_SHA3: 1
hw.optional.arm.FEAT_RDM: 1
hw.optional.arm.FEAT_LSE: 1
hw.optional.arm.FEAT_SHA256: 1
hw.optional.arm.FEAT_SHA512: 1
hw.optional.arm.FEAT_SHA1: 1
hw.optional.arm.FEAT_AES: 1
hw.optional.arm.FEAT_PMULL: 1
hw.optional.arm.FEAT_SPECRES: 0
hw.optional.arm.FEAT_SB: 1
hw.optional.arm.FEAT_FRINTTS: 1
hw.optional.arm.FEAT_LRCPC: 1
hw.optional.arm.FEAT_LRCPC2: 1
hw.optional.arm.FEAT_FCMA: 1
hw.optional.arm.FEAT_JSCVT: 1
hw.optional.arm.FEAT_PAuth: 1
hw.optional.arm.FEAT_PAuth2: 0
hw.optional.arm.FEAT_FPAC: 0
hw.optional.arm.FEAT_DPB: 1
hw.optional.arm.FEAT_DPB2: 1
hw.optional.arm.FEAT_BF16: 0
hw.optional.arm.FEAT_I8MM: 0
hw.optional.arm.FEAT_ECV: 0
hw.optional.arm.FEAT_LSE2: 1
hw.optional.arm.FEAT_CSV2: 1
hw.optional.arm.FEAT_CSV3: 1
hw.optional.arm.FEAT_DIT: 1
hw.optional.arm.FEAT_FP16: 1
hw.optional.arm.FEAT_SSBS: 1
hw.optional.arm.FEAT_BTI: 0
hw.optional.arm.FP_SyncExceptions: 1
hw.optional.floatingpoint: 1
hw.optional.neon: 1
hw.optional.neon_hpfp: 1
hw.optional.neon_fp16: 1
hw.optional.armv8_1_atomics: 1
hw.optional.armv8_2_fhm: 1
hw.optional.armv8_2_sha512: 1
hw.optional.armv8_2_sha3: 1
hw.optional.armv8_3_compnum: 1
hw.optional.watchpoint: 4
hw.optional.breakpoint: 6
hw.optional.armv8_crc32: 1
hw.optional.armv8_gpi: 1
hw.optional.AdvSIMD: 1
hw.optional.AdvSIMD_HPFPCvt: 1
hw.optional.ucnormal_mem: 1
hw.optional.arm64: 1
hw.features.allows_security_research: 0
hw.perflevel0.physicalcpu: 8
hw.perflevel0.physicalcpu_max: 8
hw.perflevel0.logicalcpu: 8
hw.perflevel0.logicalcpu_max: 8
hw.perflevel0.l1icachesize: 196608
hw.perflevel0.l1dcachesize: 131072
hw.perflevel0.l2cachesize: 12582912
hw.perflevel0.cpusperl2: 4
hw.perflevel0.name: Performance
hw.perflevel1.physicalcpu: 2
hw.perflevel1.physicalcpu_max: 2
hw.perflevel1.logicalcpu: 2
hw.perflevel1.logicalcpu_max: 2
hw.perflevel1.l1icachesize: 131072
hw.perflevel1.l1dcachesize: 65536
hw.perflevel1.l2cachesize: 4194304
hw.perflevel1.cpusperl2: 2
hw.perflevel1.name: Efficiency
hw.physicalcpu: 10
hw.physicalcpu_max: 10
hw.logicalcpu: 10
hw.logicalcpu_max: 10
hw.cputype: 16777228
hw.cpusubtype: 2
hw.cpu64bit_capable: 1
hw.cpufamily: 458787763
hw.cpusubfamily: 4
hw.cacheconfig: 10 1 2 0 0 0 0 0 0 0
hw.cachesize: 3624484864 65536 4194304 0 0 0 0 0 0 0
hw.pagesize: 16384
hw.pagesize32: 16384
hw.cachelinesize: 128
hw.l1icachesize: 131072
hw.l1dcachesize: 65536
hw.l2cachesize: 4194304
hw.tbfrequency: 24000000
hw.memsize_usable: 33689255936
hw.packages: 1
hw.osenvironment:
hw.ephemeral_storage: 0
hw.use_recovery_securityd: 0
hw.use_kernelmanagerd: 1
hw.serialdebugmode: 0
hw.nperflevels: 2
hw.targettype: J316s
machdep.cpu.cores_per_package: 10
machdep.cpu.core_count: 10
machdep.cpu.logical_per_package: 10
machdep.cpu.thread_count: 10
machdep.cpu.brand_string: Apple M1 Pro
machdep.wake_abstime: 29357137973972
machdep.time_since_reset: 66556948949
machdep.wake_conttime: 60496916583785
machdep.deferred_ipi_timeout: 64000
machdep.virtual_address_size: 47
machdep.report_phy_read_delay: 0
machdep.report_phy_write_delay: 0
machdep.trace_phy_read_delay: 0
machdep.trace_phy_write_delay: 0
machdep.phy_read_delay_panic: 0
machdep.phy_write_delay_panic: 0
machdep.ptrauth_enabled: 1
machdep.user_idle_level: 0
kern.ostype: Darwin
kern.osrelease: 23.4.0
kern.osrevision: 199506
kern.version: Darwin Kernel Version 23.4.0: Fri Mar 15 00:10:42 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T6000
kern.maxvnodes: 263168
kern.maxproc: 8000
kern.maxfiles: 245760
kern.argmax: 1048576
kern.securelevel: 0
kern.hostname: akasurde-mac
kern.hostid: 0
kern.clockrate: { hz = 100, tick = 10000, tickadj = 0, profhz = 100, stathz = 100 }
kern.posix1version: 200112
kern.ngroups: 16
kern.job_control: 1
kern.saved_ids: 1
kern.boottime: { sec = 1711644864, usec = 393940 } Thu Mar 28 09:54:24 2024
kern.nisdomainname:
kern.maxfilesperproc: 122880
kern.maxprocperuid: 5333
kern.ipc.maxsockbuf: 8388608
kern.ipc.sockbuf_waste_factor: 8
kern.ipc.somaxconn: 128
kern.ipc.nmbclusters: 262144
kern.ipc.soqlimitcompat: 1
kern.ipc.io_policy.log: 0
kern.ipc.io_policy.uuid: 1
kern.ipc.mb_memory_pressure_percentage: 80
kern.ipc.mb_uses_mcache: 0
kern.ipc.mb_tag_mbuf: 0
kern.ipc.socket_debug: 0
kern.ipc.sosend_assert_panic: 0
kern.ipc.sodefunct_calls: 5813
kern.ipc.sosendminchain: 16384
kern.ipc.sorecvmincopy: 16384
kern.ipc.sosendjcl: 1
kern.ipc.sosendjcl_ignore_capab: 0
kern.ipc.sosendbigcl_ignore_capab: 0
kern.ipc.sodefunctlog: 0
kern.ipc.sothrottlelog: 0
kern.ipc.sorestrictrecv: 1
kern.ipc.sorestrictsend: 1
kern.ipc.soreserveheadroom: 1
kern.ipc.maxextbkidleperproc: 1
kern.ipc.extbkidletime: 600
kern.ipc.extbkidlercvhiwat: 131072
kern.ipc.sotcdb: 0
kern.ipc.throttle_best_effort: 0
kern.ipc.njcl: 87384
kern.ipc.njclbytes: 16384
kern.ipc.soqlencomp: 0
kern.ipc.maxsendmsgx: 256
kern.ipc.maxrecvmsgx: 256
kern.ipc.missingpktinfo: 0
kern.ipc.do_recvmsg_x_donttrunc: 0
kern.ipc.sendmsg_x_mode: 0
kern.usrstack: 1861173248
kern.netboot: 0
kern.sysv.shmmax: 4194304
kern.sysv.shmmin: 1
kern.sysv.shmmni: 32
kern.sysv.shmseg: 8
kern.sysv.shmall: 1024
kern.sysv.semmni: 87381
kern.sysv.semmns: 87381
kern.sysv.semmnu: 87381
kern.sysv.semmsl: 87381
kern.sysv.semume: 10
kern.aiomax: 90
kern.aioprocmax: 16
kern.aiothreads: 4
kern.corefile: /cores/core.%P
kern.coredump: 1
kern.sugid_coredump: 0
kern.delayterm: 0
kern.shreg_private: 0
kern.posix.sem.max: 10000
kern.usrstack64: 6156140544
kern.tfp.policy: 2
kern.procname: sysctl
kern.speculative_reads_disabled: 0
kern.osversion: 23E224
kern.safeboot: 0
kern.rage_vnode: 0
kern.tty.ptmx_max: 511
kern.check_openevt: 0
kern.threadname:
kern.skywalk.netif.netif_queue_stat_enable: 0
kern.skywalk.netif.default_drop: 0
kern.skywalk.flowswitch.rx_agg_tcp: 16384
kern.skywalk.flowswitch.rx_agg_tcp_host: 2
kern.skywalk.flowswitch.gso_mtu: 16384
kern.skywalk.flowswitch.ip_reass: 2
kern.skywalk.flowswitch.ipfm_frag_ttl: 60
kern.skywalk.flowswitch.ipfm_timeout_tcall_ival: 1
kern.skywalk.flowswitch.flow_route_expire: 600
kern.skywalk.flowswitch.en4.ipfm.frag_limit: 448
kern.skywalk.flowswitch.en4.ipfm.frag_count: 0
kern.skywalk.flowswitch.en4.ipfm.queue_limit: 224
kern.skywalk.flowswitch.en4.ipfm.queue_count: 0
kern.skywalk.flowswitch.en5.ipfm.frag_limit: 448
kern.skywalk.flowswitch.en5.ipfm.frag_count: 0
kern.skywalk.flowswitch.en5.ipfm.queue_limit: 224
kern.skywalk.flowswitch.en5.ipfm.queue_count: 0
kern.skywalk.flowswitch.en6.ipfm.frag_limit: 448
kern.skywalk.flowswitch.en6.ipfm.frag_count: 0
kern.skywalk.flowswitch.en6.ipfm.queue_limit: 224
kern.skywalk.flowswitch.en6.ipfm.queue_count: 0
kern.skywalk.flowswitch.en0.ipfm.frag_limit: 4544
kern.skywalk.flowswitch.en0.ipfm.frag_count: 0
kern.skywalk.flowswitch.en0.ipfm.queue_limit: 1024
kern.skywalk.flowswitch.en0.ipfm.queue_count: 0
kern.skywalk.flowswitch.ap1.ipfm.frag_limit: 4544
kern.skywalk.flowswitch.ap1.ipfm.frag_count: 0
kern.skywalk.flowswitch.ap1.ipfm.queue_limit: 1024
kern.skywalk.flowswitch.ap1.ipfm.queue_count: 0
kern.skywalk.flowswitch.awdl0.ipfm.frag_limit: 4544
kern.skywalk.flowswitch.awdl0.ipfm.frag_count: 0
kern.skywalk.flowswitch.awdl0.ipfm.queue_limit: 1024
kern.skywalk.flowswitch.awdl0.ipfm.queue_count: 0
kern.skywalk.ring_stat_enable: 0
kern.hv.supported: 1
kern.hv.max_address_spaces: 256
kern.hv.ipa_size_16k: 4398046511104
kern.hv.ipa_size_4k: 549755813888
kern.entropy.analysis.supported: 0
kern.entropy.filter.total_sample_count: 913452797
kern.entropy.filter.accepted_sample_count: 909654554
kern.entropy.filter.rejected_sample_count: 3798243
kern.entropy.health.adaptive_proportion_test.reset_count: 1776693
kern.entropy.health.adaptive_proportion_test.failure_count: 0
kern.entropy.health.adaptive_proportion_test.max_observation_count: 16
kern.entropy.health.repetition_count_test.reset_count: 906031160
kern.entropy.health.repetition_count_test.failure_count: 0
kern.entropy.health.repetition_count_test.max_observation_count: 5
kern.entropy.health.startup_done: 1
kern.eventhandler.debug: 0
kern.dtrace.err_verbose: 0
kern.dtrace.buffer_memory_maxsize: 11453246122
kern.dtrace.buffer_memory_inuse: 0
kern.dtrace.difo_maxsize: 262144
kern.dtrace.dof_maxsize: 524288
kern.dtrace.global_maxsize: 16384
kern.dtrace.provide_private_probes: 1
kern.dtrace.dof_mode: 1
kern.dtrace.ignore_fbt_blacklist: 0
kern.timer.longterm.threshold: 0
kern.timer.longterm.scan_limit: 100000
kern.timer.longterm.scan_interval: 100000
kern.timer.longterm.qlen: 0
kern.timer.longterm.scan_pauses: 0
kern.timer.coalescing_enabled: 1
kern.timer.deadline_tracking_bin_1: 48000
kern.timer.deadline_tracking_bin_2: 120000
kern.timer.scan_limit: 400000
kern.timer.scan_interval: 40000
kern.timer.scan_pauses: 0
kern.timer.scan_postpones: 0
kern.microstackshot.interrupt_sample_rate: 1
kern.microstackshot.pmi_sample_period: 12000000000
kern.microstackshot.pmi_sample_counter: 0
kern.cpc.secure: 1
kern.kdbg.debug: 0
kern.kdbg.oldest_time: 0
kern.monotonic.supported: 1
kern.monotonic.pmis: 220350 0
kern.monotonic.retrograde_updates: 0 0
kern.monotonic.task_thread_counting: 1
kern.proc_rsr_in_progress: 0
kern.hv_vmm_present: 0
kern.secure_kernel: 0
kern.willuserspacereboot: 0
kern.hibernatefile: /var/vm/sleepimage
kern.bootsignature:
kern.hibernatemode: 0
kern.hibernategraphicsready: 0
kern.hibernatewakenotification: 0
kern.hibernatelockscreenready: 0
kern.hibernatehidready: 0
kern.hibernatecount: 1
kern.nbuf: 16384
kern.maxnbuf: 16384
kern.flush_cache_on_write: 0
kern.wq_stalled_window_usecs: 200
kern.wq_reduce_pool_window_usecs: 5000000
kern.wq_max_timer_interval_usecs: 50000
kern.wq_max_threads: 512
kern.wq_max_constrained_threads: 64
kern.ds_supgroups_supported: 1
kern.sugid_scripts: 0
kern.libmalloc_experiments: 0
kern.initproc_spawned: 1
kern.uuid: 52F71D8C-FEDF-3A4B-9B6B-8463C5251B20
kern.system_version_compat: 0
kern.osproductversioncompat: 10.16
kern.osproductversion: 14.4.1
kern.osreleasetype: User
kern.iossupportversion: 17.4
kern.bootargs:
kern.kernelcacheuuid: 9EC7FBEF-D78C-A9C9-BCFB-F3637BA3DB70
kern.filesetuuid: 9EC7FBEF-D78C-A9C9-BCFB-F3637BA3DB70
kern.num_files: 7426
kern.num_vnodes: 263168
kern.num_tasks: 8192
kern.num_threads: 40960
kern.num_taskthreads: 8192
kern.num_recycledvnodes: 9269571
kern.free_vnodes: 180980
kern.namecache_disabled: 0
kern.sched_enable_smt: 1
kern.sched_allow_NO_SMT_threads: 1
kern.sched_rt_avoid_cpu0: 0
kern.sched_recommended_cores: 1023
kern.suspend_cluster_powerdown: 0
kern.preheat_max_bytes: 1048576
kern.preheat_min_bytes: 32768
kern.speculative_prefetch_max: 201326592
kern.speculative_prefetch_max_iosize: 524288
kern.vm_page_free_target: 4000
kern.vm_page_free_min: 3500
kern.vm_page_free_reserved: 906
kern.vm_page_speculative_percentage: 5
kern.vm_page_speculative_q_age_ms: 500
kern.vm_max_delayed_work_limit: 32
kern.vm_max_batch: 256
kern.bootsessionuuid: 0E097B96-CB5F-4347-983D-87976C3FA3CB
kern.bootuuid: AD5CC5E0-7806-43FD-85E9-B90F48993E3B
kern.apfsprebootuuid: AD5CC5E0-7806-43FD-85E9-B90F48993E3B
kern.bootobjectspath: /AD5CC5E0-7806-43FD-85E9-B90F48993E3B/boot/849A93311AB61505E209255680056E462011B9BAFA091D39927FE5EAD74CD24C2DD04FDB089739324E875A6941997BDF
kern.drivercorefile: /private/var/dextcores/%N.core
kern.vfsnspace: 0
kern.singleuser: 0
kern.minimalboot: 0
kern.affinity_sets_enabled: 1
kern.affinity_sets_mapping: 1
kern.slide: 1
kern.ipc_voucher_trace_contents: 0
kern.stack_size: 16384
kern.stack_depth_max: 0
kern.kern_feature_overrides: 0
kern.ipc_portbt: 0
kern.ikm_signature_failures: 0
kern.ikm_signature_failure_id: 0
kern.sched: edge
kern.cpu_checkin_interval: 5000
kern.precise_user_kernel_time: 1
kern.pervasive_energy: 1
kern.timer_coalesce_bg_scale: -5
kern.timer_resort_threshold_ns: 50000000
kern.timer_coalesce_bg_ns_max: 100000000
kern.timer_coalesce_kt_scale: 3
kern.timer_coalesce_kt_ns_max: 1000000
kern.timer_coalesce_fp_scale: 3
kern.timer_coalesce_fp_ns_max: 1000000
kern.timer_coalesce_ts_scale: 3
kern.timer_coalesce_ts_ns_max: 1000000
kern.timer_coalesce_tier0_scale: 3
kern.timer_coalesce_tier0_ns_max: 1000000
kern.timer_coalesce_tier1_scale: 2
kern.timer_coalesce_tier1_ns_max: 5000000
kern.timer_coalesce_tier2_scale: 1
kern.timer_coalesce_tier2_ns_max: 20000000
kern.timer_coalesce_tier3_scale: -2
kern.timer_coalesce_tier3_ns_max: 75000000
kern.timer_coalesce_tier4_scale: 3
kern.timer_coalesce_tier4_ns_max: 1000000
kern.timer_coalesce_tier5_scale: 3
kern.timer_coalesce_tier5_ns_max: 1000000
kern.hv_support: 1
kern.hv_disable: 0
kern.darkboot: 0
kern.link_time_optimized: 1
kern.thread_groups_supported: 1
kern.direct_handoff: 1
kern.num_static_scalable_counters: 54
kern.trial_treatment_id:
kern.trial_experiment_id:
kern.trial_deployment_id: -1
kern.page_protection_type: 1
kern.exclaves_status: 255
kern.exclaves_boot_stage: -1
kern.memorystatus_sysprocs_idle_delay_time: 10
kern.memorystatus_apps_idle_delay_time: 10
kern.jetsam_aging_policy: 2
kern.memorystatus_level: 71
kern.memorystatus_purge_on_warning: 2
kern.memorystatus_purge_on_urgent: 5
kern.memorystatus_purge_on_critical: 8
kern.vm_pressure_level_transition_threshold: 30
kern.stackshot_estimate_adj: 75
kern.stackshot_busy_enabled: 1
kern.msgbuf: 131072
kern.task_exc_guard_default: 153
kern.ulock_adaptive_spin_usecs: 20
kern.progressmeterenable: 0
kern.progressmeter: 241
kern.consoleoptions: 0
kern.wakereason: NUB.SPMISw3IRQ nub-spmi0.0x02 rtc
kern.shutdownreason: sgpio,sgpio_shutdown wdog,reset_in1 ap_restart
kern.aotmodebits: 0
kern.aotmode: 0
kern.pmtimeout: 0
kern.pmcallouttimer: 2000
kern.iokittest: 0
kern.sleeptime: { sec = 1715102007, usec = 323802 } Tue May 7 10:13:27 2024
kern.waketime: { sec = 1715103000, usec = 232927 } Tue May 7 10:30:00 2024
kern.wake_abs_time: 29357138519262
kern.sleep_abs_time: 29357136488993
kern.useractive_abs_time: 29357488384012
kern.userinactive_abs_time: 0
kern.willshutdown: 0
kern.prng.scheduled_reseed_count: 47300
kern.prng.scheduled_reseed_max_sample_count: 39256851
kern.prng.entropy_max_sample_count: 8724
kern.prng.pool_0.sample_count: 0
kern.prng.pool_0.drain_count: 47300
kern.prng.pool_0.max_sample_count: 5815
kern.prng.pool_1.sample_count: 582
kern.prng.pool_1.drain_count: 23650
kern.prng.pool_1.max_sample_count: 7656
kern.prng.pool_2.sample_count: 584
kern.prng.pool_2.drain_count: 11825
kern.prng.pool_2.max_sample_count: 10200
kern.prng.pool_3.sample_count: 2889
kern.prng.pool_3.drain_count: 5912
kern.prng.pool_3.max_sample_count: 11985
kern.prng.pool_4.sample_count: 2906
kern.prng.pool_4.drain_count: 2956
kern.prng.pool_4.max_sample_count: 22075
kern.prng.pool_5.sample_count: 2899
kern.prng.pool_5.drain_count: 1478
kern.prng.pool_5.max_sample_count: 44771
kern.prng.pool_6.sample_count: 2904
kern.prng.pool_6.drain_count: 739
kern.prng.pool_6.max_sample_count: 73490
kern.prng.pool_7.sample_count: 40173
kern.prng.pool_7.drain_count: 369
kern.prng.pool_7.max_sample_count: 117491
kern.prng.pool_8.sample_count: 114905
kern.prng.pool_8.drain_count: 184
kern.prng.pool_8.max_sample_count: 205185
kern.prng.pool_9.sample_count: 115059
kern.prng.pool_9.drain_count: 92
kern.prng.pool_9.max_sample_count: 393776
kern.prng.pool_10.sample_count: 114814
kern.prng.pool_10.drain_count: 46
kern.prng.pool_10.max_sample_count: 773267
kern.prng.pool_11.sample_count: 114823
kern.prng.pool_11.drain_count: 23
kern.prng.pool_11.max_sample_count: 1439555
kern.prng.pool_12.sample_count: 1321233
kern.prng.pool_12.drain_count: 11
kern.prng.pool_12.max_sample_count: 2793841
kern.prng.pool_13.sample_count: 3761352
kern.prng.pool_13.drain_count: 5
kern.prng.pool_13.max_sample_count: 5217030
kern.prng.pool_14.sample_count: 8608260
kern.prng.pool_14.drain_count: 2
kern.prng.pool_14.max_sample_count: 10073748
kern.prng.pool_15.sample_count: 8620747
kern.prng.pool_15.drain_count: 1
kern.prng.pool_15.max_sample_count: 19802937
kern.prng.pool_16.sample_count: 28400386
kern.prng.pool_16.drain_count: 0
kern.prng.pool_16.max_sample_count: 28400386
kern.prng.pool_17.sample_count: 28401151
kern.prng.pool_17.drain_count: 0
kern.prng.pool_17.max_sample_count: 28401151
kern.prng.pool_18.sample_count: 28391662
kern.prng.pool_18.drain_count: 0
kern.prng.pool_18.max_sample_count: 28391662
kern.prng.pool_19.sample_count: 28400035
kern.prng.pool_19.drain_count: 0
kern.prng.pool_19.max_sample_count: 28400035
kern.prng.pool_20.sample_count: 28415491
kern.prng.pool_20.drain_count: 0
kern.prng.pool_20.max_sample_count: 28415491
kern.prng.pool_21.sample_count: 28405110
kern.prng.pool_21.drain_count: 0
kern.prng.pool_21.max_sample_count: 28405110
kern.prng.pool_22.sample_count: 28419825
kern.prng.pool_22.drain_count: 0
kern.prng.pool_22.max_sample_count: 28419825
kern.prng.pool_23.sample_count: 28390382
kern.prng.pool_23.drain_count: 0
kern.prng.pool_23.max_sample_count: 28390382
kern.prng.pool_24.sample_count: 28384722
kern.prng.pool_24.drain_count: 0
kern.prng.pool_24.max_sample_count: 28384722
kern.prng.pool_25.sample_count: 28399464
kern.prng.pool_25.drain_count: 0
kern.prng.pool_25.max_sample_count: 28399464
kern.prng.pool_26.sample_count: 28428422
kern.prng.pool_26.drain_count: 0
kern.prng.pool_26.max_sample_count: 28428422
kern.prng.pool_27.sample_count: 28412867
kern.prng.pool_27.drain_count: 0
kern.prng.pool_27.max_sample_count: 28412867
kern.prng.pool_28.sample_count: 28434800
kern.prng.pool_28.drain_count: 0
kern.prng.pool_28.max_sample_count: 28434800
kern.prng.pool_29.sample_count: 28415673
kern.prng.pool_29.drain_count: 0
kern.prng.pool_29.max_sample_count: 28415673
kern.prng.pool_30.sample_count: 28400623
kern.prng.pool_30.drain_count: 0
kern.prng.pool_30.max_sample_count: 28400623
kern.prng.pool_31.sample_count: 28443855
kern.prng.pool_31.drain_count: 0
kern.prng.pool_31.max_sample_count: 28443855
kern.crypto.sha1: SHA1_VNG_ARM
kern.crypto.sha256: SHA256_VNG_ARM
kern.crypto.sha384: SHA384_VNG_ARM
kern.crypto.sha512: SHA512_VNG_ARM
kern.crypto.aes.ecb.encrypt: AES_ECB_ARM
kern.crypto.aes.ecb.decrypt: AES_ECB_ARM
kern.crypto.aes.xts.encrypt: AES_XTS_ARM
kern.crypto.aes.xts.decrypt: AES_XTS_ARM
kern.amfm_log_ctl: 0
kern.monotonicclock: 35438929
kern.monotonicclock_usecs: 35438929211029 29423694673305
kern.monotonicclock_rate_usecs: 30
kern.monotoniclock_offset_usecs: 1679666844178344
kern.pthread_mutex_default_policy: 0
hw.model: MacBookPro18,1

@ -0,0 +1,23 @@
Mach Virtual Memory Statistics: (page size of 16384 bytes)
Pages free: 6472.
Pages active: 730051.
Pages inactive: 710941.
Pages speculative: 18210.
Pages throttled: 0.
Pages wired down: 165932.
Pages purgeable: 19224.
"Translation faults": 2500287752.
Pages copy-on-write: 62978099.
Pages zero filled: 1121833567.
Pages reactivated: 11023181.
Pages purged: 20818028.
File-backed pages: 546992.
Anonymous pages: 912210.
Pages stored in compressor: 1414412.
Pages occupied by compressor: 424276.
Decompressions: 4833976.
Compressions: 8360458.
Pageins: 21634062.
Pageouts: 135974.
Swapins: 385871.
Swapouts: 437651.

@ -0,0 +1,83 @@
# Copyright: Contributors to the Ansible project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import annotations
import pathlib
from ansible.module_utils.facts.hardware import darwin
from ansible.module_utils.facts.sysctl import get_sysctl
import pytest
class TestDarwinHardwareFacts:
def _get_mock_sysctl_data(self):
fixtures = pathlib.Path(__file__).parent / "fixtures"
return (fixtures / "sysctl_darwin.txt").read_text()
@pytest.fixture()
def mocked_module(self, mocker, request):
request.cls.module = mocker.MagicMock()
request.cls.module.get_bin_path.return_value = "/usr/sbin/sysctl"
yield request.cls.module
def test_get_mac_facts(self, mocked_module):
mocked_module.run_command.return_value = (0, self._get_mock_sysctl_data(), "")
darwin_hardware = darwin.DarwinHardware(mocked_module)
darwin_hardware.sysctl = get_sysctl(
mocked_module, ["hw", "machdep", "kern", "hw.model"]
)
mac_facts = darwin_hardware.get_mac_facts()
expected_mac_facts = {
"model": "MacBookPro18,1",
"product_name": "MacBookPro18,1",
"osversion": "23E224",
"osrevision": "199506",
}
assert mac_facts == expected_mac_facts
def test_get_cpu_facts(self, mocked_module):
mocked_module.run_command.return_value = (0, self._get_mock_sysctl_data(), "")
darwin_hardware = darwin.DarwinHardware(mocked_module)
darwin_hardware.sysctl = get_sysctl(
mocked_module, ["hw", "machdep", "kern", "hw.model"]
)
cpu_facts = darwin_hardware.get_cpu_facts()
expected_cpu_facts = {
"processor": "Apple M1 Pro",
"processor_cores": "10",
"processor_vcpus": "10",
}
assert cpu_facts == expected_cpu_facts
def test_get_memory_facts(self, mocked_module):
fixtures = pathlib.Path(__file__).parent / "fixtures"
mocked_module.get_bin_path.side_effect = [
"/usr/sbin/sysctl",
"/usr/bin/vm_stat",
]
mocked_vm_stat = (fixtures / "vm_stat_darwin.txt").read_text()
mocked_module.run_command.side_effect = [
(0, self._get_mock_sysctl_data(), ""),
(0, mocked_vm_stat, ""),
]
darwin_hardware = darwin.DarwinHardware(mocked_module)
darwin_hardware.sysctl = get_sysctl(
mocked_module, ["hw", "machdep", "kern", "hw.model"]
)
memory_facts = darwin_hardware.get_memory_facts()
expected_memory_facts = {"memtotal_mb": 32768, "memfree_mb": 26491}
assert memory_facts == expected_memory_facts
def test_get_uptime_facts(self, mocked_module):
darwin_hardware = darwin.DarwinHardware(mocked_module)
mocked_module.run_command.return_value = (
0,
b"\xc0\xa0\x05f\x00\x00\x00\x00\xac-\x05\x00\x00\x00\x00\x00",
"",
)
uptime_facts = darwin_hardware.get_uptime_facts()
assert "uptime_seconds" in uptime_facts
Loading…
Cancel
Save