facter 2.0.1.rc1-universal-darwin

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of facter might be problematic. Click here for more details.

Files changed (379) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +194 -0
  3. data/CONTRIBUTING.md +65 -0
  4. data/Gemfile +43 -0
  5. data/LICENSE +15 -0
  6. data/README.md +33 -0
  7. data/Rakefile +79 -0
  8. data/bin/facter +16 -0
  9. data/etc/facter.conf +5 -0
  10. data/ext/build_defaults.yaml +24 -0
  11. data/ext/debian/changelog.erb +59 -0
  12. data/ext/debian/compat +1 -0
  13. data/ext/debian/control +14 -0
  14. data/ext/debian/copyright +19 -0
  15. data/ext/debian/docs +1 -0
  16. data/ext/debian/lintian-overrides +0 -0
  17. data/ext/debian/rules +10 -0
  18. data/ext/debian/source/format +1 -0
  19. data/ext/facter-diff +74 -0
  20. data/ext/ips/facter.p5m.erb +10 -0
  21. data/ext/ips/rules +7 -0
  22. data/ext/ips/transforms +18 -0
  23. data/ext/osx/file_mapping.yaml +27 -0
  24. data/ext/osx/preflight.erb +33 -0
  25. data/ext/osx/prototype.plist.erb +38 -0
  26. data/ext/project_data.yaml +33 -0
  27. data/ext/redhat/facter.spec.erb +220 -0
  28. data/ext/solaris/pkginfo +7 -0
  29. data/install.rb +380 -0
  30. data/lib/facter.rb +262 -0
  31. data/lib/facter/Cfkey.rb +42 -0
  32. data/lib/facter/application.rb +204 -0
  33. data/lib/facter/architecture.rb +50 -0
  34. data/lib/facter/augeasversion.rb +28 -0
  35. data/lib/facter/blockdevices.rb +105 -0
  36. data/lib/facter/core/aggregate.rb +220 -0
  37. data/lib/facter/core/directed_graph.rb +46 -0
  38. data/lib/facter/core/execution.rb +100 -0
  39. data/lib/facter/core/execution/base.rb +73 -0
  40. data/lib/facter/core/execution/posix.rb +50 -0
  41. data/lib/facter/core/execution/windows.rb +57 -0
  42. data/lib/facter/core/logging.rb +169 -0
  43. data/lib/facter/core/resolvable.rb +94 -0
  44. data/lib/facter/core/suitable.rb +117 -0
  45. data/lib/facter/domain.rb +99 -0
  46. data/lib/facter/ec2.rb +37 -0
  47. data/lib/facter/facterversion.rb +15 -0
  48. data/lib/facter/filesystems.rb +38 -0
  49. data/lib/facter/fqdn.rb +22 -0
  50. data/lib/facter/hardwareisa.rb +20 -0
  51. data/lib/facter/hardwaremodel.rb +67 -0
  52. data/lib/facter/hostname.rb +33 -0
  53. data/lib/facter/id.rb +21 -0
  54. data/lib/facter/interfaces.rb +46 -0
  55. data/lib/facter/ipaddress.rb +171 -0
  56. data/lib/facter/ipaddress6.rb +82 -0
  57. data/lib/facter/iphostnumber.rb +29 -0
  58. data/lib/facter/kernel.rb +22 -0
  59. data/lib/facter/kernelmajversion.rb +15 -0
  60. data/lib/facter/kernelrelease.rb +42 -0
  61. data/lib/facter/kernelversion.rb +22 -0
  62. data/lib/facter/ldom.rb +47 -0
  63. data/lib/facter/lsbdistcodename.rb +18 -0
  64. data/lib/facter/lsbdistdescription.rb +21 -0
  65. data/lib/facter/lsbdistid.rb +18 -0
  66. data/lib/facter/lsbdistrelease.rb +18 -0
  67. data/lib/facter/lsbmajdistrelease.rb +27 -0
  68. data/lib/facter/lsbrelease.rb +18 -0
  69. data/lib/facter/macaddress.rb +97 -0
  70. data/lib/facter/macosx.rb +56 -0
  71. data/lib/facter/manufacturer.rb +68 -0
  72. data/lib/facter/memory.rb +162 -0
  73. data/lib/facter/netmask.rb +42 -0
  74. data/lib/facter/network.rb +20 -0
  75. data/lib/facter/operatingsystem.rb +121 -0
  76. data/lib/facter/operatingsystemmajrelease.rb +33 -0
  77. data/lib/facter/operatingsystemrelease.rb +226 -0
  78. data/lib/facter/osfamily.rb +35 -0
  79. data/lib/facter/path.rb +14 -0
  80. data/lib/facter/physicalprocessorcount.rb +84 -0
  81. data/lib/facter/processor.rb +183 -0
  82. data/lib/facter/ps.rb +30 -0
  83. data/lib/facter/puppetversion.rb +20 -0
  84. data/lib/facter/rubysitedir.rb +12 -0
  85. data/lib/facter/rubyversion.rb +12 -0
  86. data/lib/facter/selinux.rb +99 -0
  87. data/lib/facter/ssh.rb +72 -0
  88. data/lib/facter/timezone.rb +14 -0
  89. data/lib/facter/uniqueid.rb +4 -0
  90. data/lib/facter/uptime.rb +34 -0
  91. data/lib/facter/uptime_days.rb +15 -0
  92. data/lib/facter/uptime_hours.rb +15 -0
  93. data/lib/facter/uptime_seconds.rb +24 -0
  94. data/lib/facter/util/architecture.rb +19 -0
  95. data/lib/facter/util/collection.rb +161 -0
  96. data/lib/facter/util/composite_loader.rb +12 -0
  97. data/lib/facter/util/config.rb +61 -0
  98. data/lib/facter/util/confine.rb +66 -0
  99. data/lib/facter/util/directory_loader.rb +83 -0
  100. data/lib/facter/util/ec2.rb +101 -0
  101. data/lib/facter/util/fact.rb +204 -0
  102. data/lib/facter/util/file_read.rb +37 -0
  103. data/lib/facter/util/formatter.rb +38 -0
  104. data/lib/facter/util/ip.rb +285 -0
  105. data/lib/facter/util/ip/windows.rb +215 -0
  106. data/lib/facter/util/loader.rb +146 -0
  107. data/lib/facter/util/macaddress.rb +43 -0
  108. data/lib/facter/util/macosx.rb +73 -0
  109. data/lib/facter/util/manufacturer.rb +104 -0
  110. data/lib/facter/util/memory.rb +228 -0
  111. data/lib/facter/util/monkey_patches.rb +8 -0
  112. data/lib/facter/util/netmask.rb +40 -0
  113. data/lib/facter/util/normalization.rb +94 -0
  114. data/lib/facter/util/nothing_loader.rb +12 -0
  115. data/lib/facter/util/parser.rb +158 -0
  116. data/lib/facter/util/plist.rb +24 -0
  117. data/lib/facter/util/plist/generator.rb +228 -0
  118. data/lib/facter/util/plist/parser.rb +226 -0
  119. data/lib/facter/util/processor.rb +291 -0
  120. data/lib/facter/util/registry.rb +11 -0
  121. data/lib/facter/util/resolution.rb +152 -0
  122. data/lib/facter/util/solaris_zones.rb +158 -0
  123. data/lib/facter/util/unix_root.rb +5 -0
  124. data/lib/facter/util/uptime.rb +81 -0
  125. data/lib/facter/util/values.rb +80 -0
  126. data/lib/facter/util/virtual.rb +151 -0
  127. data/lib/facter/util/vlans.rb +24 -0
  128. data/lib/facter/util/windows_root.rb +37 -0
  129. data/lib/facter/util/wmi.rb +16 -0
  130. data/lib/facter/util/xendomains.rb +10 -0
  131. data/lib/facter/version.rb +86 -0
  132. data/lib/facter/virtual.rb +262 -0
  133. data/lib/facter/vlans.rb +17 -0
  134. data/lib/facter/xendomains.rb +20 -0
  135. data/lib/facter/zfs_version.rb +10 -0
  136. data/lib/facter/zonename.rb +6 -0
  137. data/lib/facter/zones.rb +17 -0
  138. data/lib/facter/zpool_version.rb +10 -0
  139. data/spec/fixtures/cpuinfo/amd64dual +57 -0
  140. data/spec/fixtures/cpuinfo/amd64quad +79 -0
  141. data/spec/fixtures/cpuinfo/amd64solo +23 -0
  142. data/spec/fixtures/cpuinfo/amd64tri +86 -0
  143. data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
  144. data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
  145. data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
  146. data/spec/fixtures/cpuinfo/panda-armel +17 -0
  147. data/spec/fixtures/cpuinfo/ppc64 +19 -0
  148. data/spec/fixtures/cpuinfo/sparc +10 -0
  149. data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
  150. data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
  151. data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
  152. data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
  153. data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
  154. data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
  155. data/spec/fixtures/hpux/sched.models +174 -0
  156. data/spec/fixtures/hpux/unistd.h +1534 -0
  157. data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
  158. data/spec/fixtures/ifconfig/centos_5_5 +17 -0
  159. data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
  160. data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
  161. data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
  162. data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
  163. data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
  164. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
  165. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
  166. data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
  167. data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
  168. data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
  169. data/spec/fixtures/ifconfig/fedora_10 +36 -0
  170. data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
  171. data/spec/fixtures/ifconfig/fedora_13 +18 -0
  172. data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
  173. data/spec/fixtures/ifconfig/fedora_8 +38 -0
  174. data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
  175. data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
  176. data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
  177. data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
  178. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
  179. data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
  180. data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
  181. data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
  182. data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
  183. data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
  184. data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
  185. data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
  186. data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
  187. data/spec/fixtures/ldom/ldom_v1 +6 -0
  188. data/spec/fixtures/netstat/centos_5_5 +5 -0
  189. data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
  190. data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
  191. data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
  192. data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
  193. data/spec/fixtures/netstat/fedora_10 +7 -0
  194. data/spec/fixtures/netstat/open_solaris_10 +16 -0
  195. data/spec/fixtures/netstat/open_solaris_b132 +17 -0
  196. data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
  197. data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
  198. data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
  199. data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
  200. data/spec/fixtures/unit/filesystems/linux +28 -0
  201. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
  202. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
  203. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
  204. data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
  205. data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
  206. data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
  207. data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
  208. data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
  209. data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
  210. data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
  211. data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
  212. data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
  213. data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
  214. data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
  215. data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
  216. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
  217. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
  218. data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
  219. data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
  220. data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
  221. data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
  222. data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
  223. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
  224. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
  225. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
  226. data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
  227. data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
  228. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
  229. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
  230. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
  231. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
  232. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
  233. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
  234. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
  235. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
  236. data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
  237. data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
  238. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
  239. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
  240. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
  241. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
  242. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
  243. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
  244. data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
  245. data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
  246. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
  247. data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
  248. data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
  249. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
  250. data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
  251. data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
  252. data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
  253. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
  254. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
  255. data/spec/fixtures/unit/util/loader/nosuchfact.rb +1 -0
  256. data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
  257. data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
  258. data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
  259. data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
  260. data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
  261. data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
  262. data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
  263. data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
  264. data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
  265. data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
  266. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
  267. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
  268. data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
  269. data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
  270. data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
  271. data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
  272. data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
  273. data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
  274. data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
  275. data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
  276. data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
  277. data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
  278. data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
  279. data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
  280. data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
  281. data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
  282. data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
  283. data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
  284. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
  285. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
  286. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
  287. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
  288. data/spec/integration/facter_spec.rb +39 -0
  289. data/spec/lib/facter_spec/cpuinfo.rb +15 -0
  290. data/spec/lib/facter_spec/windows_network.rb +64 -0
  291. data/spec/puppetlabs_spec/files.rb +57 -0
  292. data/spec/puppetlabs_spec/fixtures.rb +49 -0
  293. data/spec/puppetlabs_spec/matchers.rb +87 -0
  294. data/spec/puppetlabs_spec/verbose.rb +9 -0
  295. data/spec/puppetlabs_spec_helper.rb +26 -0
  296. data/spec/shared_contexts/platform.rb +55 -0
  297. data/spec/shared_formats/parses.rb +3 -0
  298. data/spec/spec_helper.rb +75 -0
  299. data/spec/unit/application_spec.rb +101 -0
  300. data/spec/unit/architecture_spec.rb +63 -0
  301. data/spec/unit/blockdevices_spec.rb +109 -0
  302. data/spec/unit/core/aggregate_spec.rb +125 -0
  303. data/spec/unit/core/directed_graph_spec.rb +79 -0
  304. data/spec/unit/core/execution/base_spec.rb +119 -0
  305. data/spec/unit/core/execution/posix_spec.rb +86 -0
  306. data/spec/unit/core/execution/windows_spec.rb +106 -0
  307. data/spec/unit/core/execution_spec.rb +37 -0
  308. data/spec/unit/core/logging_spec.rb +104 -0
  309. data/spec/unit/core/resolvable_spec.rb +81 -0
  310. data/spec/unit/core/suitable_spec.rb +96 -0
  311. data/spec/unit/domain_spec.rb +310 -0
  312. data/spec/unit/ec2_spec.rb +187 -0
  313. data/spec/unit/facter_spec.rb +108 -0
  314. data/spec/unit/filesystems_spec.rb +50 -0
  315. data/spec/unit/hardwareisa_spec.rb +41 -0
  316. data/spec/unit/hardwaremodel_spec.rb +56 -0
  317. data/spec/unit/hostname_spec.rb +40 -0
  318. data/spec/unit/id_spec.rb +29 -0
  319. data/spec/unit/interfaces_spec.rb +57 -0
  320. data/spec/unit/ipaddress6_spec.rb +161 -0
  321. data/spec/unit/ipaddress_spec.rb +114 -0
  322. data/spec/unit/kernel_spec.rb +24 -0
  323. data/spec/unit/kernelmajversion_spec.rb +17 -0
  324. data/spec/unit/kernelrelease_spec.rb +53 -0
  325. data/spec/unit/kernelversion_spec.rb +32 -0
  326. data/spec/unit/ldom_spec.rb +74 -0
  327. data/spec/unit/lsbdistcodename_spec.rb +25 -0
  328. data/spec/unit/lsbdistdescription_spec.rb +25 -0
  329. data/spec/unit/lsbdistid_spec.rb +25 -0
  330. data/spec/unit/lsbdistrelease_spec.rb +25 -0
  331. data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
  332. data/spec/unit/lsbrelease_spec.rb +25 -0
  333. data/spec/unit/macaddress_spec.rb +61 -0
  334. data/spec/unit/manufacturer_spec.rb +115 -0
  335. data/spec/unit/memory_spec.rb +539 -0
  336. data/spec/unit/netmask_spec.rb +95 -0
  337. data/spec/unit/operatingsystem_spec.rb +141 -0
  338. data/spec/unit/operatingsystemmajrelease_spec.rb +16 -0
  339. data/spec/unit/operatingsystemrelease_spec.rb +226 -0
  340. data/spec/unit/physicalprocessorcount_spec.rb +76 -0
  341. data/spec/unit/processor_spec.rb +393 -0
  342. data/spec/unit/ps_spec.rb +42 -0
  343. data/spec/unit/selinux_spec.rb +114 -0
  344. data/spec/unit/ssh_spec.rb +77 -0
  345. data/spec/unit/uniqueid_spec.rb +27 -0
  346. data/spec/unit/uptime_spec.rb +110 -0
  347. data/spec/unit/util/collection_spec.rb +258 -0
  348. data/spec/unit/util/config_spec.rb +84 -0
  349. data/spec/unit/util/confine_spec.rb +148 -0
  350. data/spec/unit/util/directory_loader_spec.rb +88 -0
  351. data/spec/unit/util/ec2_spec.rb +180 -0
  352. data/spec/unit/util/fact_spec.rb +142 -0
  353. data/spec/unit/util/file_read_spec.rb +29 -0
  354. data/spec/unit/util/ip/windows_spec.rb +80 -0
  355. data/spec/unit/util/ip_spec.rb +463 -0
  356. data/spec/unit/util/loader_spec.rb +286 -0
  357. data/spec/unit/util/macaddress_spec.rb +141 -0
  358. data/spec/unit/util/macosx_spec.rb +113 -0
  359. data/spec/unit/util/manufacturer_spec.rb +179 -0
  360. data/spec/unit/util/normalization_spec.rb +113 -0
  361. data/spec/unit/util/parser_spec.rb +200 -0
  362. data/spec/unit/util/processor_spec.rb +92 -0
  363. data/spec/unit/util/registry_spec.rb +76 -0
  364. data/spec/unit/util/resolution_spec.rb +129 -0
  365. data/spec/unit/util/solaris_zones_spec.rb +127 -0
  366. data/spec/unit/util/uptime_spec.rb +126 -0
  367. data/spec/unit/util/values_spec.rb +131 -0
  368. data/spec/unit/util/virtual_spec.rb +294 -0
  369. data/spec/unit/util/vlans_spec.rb +12 -0
  370. data/spec/unit/util/wmi_spec.rb +19 -0
  371. data/spec/unit/util/xendomains_spec.rb +21 -0
  372. data/spec/unit/version_spec.rb +42 -0
  373. data/spec/unit/virtual_spec.rb +470 -0
  374. data/spec/unit/zfs_version_spec.rb +75 -0
  375. data/spec/unit/zonename_spec.rb +14 -0
  376. data/spec/unit/zones_spec.rb +55 -0
  377. data/spec/unit/zpool_version_spec.rb +75 -0
  378. data/spec/watchr.rb +125 -0
  379. metadata +674 -0
@@ -0,0 +1,32 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "Kernel version fact" do
6
+
7
+ describe "on Solaris/Sun OS" do
8
+ before do
9
+ Facter.fact(:kernel).stubs(:value).returns('sunos')
10
+ Facter::Core::Execution.stubs(:exec).with('uname -v').returns("1.234.5")
11
+ end
12
+
13
+ it "should return the kernel version using 'uname -v'" do
14
+ Facter.fact(:kernelversion).value.should == "1.234.5"
15
+ end
16
+ end
17
+
18
+ describe "on everything else" do
19
+ before do
20
+ Facter.fact(:kernel).stubs(:value).returns('linux')
21
+ Facter.fact(:kernelrelease).stubs(:value).returns('1.23.4-56')
22
+ end
23
+
24
+ it "should return the kernel version using kernel release" do
25
+ Facter.fact(:kernelversion).value.should == "1.23.4"
26
+ end
27
+ end
28
+ end
29
+
30
+
31
+
32
+
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ def ldom_fixtures(filename)
6
+ File.read(fixtures('ldom', filename))
7
+ end
8
+
9
+ describe "ldom fact" do
10
+ before do
11
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
12
+ end
13
+
14
+ describe "when running on ldom hardware" do
15
+ before :each do
16
+ # For virtinfo documentation:
17
+ # http://docs.oracle.com/cd/E23824_01/html/821-1462/virtinfo-1m.html
18
+ Facter::Core::Execution.stubs(:exec).with("virtinfo -ap").
19
+ returns(ldom_fixtures('ldom_v1'))
20
+ Facter.collection.internal_loader.load(:ldom)
21
+ end
22
+
23
+ it "should return correct impl on version 1.0" do
24
+ Facter.fact(:ldom_domainrole_impl).value.should == "LDoms"
25
+ end
26
+
27
+ it "should return correct control on version 1.0" do
28
+ Facter.fact(:ldom_domainrole_control).value.should == "false"
29
+ end
30
+
31
+ it "should return correct io on version 1.0" do
32
+ Facter.fact(:ldom_domainrole_io).value.should == "true"
33
+ end
34
+
35
+ it "should return correct service on version 1.0" do
36
+ Facter.fact(:ldom_domainrole_service).value.should == "true"
37
+ end
38
+
39
+ it "should return correct root on version 1.0" do
40
+ Facter.fact(:ldom_domainrole_root).value.should == "true"
41
+ end
42
+
43
+ it "should return correct domain name on version 1.0" do
44
+ Facter.fact(:ldom_domainname).value.should == "primary"
45
+ end
46
+
47
+ it "should return correct uuid on version 1.0" do
48
+ Facter.fact(:ldom_domainuuid).value.should == "8e0d6ec5-cd55-e57f-ae9f-b4cc050999a4"
49
+ end
50
+
51
+ it "should return correct ldomcontrol on version 1.0" do
52
+ Facter.fact(:ldom_domaincontrol).value.should == "san-t2k-6"
53
+ end
54
+
55
+ it "should return correct serial on version 1.0" do
56
+ Facter.fact(:ldom_domainchassis).value.should == "0704RB0280"
57
+ end
58
+
59
+ it "should return correct virtual on version 1.0" do
60
+ Facter.fact(:virtual).value.should == "LDoms"
61
+ end
62
+ end
63
+
64
+ describe "when running on non ldom hardware" do
65
+ before :each do
66
+ Facter::Core::Execution.stubs(:exec).with("virtinfo -ap").returns(nil)
67
+ Facter.collection.internal_loader.load(:ldom)
68
+ end
69
+
70
+ it "should return correct virtual" do
71
+ Facter.fact(:ldom_domainrole_impl).should == nil
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,25 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "lsbdistcodename fact" do
6
+
7
+ [ "Linux", "GNU/kFreeBSD"].each do |kernel|
8
+ describe "on #{kernel}" do
9
+ before :each do
10
+ Facter.fact(:kernel).stubs(:value).returns kernel
11
+ end
12
+
13
+ it "should return the codename through lsb_release -c -s 2>/dev/null" do
14
+ Facter::Core::Execution.stubs(:exec).with('lsb_release -c -s 2>/dev/null').returns 'n/a'
15
+ Facter.fact(:lsbdistcodename).value.should == 'n/a'
16
+ end
17
+
18
+ it "should return nil if lsb_release is not installed" do
19
+ Facter::Core::Execution.stubs(:exec).with('lsb_release -c -s 2>/dev/null').returns nil
20
+ Facter.fact(:lsbdistcodename).value.should be_nil
21
+ end
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "lsbdistdescription fact" do
6
+
7
+ [ "Linux", "GNU/kFreeBSD"].each do |kernel|
8
+ describe "on #{kernel}" do
9
+ before :each do
10
+ Facter.fact(:kernel).stubs(:value).returns kernel
11
+ end
12
+
13
+ it "should return the description through lsb_release -d -s 2>/dev/null" do
14
+ Facter::Core::Execution.stubs(:exec).with('lsb_release -d -s 2>/dev/null').returns '"Gentoo Base System release 2.1"'
15
+ Facter.fact(:lsbdistdescription).value.should == 'Gentoo Base System release 2.1'
16
+ end
17
+
18
+ it "should return nil if lsb_release is not installed" do
19
+ Facter::Core::Execution.stubs(:exec).with('lsb_release -d -s 2>/dev/null').returns nil
20
+ Facter.fact(:lsbdistdescription).value.should be_nil
21
+ end
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "lsbdistid fact" do
6
+
7
+ [ "Linux", "GNU/kFreeBSD"].each do |kernel|
8
+ describe "on #{kernel}" do
9
+ before :each do
10
+ Facter.fact(:kernel).stubs(:value).returns kernel
11
+ end
12
+
13
+ it "should return the id through lsb_release -i -s 2>/dev/null" do
14
+ Facter::Core::Execution.stubs(:exec).with('lsb_release -i -s 2>/dev/null').returns 'Gentoo'
15
+ Facter.fact(:lsbdistid).value.should == 'Gentoo'
16
+ end
17
+
18
+ it "should return nil if lsb_release is not installed 2>/dev/null" do
19
+ Facter::Core::Execution.stubs(:exec).with('lsb_release -i -s 2>/dev/null').returns nil
20
+ Facter.fact(:lsbdistid).value.should be_nil
21
+ end
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "lsbdistrelease fact" do
6
+
7
+ [ "Linux", "GNU/kFreeBSD"].each do |kernel|
8
+ describe "on #{kernel}" do
9
+ before :each do
10
+ Facter.fact(:kernel).stubs(:value).returns kernel
11
+ end
12
+
13
+ it "should return the release through lsb_release -r -s 2>/dev/null" do
14
+ Facter::Core::Execution.stubs(:exec).with('lsb_release -r -s 2>/dev/null').returns '2.1'
15
+ Facter.fact(:lsbdistrelease).value.should == '2.1'
16
+ end
17
+
18
+ it "should return nil if lsb_release is not installed" do
19
+ Facter::Core::Execution.stubs(:exec).with('lsb_release -r -s 2>/dev/null').returns nil
20
+ Facter.fact(:lsbdistrelease).value.should be_nil
21
+ end
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter'
5
+
6
+ describe "LSB distribution major release fact" do
7
+ it "should be derived from lsb_release" do
8
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
9
+ Facter.stubs(:value).with(:lsbdistrelease).returns("10.10")
10
+
11
+ Facter.fact(:lsbmajdistrelease).value.should == "10"
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "lsbrelease fact" do
6
+
7
+ [ "Linux", "GNU/kFreeBSD"].each do |kernel|
8
+ describe "on #{kernel}" do
9
+ before :each do
10
+ Facter.fact(:kernel).stubs(:value).returns kernel
11
+ end
12
+
13
+ it "should return the release through lsb_release -v -s 2>/dev/null" do
14
+ Facter::Core::Execution.stubs(:exec).with('lsb_release -v -s 2>/dev/null').returns 'n/a'
15
+ Facter.fact(:lsbrelease).value.should == 'n/a'
16
+ end
17
+
18
+ it "should return nil if lsb_release is not installed" do
19
+ Facter::Core::Execution.stubs(:exec).with('lsb_release -v -s 2>/dev/null').returns nil
20
+ Facter.fact(:lsbrelease).value.should be_nil
21
+ end
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,61 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/ip'
5
+
6
+
7
+ def ifconfig_fixture(filename)
8
+ File.read(fixtures('ifconfig', filename))
9
+ end
10
+
11
+ describe "macaddress fact" do
12
+ include FacterSpec::ConfigHelper
13
+
14
+ before do
15
+ given_a_configuration_of(:is_windows => false)
16
+ end
17
+
18
+ describe "when run on Linux" do
19
+ before :each do
20
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
21
+ Facter.fact(:operatingsystem).stubs(:value).returns("Linux")
22
+ Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
23
+ end
24
+
25
+ it "should return the macaddress of the first interface" do
26
+ Facter::Util::IP.stubs(:exec_ifconfig).with(["-a","2>/dev/null"]).
27
+ returns(ifconfig_fixture('linux_ifconfig_all_with_multiple_interfaces'))
28
+
29
+ Facter.value(:macaddress).should == "00:12:3f:be:22:01"
30
+ end
31
+
32
+ it "should return nil when no macaddress can be found" do
33
+ Facter::Util::IP.stubs(:exec_ifconfig).with(["-a","2>/dev/null"]).
34
+ returns(ifconfig_fixture('linux_ifconfig_no_mac'))
35
+
36
+ proc { Facter.value(:macaddress) }.should_not raise_error
37
+ Facter.value(:macaddress).should be_nil
38
+ end
39
+
40
+ # some interfaces dont have a real mac addresses (like venet inside a container)
41
+ it "should return nil when no interface has a real macaddress" do
42
+ Facter::Util::IP.stubs(:exec_ifconfig).with(["-a","2>/dev/null"]).
43
+ returns(ifconfig_fixture('linux_ifconfig_venet'))
44
+
45
+ proc { Facter.value(:macaddress) }.should_not raise_error
46
+ Facter.value(:macaddress).should be_nil
47
+ end
48
+ end
49
+
50
+ describe "when run on BSD" do
51
+ it "should return macaddress information" do
52
+ Facter.fact(:kernel).stubs(:value).returns("FreeBSD")
53
+ Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
54
+ Facter::Util::IP.stubs(:exec_ifconfig).
55
+ returns(ifconfig_fixture('bsd_ifconfig_all_with_multiple_interfaces'))
56
+
57
+ Facter.value(:macaddress).should == "00:0b:db:93:09:67"
58
+ end
59
+ end
60
+
61
+ end
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter'
5
+ require 'facter/util/manufacturer'
6
+
7
+ describe "Hardware manufacturer facts" do
8
+
9
+ describe "on OS'es without DMI support" do
10
+
11
+ it "no DMI facts should be reported" do
12
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
13
+ Facter.fact(:boardmanufacturer).should == nil
14
+ Facter.fact(:boardproductname).should == nil
15
+ Facter.fact(:boardserialnumber).should == nil
16
+ Facter.fact(:bios_vendor).should == nil
17
+ Facter.fact(:bios_version).should == nil
18
+ Facter.fact(:bios_release_date).should == nil
19
+ Facter.fact(:type).should == nil
20
+ end
21
+
22
+ end
23
+
24
+ describe "on OS'es with DMI support" do
25
+ before :each do
26
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
27
+ dmidecode_output = <<-eos
28
+ Handle 0x0000, DMI type 0, 24 bytes
29
+ BIOS Information
30
+ Vendor: Dell Inc.
31
+ Version: 1.2.5
32
+ Release Date: 03/16/2011
33
+ Address: 0xF0000
34
+ Runtime Size: 64 kB
35
+ ROM Size: 4096 kB
36
+ Characteristics:
37
+ ISA is supported
38
+ PCI is supported
39
+ PNP is supported
40
+ BIOS is upgradeable
41
+ BIOS shadowing is allowed
42
+ Boot from CD is supported
43
+ Selectable boot is supported
44
+ EDD is supported
45
+ 8042 keyboard services are supported (int 9h)
46
+ Serial services are supported (int 14h)
47
+ CGA/mono video services are supported (int 10h)
48
+ ACPI is supported
49
+ USB legacy is supported
50
+ BIOS boot specification is supported
51
+ Function key-initiated network boot is supported
52
+ Targeted content distribution is supported
53
+ BIOS Revision: 1.2
54
+
55
+ Handle 0x0100, DMI type 1, 27 bytes
56
+ System Information
57
+ Manufacturer: Dell Inc.
58
+ Product Name: PowerEdge R515
59
+ Version: Not Specified
60
+ Serial Number: ABCD124
61
+ UUID: 1A2B3456-7890-1A23-4567-B8C91D123456
62
+ Wake-up Type: Power Switch
63
+ SKU Number: Not Specified
64
+ Family: Not Specified
65
+
66
+ Handle 0x0200, DMI type 2, 9 bytes
67
+ Base Board Information
68
+ Manufacturer: Dell Inc.
69
+ Product Name: 03X0MN
70
+ Version: A03
71
+ Serial Number: ..AB1234567B1234.
72
+ Asset Tag: Not Specified
73
+
74
+ Handle 0x0300, DMI type 3, 21 bytes
75
+ Chassis Information
76
+ Manufacturer: Dell Inc.
77
+ Type: Rack Mount Chassis
78
+ Lock: Present
79
+ Version: Not Specified
80
+ Serial Number: ABCD124
81
+ Asset Tag: Not Specified
82
+ Boot-up State: Safe
83
+ Power Supply State: Safe
84
+ Thermal State: Safe
85
+ Security Status: Unknown
86
+ OEM Information: 0x00000000
87
+ Height: 2 U
88
+ Number Of Power Cords: Unspecified
89
+ Contained Elements: 0
90
+
91
+ Handle 0x7F00, DMI type 127, 4 bytes
92
+ End Of Table
93
+ eos
94
+ Facter::Manufacturer.stubs(:get_dmi_table).returns(dmidecode_output)
95
+ end
96
+
97
+ it "should report the correct details from the DMI query" do
98
+ Facter.fact(:manufacturer).value.should == "Dell Inc."
99
+ Facter.fact(:boardmanufacturer).value.should == "Dell Inc."
100
+ Facter.fact(:boardproductname).value.should == "03X0MN"
101
+ Facter.fact(:boardserialnumber).value.should == "..AB1234567B1234."
102
+ Facter.fact(:bios_vendor).value.should == "Dell Inc."
103
+ Facter.fact(:bios_version).value.should == "1.2.5"
104
+ Facter.fact(:bios_release_date).value.should == "03/16/2011"
105
+ Facter.fact(:manufacturer).value.should == "Dell Inc."
106
+ Facter.fact(:productname).value.should == "PowerEdge R515"
107
+ Facter.fact(:serialnumber).value.should == "ABCD124"
108
+ Facter.fact(:type).value.should == "Rack Mount Chassis"
109
+ Facter.fact(:productname).value.should_not == Facter.fact(:boardproductname).value
110
+ Facter.fact(:serialnumber).value.should_not == Facter.fact(:boardserialnumber).value
111
+ end
112
+
113
+ end
114
+
115
+ end
@@ -0,0 +1,539 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "Memory facts" do
6
+ before(:each) do
7
+ Facter.collection.internal_loader.load(:memory)
8
+ end
9
+
10
+ after(:each) do
11
+ Facter.clear
12
+ end
13
+
14
+ describe "when returning scaled sizes" do
15
+ [ "memorysize",
16
+ "memoryfree",
17
+ "swapsize",
18
+ "swapfree"
19
+ ].each do |fact|
20
+
21
+ describe "when #{fact}_mb does not exist" do
22
+ before(:each) do
23
+ Facter.fact(fact + "_mb").stubs(:value).returns(nil)
24
+ end
25
+
26
+ it "#{fact} should not exist either" do
27
+ Facter.fact(fact).value.should be_nil
28
+ end
29
+ end
30
+
31
+ { "200.00" => "200.00 MB",
32
+ "1536.00" => "1.50 GB",
33
+ "1572864.00" => "1.50 TB",
34
+ }.each do |mbval, scval|
35
+ it "should scale #{fact} when given #{mbval} MB" do
36
+ Facter.fact(fact + "_mb").stubs(:value).returns(mbval)
37
+ Facter.fact(fact).value.should == scval
38
+ end
39
+ end
40
+ end
41
+
42
+ after(:each) do
43
+ Facter.clear
44
+ end
45
+ end
46
+
47
+ describe "on Darwin" do
48
+ before(:each) do
49
+ Facter.clear
50
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
51
+ Facter::Core::Execution.stubs(:exec).with('sysctl -n hw.memsize').returns('8589934592')
52
+ sample_vm_stat = <<VMSTAT
53
+ Mach Virtual Memory Statistics: (page size of 4096 bytes)
54
+ Pages free: 28430.
55
+ Pages active: 1152576.
56
+ Pages inactive: 489054.
57
+ Pages speculative: 7076.
58
+ Pages wired down: 418217.
59
+ "Translation faults": 1340091228.
60
+ Pages copy-on-write: 16851357.
61
+ Pages zero filled: 665168768.
62
+ Pages reactivated: 3082708.
63
+ Pageins: 13862917.
64
+ Pageouts: 1384383.
65
+ Object cache: 14 hits of 2619925 lookups (0% hit rate)
66
+ VMSTAT
67
+ Facter::Core::Execution.stubs(:exec).with('vm_stat').returns(sample_vm_stat)
68
+ Facter::Core::Execution.stubs(:exec).with('sysctl vm.swapusage').returns("vm.swapusage: total = 64.00M used = 1.00M free = 63.00M (encrypted)")
69
+
70
+ Facter.collection.internal_loader.load(:memory)
71
+ end
72
+
73
+ it "should return the current swap size in MB" do
74
+ Facter.fact(:swapsize_mb).value.should == "64.00"
75
+ end
76
+
77
+ it "should return the current swap free in MB" do
78
+ Facter.fact(:swapfree_mb).value.should == "63.00"
79
+ end
80
+
81
+ it "should return whether swap is encrypted" do
82
+ Facter.fact(:swapencrypted).value.should == true
83
+ end
84
+
85
+ it "should return the memory size in MB" do
86
+ Facter.fact(:memorysize_mb).value.should == "8192.00"
87
+ end
88
+
89
+ it "should return the memory free in MB" do
90
+ Facter.fact(:memoryfree_mb).value.should == "138.70"
91
+ end
92
+
93
+ after(:each) do
94
+ Facter.clear
95
+ end
96
+ end
97
+
98
+ [ "linux",
99
+ "gnu/kfreebsd",
100
+ ].each do |kernel|
101
+
102
+
103
+ describe "on #{kernel}" do
104
+ before(:each) do
105
+ Facter.clear
106
+ Facter.fact(:kernel).stubs(:value).returns(kernel)
107
+ meminfo = <<INFO
108
+ MemTotal: 255908 kB
109
+ MemFree: 69936 kB
110
+ Buffers: 15812 kB
111
+ Cached: 115124 kB
112
+ SwapCached: 0 kB
113
+ Active: 92700 kB
114
+ Inactive: 63792 kB
115
+ SwapTotal: 524280 kB
116
+ SwapFree: 524280 kB
117
+ Dirty: 4 kB
118
+ INFO
119
+
120
+ File.stubs(:readlines).with("/proc/meminfo").returns(meminfo.split("\n"))
121
+
122
+ Facter.collection.internal_loader.load(:memory)
123
+ end
124
+
125
+ after(:each) do
126
+ Facter.clear
127
+ end
128
+
129
+ it "should return the current memory size in MB" do
130
+ Facter.fact(:memorysize_mb).value.should == "249.91"
131
+ end
132
+
133
+ it "should return the current memory free in MB" do
134
+ Facter.fact(:memoryfree_mb).value.should == "196.16"
135
+ end
136
+
137
+ it "should return the current swap size in MB" do
138
+ Facter.fact(:swapsize_mb).value.should == "511.99"
139
+ end
140
+
141
+ it "should return the current swap free in MB" do
142
+ Facter.fact(:swapfree_mb).value.should == "511.99"
143
+ end
144
+ end
145
+ end
146
+
147
+ describe "on AIX" do
148
+ before (:each) do
149
+ Facter.clear
150
+ Facter.fact(:kernel).stubs(:value).returns("AIX")
151
+
152
+ swapusage = <<SWAP
153
+ device maj,min total free
154
+ /dev/hd6 10, 2 512MB 508MB
155
+ SWAP
156
+
157
+ Facter::Core::Execution.stubs(:exec).with('swap -l 2>/dev/null').returns(swapusage)
158
+
159
+ svmon = <<SVMON
160
+ Unit: KB
161
+ --------------------------------------------------------------------------------------
162
+ size inuse free pin virtual available mmode
163
+ memory 32768000 9948408 22819592 2432080 4448928 27231828 Ded
164
+ pg space 34078720 15000
165
+
166
+ work pers clnt other
167
+ pin 1478228 0 0 953852
168
+ in use 4448928 0 5499480
169
+ SVMON
170
+
171
+ Facter::Core::Execution.stubs(:exec).with('/usr/bin/svmon -O unit=KB').returns(svmon)
172
+
173
+ Facter.collection.internal_loader.load(:memory)
174
+ end
175
+
176
+ after(:each) do
177
+ Facter.clear
178
+ end
179
+
180
+ describe "when not root" do
181
+ before(:each) do
182
+ Facter.fact(:id).stubs(:value).returns("notroot")
183
+ end
184
+
185
+ it "should return nil for swap size" do
186
+ Facter.fact(:swapsize_mb).value.should be_nil
187
+ end
188
+
189
+ it "should return nil for swap free" do
190
+ Facter.fact(:swapfree_mb).value.should be_nil
191
+ end
192
+ end
193
+
194
+ describe "when root" do
195
+ before(:each) do
196
+ Facter.fact(:id).stubs(:value).returns("root")
197
+ end
198
+
199
+ it "should return the current swap size in MB" do
200
+ Facter.fact(:swapsize_mb).value.should == "512.00"
201
+ end
202
+
203
+ it "should return the current swap free in MB" do
204
+ Facter.fact(:swapfree_mb).value.should == "508.00"
205
+ end
206
+ end
207
+
208
+ it "should return the current memory free in MB" do
209
+ Facter.fact(:memoryfree_mb).value.should == "22284.76"
210
+ end
211
+
212
+ it "should return the current memory size in MB" do
213
+ Facter.fact(:memorysize_mb).value.should == "32000.00"
214
+ end
215
+
216
+ end
217
+
218
+
219
+ describe "on OpenBSD" do
220
+ before :each do
221
+ Facter.clear
222
+ Facter.fact(:kernel).stubs(:value).returns("OpenBSD")
223
+
224
+ swapusage = "total: 148342k bytes allocated = 0k used, 148342k available"
225
+ Facter::Core::Execution.stubs(:exec).with('swapctl -s').returns(swapusage)
226
+
227
+ vmstat = <<EOS
228
+ procs memory page disks traps cpu
229
+ r b w avm fre flt re pi po fr sr cd0 sd0 int sys cs us sy id
230
+ 0 0 0 11048 181028 39 0 0 0 0 0 0 1 3 90 17 0 0 100
231
+ EOS
232
+ Facter::Core::Execution.stubs(:exec).with('vmstat').returns(vmstat)
233
+
234
+ Facter::Core::Execution.stubs(:exec).with("sysctl hw.physmem | cut -d'=' -f2").returns('267321344')
235
+
236
+ Facter.collection.internal_loader.load(:memory)
237
+ end
238
+
239
+ after :each do
240
+ Facter.clear
241
+ end
242
+
243
+ it "should return the current swap free in MB" do
244
+ Facter.fact(:swapfree_mb).value.should == "144.87"
245
+ end
246
+
247
+ it "should return the current swap size in MB" do
248
+ Facter.fact(:swapsize_mb).value.should == "144.87"
249
+ end
250
+
251
+ it "should return the current memory free in MB" do
252
+ Facter.fact(:memoryfree_mb).value.should == "176.79"
253
+ end
254
+
255
+ it "should return the current memory size in MB" do
256
+ Facter.fact(:memorysize_mb).value.should == "254.94"
257
+ end
258
+ end
259
+
260
+ describe "on Solaris" do
261
+ before(:each) do
262
+ Facter.clear
263
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
264
+ sample_prtconf = <<PRTCONF
265
+ System Configuration: Sun Microsystems sun4u
266
+ Memory size: 2048 Megabytes
267
+ System Peripherals (Software Nodes):
268
+
269
+ PRTCONF
270
+ Facter::Core::Execution.stubs(:exec).with('/usr/sbin/prtconf 2>/dev/null').returns sample_prtconf
271
+
272
+ vmstat_lines = <<VMSTAT
273
+ kthr memory page disk faults cpu
274
+ r b w swap free re mf pi po fr de sr s0 s3 -- -- in sy cs us sy id
275
+ 0 0 0 1154552 476224 8 19 0 0 0 0 0 0 0 0 0 460 294 236 1 2 97
276
+ VMSTAT
277
+ Facter::Core::Execution.stubs(:exec).with('vmstat').returns(vmstat_lines)
278
+ end
279
+
280
+ after(:each) do
281
+ Facter.clear
282
+ end
283
+
284
+ describe "when single swap exists" do
285
+ before(:each) do
286
+ sample_swap_line = <<SWAP
287
+ swapfile dev swaplo blocks free
288
+ /dev/swap 4294967295,4294967295 16 2097136 2097136
289
+ SWAP
290
+ Facter::Core::Execution.stubs(:exec).with('/usr/sbin/swap -l 2>/dev/null').returns sample_swap_line
291
+
292
+ Facter.collection.internal_loader.load(:memory)
293
+ end
294
+
295
+ it "should return the current memory size in MB" do
296
+ Facter.fact(:memorysize_mb).value.should == "2048.00"
297
+ end
298
+
299
+ it "should return the current memory free in MB" do
300
+ Facter.fact(:memoryfree_mb).value.should == "465.06"
301
+ end
302
+
303
+ it "should return the current swap free in MB" do
304
+ Facter.fact(:swapfree_mb).value.should == "1023.99"
305
+ end
306
+
307
+ it "should return the current swap size in MB" do
308
+ Facter.fact(:swapsize_mb).value.should == "1023.99"
309
+ end
310
+ end
311
+
312
+ describe "when multiple swaps exist" do
313
+ before(:each) do
314
+ sample_swap_line = <<SWAP
315
+ swapfile dev swaplo blocks free
316
+ /dev/swap 4294967295,4294967295 16 2097136 2097136
317
+ /dev/swap2 4294967295,4294967295 16 2097136 2097136
318
+ SWAP
319
+ Facter::Core::Execution.stubs(:exec).with('/usr/sbin/swap -l 2>/dev/null').returns sample_swap_line
320
+ Facter.collection.internal_loader.load(:memory)
321
+ end
322
+
323
+ it "should return the current memory size in MB" do
324
+ Facter.fact(:memorysize_mb).value.should == "2048.00"
325
+ end
326
+
327
+ it "should return the current memory free in MB" do
328
+ Facter.fact(:memoryfree_mb).value.should == "465.06"
329
+ end
330
+
331
+ it "should return the current swap free in MB" do
332
+ Facter.fact(:swapfree_mb).value.should == "2047.98"
333
+ end
334
+
335
+ it "should return the current swap size in MB" do
336
+ Facter.fact(:swapsize_mb).value.should == "2047.98"
337
+ end
338
+ end
339
+
340
+ describe "when no swap exists" do
341
+ before(:each) do
342
+ Facter::Core::Execution.stubs(:exec).with('/usr/sbin/swap -l 2>/dev/null').returns ""
343
+
344
+ Facter.collection.internal_loader.load(:memory)
345
+ end
346
+
347
+ it "should return the current memory size in MB" do
348
+ Facter.fact(:memorysize_mb).value.should == "2048.00"
349
+ end
350
+
351
+ it "should return the current memory free in MB" do
352
+ Facter.fact(:memoryfree_mb).value.should == "465.06"
353
+ end
354
+
355
+ it "should return 0 for the swap free in MB" do
356
+ Facter.fact(:swapfree_mb).value.should == "0.00"
357
+ end
358
+
359
+ it "should return 0 for the swap size in MB" do
360
+ Facter.fact(:swapsize_mb).value.should == "0.00"
361
+ end
362
+ end
363
+ end
364
+
365
+ describe "on DragonFly BSD" do
366
+ before :each do
367
+ Facter.clear
368
+ Facter.fact(:kernel).stubs(:value).returns("dragonfly")
369
+
370
+ swapusage = "total: 148342k bytes allocated = 0k used, 148342k available"
371
+ Facter::Core::Execution.stubs(:exec).with('/sbin/sysctl -n hw.pagesize').returns("4096")
372
+ Facter::Core::Execution.stubs(:exec).with('/sbin/sysctl -n vm.swap_size').returns("128461")
373
+ Facter::Core::Execution.stubs(:exec).with('/sbin/sysctl -n vm.swap_anon_use').returns("2635")
374
+ Facter::Core::Execution.stubs(:exec).with('/sbin/sysctl -n vm.swap_cache_use').returns("0")
375
+
376
+ vmstat = <<EOS
377
+ procs memory page disks faults cpu
378
+ r b w avm fre flt re pi po fr sr da0 sg1 in sy cs us sy id
379
+ 0 0 0 33152 13940 1902120 2198 53119 11642 6544597 5460994 0 0 6148243 7087927 3484264 0 1 9
380
+ EOS
381
+ Facter::Core::Execution.stubs(:exec).with('vmstat').returns(vmstat)
382
+
383
+ Facter::Core::Execution.stubs(:exec).with("sysctl -n hw.physmem").returns('248512512')
384
+
385
+ Facter.collection.internal_loader.load(:memory)
386
+ end
387
+
388
+ after :each do
389
+ Facter.clear
390
+ end
391
+
392
+ it "should return the current swap free in MB" do
393
+ Facter.fact(:swapfree_mb).value.should == "491.51"
394
+ end
395
+
396
+ it "should return the current swap size in MB" do
397
+ Facter.fact(:swapsize_mb).value.should == "501.80"
398
+ end
399
+
400
+ it "should return the current memory size in MB" do
401
+ Facter.fact(:memorysize_mb).value.should == "237.00"
402
+ end
403
+
404
+ it "should return the current memory free in MB" do
405
+ Facter.fact(:memoryfree_mb).value.should == "13.61"
406
+ end
407
+ end
408
+
409
+ describe "on FreeBSD" do
410
+ before(:each) do
411
+ Facter.clear
412
+ Facter.fact(:kernel).stubs(:value).returns("FreeBSD")
413
+
414
+ sample_vmstat = <<VM_STAT
415
+ procs memory page disks faults cpu
416
+ r b w avm fre flt re pi po fr sr da0 cd0 in sy cs us sy id
417
+ 1 0 0 207600 656640 10 0 0 0 13 0 0 0 51 164 257 0 1 99
418
+ VM_STAT
419
+ Facter::Core::Execution.stubs(:exec).with('vmstat -H').returns sample_vmstat
420
+ sample_physmem = <<PHYSMEM
421
+ 1056276480
422
+ PHYSMEM
423
+ Facter::Core::Execution.stubs(:exec).with('sysctl -n hw.physmem').returns sample_physmem
424
+ end
425
+
426
+ after(:each) do
427
+ Facter.clear
428
+ end
429
+
430
+ describe "with no swap" do
431
+ before(:each) do
432
+ sample_swapinfo = <<SWAP
433
+ Device 1K-blocks Used Avail Capacity
434
+ SWAP
435
+ Facter::Core::Execution.stubs(:exec).with('swapinfo -k').returns sample_swapinfo
436
+
437
+ Facter.collection.internal_loader.load(:memory)
438
+ end
439
+
440
+ it "should return the current swap free in MB" do
441
+ Facter.fact(:swapfree_mb).value.should == "0.00"
442
+ end
443
+
444
+ it "should return the current swap size in MB" do
445
+ Facter.fact(:swapsize_mb).value.should == "0.00"
446
+ end
447
+
448
+ it "should return the current memory size in MB" do
449
+ Facter.fact(:memorysize_mb).value.should == "1007.34"
450
+ end
451
+
452
+ it "should return the current memory free in MB" do
453
+ Facter.fact(:memoryfree_mb).value.should == "641.25"
454
+ end
455
+ end
456
+
457
+ describe "with one swap" do
458
+ before(:each) do
459
+ sample_swapinfo = <<SWAP
460
+ Device 1K-blocks Used Avail Capacity
461
+ /dev/da0p3 2048540 0 1048540 0%
462
+ SWAP
463
+ Facter::Core::Execution.stubs(:exec).with('swapinfo -k').returns sample_swapinfo
464
+
465
+ Facter.collection.internal_loader.load(:memory)
466
+ end
467
+
468
+ it "should return the current swap free in MB" do
469
+ Facter.fact(:swapfree_mb).value.should == "1023.96"
470
+ end
471
+
472
+ it "should return the current swap size in MB" do
473
+ Facter.fact(:swapsize_mb).value.should == "2000.53"
474
+ end
475
+
476
+ it "should return the current memory size in MB" do
477
+ Facter.fact(:memorysize_mb).value.should == "1007.34"
478
+ end
479
+
480
+ it "should return the current memory free in MB" do
481
+ Facter.fact(:memoryfree_mb).value.should == "641.25"
482
+ end
483
+ end
484
+
485
+ describe "with multiple swaps" do
486
+ before(:each) do
487
+ sample_swapinfo = <<SWAP
488
+ Device 1K-blocks Used Avail Capacity
489
+ /dev/da0p3 2048540 0 1048540 0%
490
+ /dev/da0p4 3048540 0 1048540 0%
491
+ SWAP
492
+ Facter::Core::Execution.stubs(:exec).with('swapinfo -k').returns sample_swapinfo
493
+
494
+ Facter.collection.internal_loader.load(:memory)
495
+ end
496
+
497
+ it "should return the current swap free in MB" do
498
+ Facter.fact(:swapfree_mb).value.should == "2047.93"
499
+ end
500
+
501
+ it "should return the current swap size in MB" do
502
+ Facter.fact(:swapsize_mb).value.should == "4977.62"
503
+ end
504
+
505
+ it "should return the current memory size in MB" do
506
+ Facter.fact(:memorysize_mb).value.should == "1007.34"
507
+ end
508
+
509
+ it "should return the current memory free in MB" do
510
+ Facter.fact(:memoryfree_mb).value.should == "641.25"
511
+ end
512
+ end
513
+ end
514
+
515
+ describe "on Windows" do
516
+ before :each do
517
+ Facter.clear
518
+ Facter.fact(:kernel).stubs(:value).returns("windows")
519
+ Facter.collection.internal_loader.load(:memory)
520
+ require 'facter/util/wmi'
521
+ end
522
+
523
+ it "should return free memory in MB" do
524
+ os = stubs 'os'
525
+ os.stubs(:FreePhysicalMemory).returns("3415624")
526
+ Facter::Util::WMI.stubs(:execquery).returns([os])
527
+
528
+ Facter.fact(:memoryfree_mb).value.should == '3335.57'
529
+ end
530
+
531
+ it "should return total memory in MB" do
532
+ computer = stubs 'computer'
533
+ computer.stubs(:TotalPhysicalMemory).returns("4193837056")
534
+ Facter::Util::WMI.stubs(:execquery).returns([computer])
535
+
536
+ Facter.fact(:memorysize_mb).value.should == '3999.55'
537
+ end
538
+ end
539
+ end