facter 2.0.1.rc1-x86-mingw32

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 +758 -0
@@ -0,0 +1,21 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/xendomains'
5
+
6
+ describe Facter::Util::Xendomains do
7
+ describe ".get_domains" do
8
+ it "should return a list of running Xen Domains on Xen0" do
9
+ xen0_domains = my_fixture_read("xendomains")
10
+ Facter::Core::Execution.stubs(:exec).with('/usr/sbin/xm list 2>/dev/null').returns(xen0_domains)
11
+ Facter::Util::Xendomains.get_domains.should == %{web01,mailserver}
12
+ end
13
+
14
+ describe "when xm list isn't executable" do
15
+ it "should be nil" do
16
+ Facter::Core::Execution.stubs(:exec).with('/usr/sbin/xm list 2>/dev/null').returns(nil)
17
+ Facter::Util::Xendomains.get_domains.should == nil
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,42 @@
1
+ require "spec_helper"
2
+ require "facter/version"
3
+ require 'pathname'
4
+
5
+ describe "Facter.version Public API" do
6
+ before :each do
7
+ Facter.instance_eval do
8
+ if @facter_version
9
+ @facter_version = nil
10
+ end
11
+ end
12
+ end
13
+
14
+ context "without a VERSION file" do
15
+ before :each do
16
+ Facter.stubs(:read_version_file).returns(nil)
17
+ end
18
+
19
+ it "is Facter::FACTERVERSION" do
20
+ Facter.version.should == Facter::FACTERVERSION
21
+ end
22
+ it "respects the version= setter" do
23
+ Facter.version = '1.2.3'
24
+ Facter.version.should == '1.2.3'
25
+ end
26
+ end
27
+
28
+ context "with a VERSION file" do
29
+ it "is the content of the file" do
30
+ Facter.expects(:read_version_file).with() do |path|
31
+ pathname = Pathname.new(path)
32
+ pathname.basename.to_s == "VERSION"
33
+ end.returns('1.6.14-6-gea42046')
34
+
35
+ Facter.version.should == '1.6.14-6-gea42046'
36
+ end
37
+ it "respects the version= setter" do
38
+ Facter.version = '1.2.3'
39
+ Facter.version.should == '1.2.3'
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,470 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/virtual'
5
+ require 'facter/util/macosx'
6
+
7
+ describe "Virtual fact" do
8
+ before(:each) do
9
+ Facter::Util::Virtual.stubs(:zone?).returns(false)
10
+ Facter::Util::Virtual.stubs(:openvz?).returns(false)
11
+ Facter::Util::Virtual.stubs(:vserver?).returns(false)
12
+ Facter::Util::Virtual.stubs(:xen?).returns(false)
13
+ Facter::Util::Virtual.stubs(:kvm?).returns(false)
14
+ Facter::Util::Virtual.stubs(:hpvm?).returns(false)
15
+ Facter::Util::Virtual.stubs(:zlinux?).returns(false)
16
+ Facter::Util::Virtual.stubs(:virt_what).returns(nil)
17
+ Facter::Util::Virtual.stubs(:rhev?).returns(false)
18
+ Facter::Util::Virtual.stubs(:ovirt?).returns(false)
19
+ Facter::Util::Virtual.stubs(:virtualbox?).returns(false)
20
+ end
21
+
22
+ it "should be zone on Solaris when a zone" do
23
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
24
+ Facter::Util::Virtual.stubs(:zone?).returns(true)
25
+ Facter::Util::Virtual.stubs(:vserver?).returns(false)
26
+ Facter::Util::Virtual.stubs(:xen?).returns(false)
27
+ Facter.fact(:virtual).value.should == "zone"
28
+ end
29
+
30
+ it "should be jail on FreeBSD when a jail in kvm" do
31
+ Facter.fact(:kernel).stubs(:value).returns("FreeBSD")
32
+ Facter::Util::Virtual.stubs(:jail?).returns(true)
33
+ Facter::Util::Virtual.stubs(:kvm?).returns(true)
34
+ Facter.fact(:virtual).value.should == "jail"
35
+ end
36
+
37
+ it "should be hpvm on HP-UX when in HP-VM" do
38
+ Facter.fact(:kernel).stubs(:value).returns("HP-UX")
39
+ Facter::Util::Virtual.stubs(:hpvm?).returns(true)
40
+ Facter.fact(:virtual).value.should == "hpvm"
41
+ end
42
+
43
+ it "should be zlinux on s390x" do
44
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
45
+ Facter.fact(:architecture).stubs(:value).returns("s390x")
46
+ Facter::Util::Virtual.stubs(:zlinux?).returns(true)
47
+ Facter.fact(:virtual).value.should == "zlinux"
48
+ end
49
+
50
+ describe "on Darwin" do
51
+ before do
52
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
53
+ end
54
+
55
+ it "should be parallels with Parallels vendor id" do
56
+ Facter::Util::Macosx.stubs(:profiler_data).returns({ "spdisplays_vendor-id" => "0x1ab8" })
57
+ Facter.fact(:virtual).value.should == "parallels"
58
+ end
59
+
60
+ it "should be parallels with Parallels vendor name" do
61
+ Facter::Util::Macosx.stubs(:profiler_data).returns({ "spdisplays_vendor" => "Parallels" })
62
+ Facter.fact(:virtual).value.should == "parallels"
63
+ end
64
+
65
+ it "should be vmware with VMWare vendor id" do
66
+ Facter::Util::Macosx.stubs(:profiler_data).returns({ "spdisplays_vendor-id" => "0x15ad" })
67
+ Facter.fact(:virtual).value.should == "vmware"
68
+ end
69
+
70
+ it "should be vmware with VMWare vendor name" do
71
+ Facter::Util::Macosx.stubs(:profiler_data).returns({ "spdisplays_vendor" => "VMWare" })
72
+ Facter.fact(:virtual).value.should == "vmware"
73
+ end
74
+ end
75
+
76
+ describe "on Linux" do
77
+ before(:each) do
78
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
79
+ Facter.fact(:operatingsystem).stubs(:value).returns("Linux")
80
+
81
+ Facter::Core::Execution.stubs(:exec).with("vmware -v").returns false
82
+
83
+ FileTest.stubs(:exists?).with("/proc/sys/xen").returns false
84
+ FileTest.stubs(:exists?).with("/sys/bus/xen").returns false
85
+ FileTest.stubs(:exists?).with("/proc/xen").returns false
86
+ Facter.fact(:architecture).stubs(:value).returns(true)
87
+ end
88
+
89
+ it "should be parallels with Parallels vendor id from lspci 2>/dev/null" do
90
+ Facter::Util::Virtual.stubs(:lspci).returns("01:00.0 VGA compatible controller: Unknown device 1ab8:4005")
91
+ Facter.fact(:virtual).value.should == "parallels"
92
+ end
93
+
94
+ it "should be parallels with Parallels vendor name from lspci 2>/dev/null" do
95
+ Facter::Util::Virtual.stubs(:lspci).returns("01:00.0 VGA compatible controller: Parallels Display Adapter")
96
+ Facter.fact(:virtual).value.should == "parallels"
97
+ end
98
+
99
+ it "should be vmware with VMware vendor name from lspci 2>/dev/null" do
100
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter")
101
+ Facter.fact(:virtual).value.should == "vmware"
102
+ end
103
+
104
+ it "should be virtualbox with VirtualBox vendor name from lspci 2>/dev/null" do
105
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter")
106
+ Facter.fact(:virtual).value.should == "virtualbox"
107
+ end
108
+
109
+ it "should be vmware with VMWare vendor name from dmidecode" do
110
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
111
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("On Board Device 1 Information\nType: Video\nStatus: Disabled\nDescription: VMware SVGA II")
112
+ Facter.fact(:virtual).value.should == "vmware"
113
+ end
114
+
115
+ it "should be xen0 with xen dom0 files in /proc" do
116
+ Facter.fact(:hardwaremodel).stubs(:value).returns("i386")
117
+ Facter::Util::Virtual.expects(:xen?).returns(true)
118
+ FileTest.expects(:exists?).with("/dev/xen/evtchn").returns(true)
119
+ Facter.fact(:virtual).value.should == "xen0"
120
+ end
121
+
122
+ it "should be xenu with xen domU files in /proc" do
123
+ Facter.fact(:hardwaremodel).stubs(:value).returns("i386")
124
+ Facter::Util::Virtual.expects(:xen?).returns(true)
125
+ FileTest.expects(:exists?).with("/dev/xen/evtchn").returns(false)
126
+ FileTest.expects(:exists?).with("/proc/xen").returns(true)
127
+ Facter.fact(:virtual).value.should == "xenu"
128
+ end
129
+
130
+ it "should be xenhvm with Xen HVM vendor name from lspci 2>/dev/null" do
131
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("00:03.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)")
132
+ Facter.fact(:virtual).value.should == "xenhvm"
133
+ end
134
+
135
+ it "should be xenhvm with Xen HVM vendor name from dmidecode" do
136
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
137
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("System Information\nManufacturer: Xen\nProduct Name: HVM domU")
138
+ Facter.fact(:virtual).value.should == "xenhvm"
139
+ end
140
+
141
+ it "should be parallels with Parallels vendor name from dmidecode" do
142
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
143
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("On Board Device Information\nType: Video\nStatus: Disabled\nDescription: Parallels Video Adapter")
144
+ Facter.fact(:virtual).value.should == "parallels"
145
+ end
146
+
147
+ it "should be virtualbox with VirtualBox vendor name from dmidecode" do
148
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
149
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("BIOS Information\nVendor: innotek GmbH\nVersion: VirtualBox\n\nSystem Information\nManufacturer: innotek GmbH\nProduct Name: VirtualBox\nFamily: Virtual Machine")
150
+ Facter.fact(:virtual).value.should == "virtualbox"
151
+ end
152
+
153
+ it "should be rhev with RHEV Hypervisor product name from dmidecode" do
154
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
155
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
156
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("Product Name: RHEV Hypervisor")
157
+ Facter.fact(:virtual).value.should == "rhev"
158
+ end
159
+
160
+ it "should be ovirt with oVirt Node product name from dmidecode" do
161
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
162
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
163
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("Product Name: oVirt Node")
164
+ Facter.fact(:virtual).value.should == "ovirt"
165
+ end
166
+
167
+ it "should be hyperv with Microsoft vendor name from lspci 2>/dev/null" do
168
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual VGA")
169
+ Facter.fact(:virtual).value.should == "hyperv"
170
+ end
171
+
172
+ it "should be hyperv with Microsoft vendor name from dmidecode" do
173
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
174
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("System Information\nManufacturer: Microsoft Corporation\nProduct Name: Virtual Machine")
175
+ Facter.fact(:virtual).value.should == "hyperv"
176
+ end
177
+
178
+ context "In Google Compute Engine" do
179
+ before :each do
180
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
181
+ end
182
+
183
+ context "Without /sys/firmware/dmi/entries/1-0/raw" do
184
+ before :each do
185
+ Facter::Util::Virtual.stubs(:read_sysfs_dmi_entries).returns(nil)
186
+ end
187
+
188
+ it "should be gce with gce vendor name from lspci 2>/dev/null" do
189
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("00:05.0 Class 8007: Google, Inc. Device 6442")
190
+ Facter.fact(:virtual).value.should == "gce"
191
+ end
192
+ end
193
+
194
+ context "With /sys/firmware/dmi/entries/1-0/raw" do
195
+ let :sysfs_dmi_raw do
196
+ my_fixture_read('sysfs_dmi_entries_raw.txt')
197
+ end
198
+
199
+ before :each do
200
+ Facter::Util::Virtual.stubs(:read_sysfs_dmi_entries).returns(sysfs_dmi_raw)
201
+ end
202
+
203
+ it "(#17612) is 'gce'" do
204
+ Facter.fact(:virtual).value.should == "gce"
205
+ end
206
+ end
207
+ end
208
+
209
+ it "(#20236) is vmware when dmidecode contains vmware and lspci returns insufficient information" do
210
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("garbage\ninformation\n")
211
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("On Board Device 1 Information\nType: Video\nStatus: Disabled\nDescription: VMware SVGA II")
212
+ Facter.fact(:virtual).value.should eq("vmware")
213
+ end
214
+ end
215
+
216
+ describe "on Solaris" do
217
+ before(:each) do
218
+ Facter::Core::Execution.stubs(:exec).with("vmware -v").returns false
219
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
220
+ end
221
+
222
+ it "should be vmware with VMWare vendor name from prtdiag" do
223
+ Facter.fact(:hardwaremodel).stubs(:value).returns(nil)
224
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
225
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns(nil)
226
+ Facter::Core::Execution.stubs(:exec).with('prtdiag').returns("System Configuration: VMware, Inc. VMware Virtual Platform")
227
+ Facter.fact(:virtual).value.should == "vmware"
228
+ end
229
+
230
+ it "should be parallels with Parallels vendor name from prtdiag" do
231
+ Facter.fact(:hardwaremodel).stubs(:value).returns(nil)
232
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
233
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns(nil)
234
+ Facter::Core::Execution.stubs(:exec).with('prtdiag').returns("System Configuration: Parallels Virtual Platform")
235
+ Facter.fact(:virtual).value.should == "parallels"
236
+ end
237
+
238
+ it "should be virtualbox with VirtualBox vendor name from prtdiag" do
239
+ Facter.fact(:hardwaremodel).stubs(:value).returns(nil)
240
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
241
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns(nil)
242
+ Facter::Core::Execution.stubs(:exec).with('prtdiag').returns("System Configuration: innotek GmbH VirtualBox")
243
+ Facter.fact(:virtual).value.should == "virtualbox"
244
+ end
245
+ end
246
+
247
+ describe "on OpenBSD" do
248
+ before do
249
+ Facter::Core::Execution.stubs(:exec).with("vmware -v").returns false
250
+ Facter.fact(:kernel).stubs(:value).returns("OpenBSD")
251
+ Facter.fact(:hardwaremodel).stubs(:value).returns(nil)
252
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
253
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns(nil)
254
+ end
255
+
256
+ it "should be parallels with Parallels product name from sysctl" do
257
+ Facter::Core::Execution.stubs(:exec).with('sysctl -n hw.product 2>/dev/null').returns("Parallels Virtual Platform")
258
+ Facter.fact(:virtual).value.should == "parallels"
259
+ end
260
+
261
+ it "should be vmware with VMware product name from sysctl" do
262
+ Facter::Core::Execution.stubs(:exec).with('sysctl -n hw.product 2>/dev/null').returns("VMware Virtual Platform")
263
+ Facter.fact(:virtual).value.should == "vmware"
264
+ end
265
+
266
+ it "should be virtualbox with VirtualBox product name from sysctl" do
267
+ Facter::Core::Execution.stubs(:exec).with('sysctl -n hw.product 2>/dev/null').returns("VirtualBox")
268
+ Facter.fact(:virtual).value.should == "virtualbox"
269
+ end
270
+
271
+ it "should be xenhvm with Xen HVM product name from sysctl" do
272
+ Facter::Core::Execution.stubs(:exec).with('sysctl -n hw.product 2>/dev/null').returns("HVM domU")
273
+ Facter.fact(:virtual).value.should == "xenhvm"
274
+ end
275
+ end
276
+
277
+ describe "on Windows" do
278
+ require 'facter/util/wmi'
279
+ before do
280
+ Facter.fact(:kernel).stubs(:value).returns("windows")
281
+ Facter.fact(:architecture).stubs(:value).returns("x64")
282
+ end
283
+
284
+ it "should be kvm with KVM model name from Win32_ComputerSystem" do
285
+ computersystem = mock('computersystem', :model => 'KVM')
286
+ Facter::Util::WMI.expects(:execquery).returns([computersystem])
287
+ Facter.fact(:virtual).value.should == "kvm"
288
+ end
289
+
290
+ it "should be hyperv with Virtual Machine model name and Microsoft Corporation manufacturer from Win32_ComputerSystem" do
291
+ computersystem = mock('computersystem', :manufacturer => 'Microsoft Corporation', :model => 'Virtual Machine')
292
+ Facter::Util::WMI.expects(:execquery).returns([computersystem])
293
+ Facter.fact(:virtual).value.should == "hyperv"
294
+ end
295
+
296
+ it "should be virtualbox with VirtualBox model name from Win32_ComputerSystem" do
297
+ computersystem = mock('computersystem', :model => 'VirtualBox')
298
+ Facter::Util::WMI.expects(:execquery).returns([computersystem])
299
+ Facter.fact(:virtual).value.should == "virtualbox"
300
+ end
301
+
302
+ it "should be vmware with VMware like model name from Win32_ComputerSystem" do
303
+ computersystem = mock('computersystem', :model => 'VMware Virtual Platform')
304
+ Facter::Util::WMI.expects(:execquery).returns([computersystem])
305
+ Facter.fact(:virtual).value.should == "vmware"
306
+ end
307
+
308
+ it "resolves as Xen with a manufacturer name like xen" do
309
+ computersystem = mock('computersystem', :model => nil, :manufacturer => 'Xen')
310
+ Facter::Util::WMI.expects(:execquery).returns([computersystem])
311
+ Facter.fact(:virtual).value.should == "xen"
312
+ end
313
+ end
314
+
315
+ describe "with the virt-what command available (#8210)" do
316
+ describe "when the output of virt-what disagrees with lower weight facts" do
317
+ virt_what_map = {
318
+ 'xen-hvm' => 'xenhvm',
319
+ 'xen-dom0' => 'xen0',
320
+ 'xen-domU' => 'xenu',
321
+ 'ibm_systemz' => 'zlinux',
322
+ }
323
+
324
+ virt_what_map.each do |input,output|
325
+ it "maps #{input} to #{output}" do
326
+ Facter::Util::Virtual.expects(:virt_what).returns(input)
327
+ Facter.value(:virtual).should == output
328
+ end
329
+ end
330
+ end
331
+
332
+ describe "arbitrary outputs of virt-what" do
333
+ it "returns the last line output from virt-what" do
334
+ Facter::Util::Virtual.expects(:virt_what).returns("one\ntwo\nthree space\n")
335
+ Facter.value(:virtual).should == "three space"
336
+ end
337
+ end
338
+
339
+ describe "when virt-what returns linux_vserver" do
340
+ it "delegates to Facter::Util::Virtual.vserver_type" do
341
+ Facter::Util::Virtual.expects(:virt_what).returns("linux_vserver")
342
+ Facter::Util::Virtual.expects(:vserver_type).returns("fake_vserver_type")
343
+ Facter.value(:virtual).should == "fake_vserver_type"
344
+ end
345
+ end
346
+ end
347
+ end
348
+
349
+ describe "is_virtual fact" do
350
+ it "should be virtual when running on xen" do
351
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
352
+ Facter.fact(:virtual).stubs(:value).returns("xenu")
353
+ Facter.fact(:is_virtual).value.should == "true"
354
+ end
355
+
356
+ it "should be false when running on xen0" do
357
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
358
+ Facter.fact(:virtual).stubs(:value).returns("xen0")
359
+ Facter.fact(:is_virtual).value.should == "false"
360
+ end
361
+
362
+ it "should be true when running on xenhvm" do
363
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
364
+ Facter.fact(:virtual).stubs(:value).returns("xenhvm")
365
+ Facter.fact(:is_virtual).value.should == "true"
366
+ end
367
+
368
+ it "should be false when running on physical" do
369
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
370
+ Facter.fact(:virtual).stubs(:value).returns("physical")
371
+ Facter.fact(:is_virtual).value.should == "false"
372
+ end
373
+
374
+ it "should be true when running on vmware" do
375
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
376
+ Facter.fact(:virtual).stubs(:value).returns("vmware")
377
+ Facter.fact(:is_virtual).value.should == "true"
378
+ end
379
+
380
+ it "should be true when running on virtualbox" do
381
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
382
+ Facter.fact(:virtual).stubs(:value).returns("virtualbox")
383
+ Facter.fact(:is_virtual).value.should == "true"
384
+ end
385
+
386
+ it "should be true when running on openvzve" do
387
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
388
+ Facter.fact(:virtual).stubs(:value).returns("openvzve")
389
+ Facter.fact(:is_virtual).value.should == "true"
390
+ end
391
+
392
+ it "should be true when running on vserver" do
393
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
394
+ Facter.fact(:virtual).stubs(:value).returns("vserver")
395
+ Facter.fact(:is_virtual).value.should == "true"
396
+ end
397
+
398
+ it "should be true when running on kvm" do
399
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
400
+ Facter.fact(:virtual).stubs(:value).returns("kvm")
401
+ Facter.fact(:is_virtual).value.should == "true"
402
+ end
403
+
404
+ it "should be true when running in jail" do
405
+ Facter.fact(:kernel).stubs(:value).returns("FreeBSD")
406
+ Facter.fact(:virtual).stubs(:value).returns("jail")
407
+ Facter.fact(:is_virtual).value.should == "true"
408
+ end
409
+
410
+ it "should be true when running in zone" do
411
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
412
+ Facter.fact(:virtual).stubs(:value).returns("zone")
413
+ Facter.fact(:is_virtual).value.should == "true"
414
+ end
415
+
416
+ it "should be true when running on hp-vm" do
417
+ Facter.fact(:kernel).stubs(:value).returns("HP-UX")
418
+ Facter.fact(:virtual).stubs(:value).returns("hpvm")
419
+ Facter.fact(:is_virtual).value.should == "true"
420
+ end
421
+
422
+ it "should be true when running on S390" do
423
+ Facter.fact(:architecture).stubs(:value).returns("s390x")
424
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
425
+ Facter.fact(:virtual).stubs(:value).returns("zlinux")
426
+ Facter.fact(:is_virtual).value.should == "true"
427
+ end
428
+
429
+ it "should be true when running on parallels" do
430
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
431
+ Facter.fact(:virtual).stubs(:value).returns("parallels")
432
+ Facter.fact(:is_virtual).value.should == "true"
433
+ end
434
+
435
+ it "should be false on vmware_server" do
436
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
437
+ Facter.fact(:virtual).stubs(:value).returns("vmware_server")
438
+ Facter.fact(:is_virtual).value.should == "false"
439
+ end
440
+
441
+ it "should be false on openvz host nodes" do
442
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
443
+ Facter.fact(:virtual).stubs(:value).returns("openvzhn")
444
+ Facter.fact(:is_virtual).value.should == "false"
445
+ end
446
+
447
+ it "should be false on vserver host nodes" do
448
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
449
+ Facter.fact(:virtual).stubs(:value).returns("vserver_host")
450
+ Facter.fact(:is_virtual).value.should == "false"
451
+ end
452
+
453
+ it "should be true when running on hyperv" do
454
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
455
+ Facter.fact(:virtual).stubs(:value).returns("hyperv")
456
+ Facter.fact(:is_virtual).value.should == "true"
457
+ end
458
+
459
+ it "should be true when running on rhev" do
460
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
461
+ Facter.fact(:virtual).stubs(:value).returns("rhev")
462
+ Facter.fact(:is_virtual).value.should == "true"
463
+ end
464
+
465
+ it "should be true when running on ovirt" do
466
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
467
+ Facter.fact(:virtual).stubs(:value).returns("ovirt")
468
+ Facter.fact(:is_virtual).value.should == "true"
469
+ end
470
+ end