facter 2.1.0-x64-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 (440) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +194 -0
  3. data/CONTRIBUTING.md +65 -0
  4. data/Gemfile +53 -0
  5. data/LICENSE +15 -0
  6. data/README.md +33 -0
  7. data/Rakefile +79 -0
  8. data/bin/facter +20 -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 +36 -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 +261 -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 +123 -0
  39. data/lib/facter/core/execution/base.rb +81 -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 +113 -0
  45. data/lib/facter/dhcp_servers.rb +39 -0
  46. data/lib/facter/domain.rb +99 -0
  47. data/lib/facter/ec2.rb +44 -0
  48. data/lib/facter/ec2/rest.rb +130 -0
  49. data/lib/facter/facterversion.rb +15 -0
  50. data/lib/facter/filesystems.rb +38 -0
  51. data/lib/facter/fqdn.rb +24 -0
  52. data/lib/facter/gce.rb +16 -0
  53. data/lib/facter/gce/metadata.rb +87 -0
  54. data/lib/facter/hardwareisa.rb +20 -0
  55. data/lib/facter/hardwaremodel.rb +67 -0
  56. data/lib/facter/hostname.rb +31 -0
  57. data/lib/facter/id.rb +21 -0
  58. data/lib/facter/interfaces.rb +46 -0
  59. data/lib/facter/ipaddress.rb +171 -0
  60. data/lib/facter/ipaddress6.rb +82 -0
  61. data/lib/facter/iphostnumber.rb +29 -0
  62. data/lib/facter/kernel.rb +22 -0
  63. data/lib/facter/kernelmajversion.rb +23 -0
  64. data/lib/facter/kernelrelease.rb +50 -0
  65. data/lib/facter/kernelversion.rb +22 -0
  66. data/lib/facter/ldom.rb +47 -0
  67. data/lib/facter/lsbdistcodename.rb +16 -0
  68. data/lib/facter/lsbdistdescription.rb +25 -0
  69. data/lib/facter/lsbdistid.rb +16 -0
  70. data/lib/facter/lsbdistrelease.rb +16 -0
  71. data/lib/facter/lsbmajdistrelease.rb +27 -0
  72. data/lib/facter/lsbrelease.rb +16 -0
  73. data/lib/facter/macaddress.rb +97 -0
  74. data/lib/facter/macosx.rb +56 -0
  75. data/lib/facter/manufacturer.rb +68 -0
  76. data/lib/facter/memory.rb +168 -0
  77. data/lib/facter/netmask.rb +42 -0
  78. data/lib/facter/network.rb +20 -0
  79. data/lib/facter/operatingsystem.rb +141 -0
  80. data/lib/facter/operatingsystemmajrelease.rb +47 -0
  81. data/lib/facter/operatingsystemrelease.rb +250 -0
  82. data/lib/facter/osfamily.rb +37 -0
  83. data/lib/facter/partitions.rb +35 -0
  84. data/lib/facter/path.rb +14 -0
  85. data/lib/facter/physicalprocessorcount.rb +91 -0
  86. data/lib/facter/processor.rb +168 -0
  87. data/lib/facter/ps.rb +30 -0
  88. data/lib/facter/puppetversion.rb +20 -0
  89. data/lib/facter/rubysitedir.rb +12 -0
  90. data/lib/facter/rubyversion.rb +12 -0
  91. data/lib/facter/selinux.rb +99 -0
  92. data/lib/facter/ssh.rb +72 -0
  93. data/lib/facter/timezone.rb +14 -0
  94. data/lib/facter/uniqueid.rb +4 -0
  95. data/lib/facter/uptime.rb +34 -0
  96. data/lib/facter/uptime_days.rb +15 -0
  97. data/lib/facter/uptime_hours.rb +15 -0
  98. data/lib/facter/uptime_seconds.rb +24 -0
  99. data/lib/facter/util/architecture.rb +19 -0
  100. data/lib/facter/util/collection.rb +161 -0
  101. data/lib/facter/util/composite_loader.rb +12 -0
  102. data/lib/facter/util/config.rb +63 -0
  103. data/lib/facter/util/confine.rb +66 -0
  104. data/lib/facter/util/dhcp_servers.rb +43 -0
  105. data/lib/facter/util/directory_loader.rb +83 -0
  106. data/lib/facter/util/ec2.rb +106 -0
  107. data/lib/facter/util/fact.rb +204 -0
  108. data/lib/facter/util/file_read.rb +37 -0
  109. data/lib/facter/util/formatter.rb +39 -0
  110. data/lib/facter/util/ip.rb +285 -0
  111. data/lib/facter/util/ip/windows.rb +215 -0
  112. data/lib/facter/util/loader.rb +155 -0
  113. data/lib/facter/util/macaddress.rb +43 -0
  114. data/lib/facter/util/macosx.rb +73 -0
  115. data/lib/facter/util/manufacturer.rb +99 -0
  116. data/lib/facter/util/memory.rb +228 -0
  117. data/lib/facter/util/netmask.rb +40 -0
  118. data/lib/facter/util/normalization.rb +94 -0
  119. data/lib/facter/util/nothing_loader.rb +12 -0
  120. data/lib/facter/util/operatingsystem.rb +21 -0
  121. data/lib/facter/util/parser.rb +158 -0
  122. data/lib/facter/util/partitions.rb +41 -0
  123. data/lib/facter/util/partitions/linux.rb +65 -0
  124. data/lib/facter/util/plist.rb +24 -0
  125. data/lib/facter/util/plist/generator.rb +228 -0
  126. data/lib/facter/util/plist/parser.rb +226 -0
  127. data/lib/facter/util/posix.rb +16 -0
  128. data/lib/facter/util/processor.rb +289 -0
  129. data/lib/facter/util/registry.rb +11 -0
  130. data/lib/facter/util/resolution.rb +160 -0
  131. data/lib/facter/util/solaris_zones.rb +158 -0
  132. data/lib/facter/util/unix_root.rb +5 -0
  133. data/lib/facter/util/uptime.rb +81 -0
  134. data/lib/facter/util/values.rb +109 -0
  135. data/lib/facter/util/virtual.rb +180 -0
  136. data/lib/facter/util/vlans.rb +21 -0
  137. data/lib/facter/util/windows_root.rb +7 -0
  138. data/lib/facter/util/wmi.rb +16 -0
  139. data/lib/facter/util/xendomains.rb +10 -0
  140. data/lib/facter/version.rb +86 -0
  141. data/lib/facter/virtual.rb +311 -0
  142. data/lib/facter/vlans.rb +17 -0
  143. data/lib/facter/xendomains.rb +20 -0
  144. data/lib/facter/zfs_version.rb +10 -0
  145. data/lib/facter/zonename.rb +6 -0
  146. data/lib/facter/zones.rb +17 -0
  147. data/lib/facter/zpool_version.rb +10 -0
  148. data/spec/fixtures/cpuinfo/amd64dual +57 -0
  149. data/spec/fixtures/cpuinfo/amd64quad +79 -0
  150. data/spec/fixtures/cpuinfo/amd64solo +23 -0
  151. data/spec/fixtures/cpuinfo/amd64tri +86 -0
  152. data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
  153. data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
  154. data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
  155. data/spec/fixtures/cpuinfo/panda-armel +17 -0
  156. data/spec/fixtures/cpuinfo/ppc64 +19 -0
  157. data/spec/fixtures/cpuinfo/sparc +10 -0
  158. data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
  159. data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
  160. data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
  161. data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
  162. data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
  163. data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
  164. data/spec/fixtures/hpux/sched.models +174 -0
  165. data/spec/fixtures/hpux/unistd.h +1534 -0
  166. data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
  167. data/spec/fixtures/ifconfig/centos_5_5 +17 -0
  168. data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
  169. data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
  170. data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
  171. data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
  172. data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
  173. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
  174. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
  175. data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
  176. data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
  177. data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
  178. data/spec/fixtures/ifconfig/fedora_10 +36 -0
  179. data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
  180. data/spec/fixtures/ifconfig/fedora_13 +18 -0
  181. data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
  182. data/spec/fixtures/ifconfig/fedora_8 +38 -0
  183. data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
  184. data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
  185. data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
  186. data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
  187. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
  188. data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
  189. data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
  190. data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
  191. data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
  192. data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
  193. data/spec/fixtures/ifconfig/openbsd_bridge_rules +11 -0
  194. data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
  195. data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
  196. data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
  197. data/spec/fixtures/ldom/ldom_v1 +6 -0
  198. data/spec/fixtures/netstat/centos_5_5 +5 -0
  199. data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
  200. data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
  201. data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
  202. data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
  203. data/spec/fixtures/netstat/fedora_10 +7 -0
  204. data/spec/fixtures/netstat/open_solaris_10 +16 -0
  205. data/spec/fixtures/netstat/open_solaris_b132 +17 -0
  206. data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
  207. data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
  208. data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
  209. data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
  210. data/spec/fixtures/unit/dhcp_servers/nmcli_devices +4 -0
  211. data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +4 -0
  212. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +36 -0
  213. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +24 -0
  214. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +49 -0
  215. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +37 -0
  216. data/spec/fixtures/unit/dhcp_servers/route +3 -0
  217. data/spec/fixtures/unit/dhcp_servers/route_nogw +1 -0
  218. data/spec/fixtures/unit/ec2/rest/meta-data/root +20 -0
  219. data/spec/fixtures/unit/filesystems/linux +28 -0
  220. data/spec/fixtures/unit/gce/metadata/metadata.json +69 -0
  221. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
  222. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
  223. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
  224. data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
  225. data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
  226. data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
  227. data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
  228. data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +2 -0
  229. data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +3 -0
  230. data/spec/fixtures/unit/memory/aix-svmon +9 -0
  231. data/spec/fixtures/unit/memory/aix-swap_l +2 -0
  232. data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +3 -0
  233. data/spec/fixtures/unit/memory/darwin-swapinfo-single +2 -0
  234. data/spec/fixtures/unit/memory/darwin-vm_stat +13 -0
  235. data/spec/fixtures/unit/memory/dragonfly-vmstat +3 -0
  236. data/spec/fixtures/unit/memory/freebsd-vmstat +3 -0
  237. data/spec/fixtures/unit/memory/linux-proc_meminfo +10 -0
  238. data/spec/fixtures/unit/memory/openbsd-vmstat +3 -0
  239. data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +2 -0
  240. data/spec/fixtures/unit/memory/solaris-prtconf +4 -0
  241. data/spec/fixtures/unit/memory/solaris-swap_l-multiple +3 -0
  242. data/spec/fixtures/unit/memory/solaris-swap_l-single +2 -0
  243. data/spec/fixtures/unit/memory/solaris-vmstat +3 -0
  244. data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
  245. data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +3 -0
  246. data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
  247. data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
  248. data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
  249. data/spec/fixtures/unit/util/dhcp_servers/route +3 -0
  250. data/spec/fixtures/unit/util/dhcp_servers/route_nogw +1 -0
  251. data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
  252. data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
  253. data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
  254. data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
  255. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
  256. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
  257. data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
  258. data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
  259. data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
  260. data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
  261. data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
  262. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
  263. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
  264. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
  265. data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
  266. data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
  267. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
  268. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
  269. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
  270. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
  271. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
  272. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
  273. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
  274. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
  275. data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
  276. data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
  277. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
  278. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
  279. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
  280. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
  281. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
  282. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
  283. data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
  284. data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
  285. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
  286. data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
  287. data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
  288. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
  289. data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
  290. data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
  291. data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
  292. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
  293. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
  294. data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
  295. data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
  296. data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
  297. data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
  298. data/spec/fixtures/unit/util/manufacturer/smartos_smbios +533 -0
  299. data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
  300. data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
  301. data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +8 -0
  302. data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +12 -0
  303. data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +7 -0
  304. data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +9 -0
  305. data/spec/fixtures/unit/util/partitions/partitions/mount +9 -0
  306. data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
  307. data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
  308. data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
  309. data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
  310. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
  311. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
  312. data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
  313. data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
  314. data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
  315. data/spec/fixtures/unit/util/vlans/centos-5-no-vlans +2 -0
  316. data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
  317. data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
  318. data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
  319. data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
  320. data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
  321. data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
  322. data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
  323. data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
  324. data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
  325. data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
  326. data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
  327. data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
  328. data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
  329. data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +9 -0
  330. data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +8 -0
  331. data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +9 -0
  332. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
  333. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
  334. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
  335. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
  336. data/spec/integration/facter_spec.rb +39 -0
  337. data/spec/lib/facter_spec/cpuinfo.rb +15 -0
  338. data/spec/lib/facter_spec/windows_network.rb +64 -0
  339. data/spec/puppetlabs_spec/files.rb +57 -0
  340. data/spec/puppetlabs_spec/fixtures.rb +49 -0
  341. data/spec/puppetlabs_spec/matchers.rb +87 -0
  342. data/spec/puppetlabs_spec/verbose.rb +9 -0
  343. data/spec/puppetlabs_spec_helper.rb +26 -0
  344. data/spec/shared_contexts/platform.rb +55 -0
  345. data/spec/shared_formats/parses.rb +3 -0
  346. data/spec/spec_helper.rb +75 -0
  347. data/spec/unit/application_spec.rb +101 -0
  348. data/spec/unit/architecture_spec.rb +63 -0
  349. data/spec/unit/blockdevices_spec.rb +109 -0
  350. data/spec/unit/core/aggregate_spec.rb +125 -0
  351. data/spec/unit/core/directed_graph_spec.rb +79 -0
  352. data/spec/unit/core/execution/base_spec.rb +130 -0
  353. data/spec/unit/core/execution/posix_spec.rb +86 -0
  354. data/spec/unit/core/execution/windows_spec.rb +106 -0
  355. data/spec/unit/core/execution_spec.rb +42 -0
  356. data/spec/unit/core/logging_spec.rb +104 -0
  357. data/spec/unit/core/resolvable_spec.rb +81 -0
  358. data/spec/unit/core/suitable_spec.rb +106 -0
  359. data/spec/unit/dhcp_servers_spec.rb +152 -0
  360. data/spec/unit/domain_spec.rb +310 -0
  361. data/spec/unit/ec2/rest_spec.rb +145 -0
  362. data/spec/unit/ec2_spec.rb +127 -0
  363. data/spec/unit/facter_spec.rb +108 -0
  364. data/spec/unit/filesystems_spec.rb +50 -0
  365. data/spec/unit/fqdn_spec.rb +16 -0
  366. data/spec/unit/gce/metadata_spec.rb +49 -0
  367. data/spec/unit/gce_spec.rb +34 -0
  368. data/spec/unit/hardwareisa_spec.rb +41 -0
  369. data/spec/unit/hardwaremodel_spec.rb +56 -0
  370. data/spec/unit/hostname_spec.rb +40 -0
  371. data/spec/unit/id_spec.rb +29 -0
  372. data/spec/unit/interfaces_spec.rb +57 -0
  373. data/spec/unit/ipaddress6_spec.rb +161 -0
  374. data/spec/unit/ipaddress_spec.rb +114 -0
  375. data/spec/unit/kernel_spec.rb +24 -0
  376. data/spec/unit/kernelmajversion_spec.rb +22 -0
  377. data/spec/unit/kernelrelease_spec.rb +69 -0
  378. data/spec/unit/kernelversion_spec.rb +32 -0
  379. data/spec/unit/ldom_spec.rb +75 -0
  380. data/spec/unit/lsbdistcodename_spec.rb +25 -0
  381. data/spec/unit/lsbdistdescription_spec.rb +25 -0
  382. data/spec/unit/lsbdistid_spec.rb +25 -0
  383. data/spec/unit/lsbdistrelease_spec.rb +25 -0
  384. data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
  385. data/spec/unit/lsbrelease_spec.rb +25 -0
  386. data/spec/unit/macaddress_spec.rb +73 -0
  387. data/spec/unit/manufacturer_spec.rb +115 -0
  388. data/spec/unit/memory_spec.rb +470 -0
  389. data/spec/unit/netmask_spec.rb +106 -0
  390. data/spec/unit/operatingsystem_spec.rb +160 -0
  391. data/spec/unit/operatingsystemmajrelease_spec.rb +38 -0
  392. data/spec/unit/operatingsystemrelease_spec.rb +236 -0
  393. data/spec/unit/osfamily_spec.rb +62 -0
  394. data/spec/unit/partitions_spec.rb +48 -0
  395. data/spec/unit/physicalprocessorcount_spec.rb +85 -0
  396. data/spec/unit/processor_spec.rb +401 -0
  397. data/spec/unit/ps_spec.rb +42 -0
  398. data/spec/unit/selinux_spec.rb +114 -0
  399. data/spec/unit/ssh_spec.rb +77 -0
  400. data/spec/unit/uniqueid_spec.rb +27 -0
  401. data/spec/unit/uptime_spec.rb +110 -0
  402. data/spec/unit/util/collection_spec.rb +258 -0
  403. data/spec/unit/util/config_spec.rb +97 -0
  404. data/spec/unit/util/confine_spec.rb +148 -0
  405. data/spec/unit/util/dhcp_servers_spec.rb +63 -0
  406. data/spec/unit/util/directory_loader_spec.rb +88 -0
  407. data/spec/unit/util/ec2_spec.rb +184 -0
  408. data/spec/unit/util/fact_spec.rb +142 -0
  409. data/spec/unit/util/file_read_spec.rb +29 -0
  410. data/spec/unit/util/formatter_spec.rb +50 -0
  411. data/spec/unit/util/ip/windows_spec.rb +80 -0
  412. data/spec/unit/util/ip_spec.rb +467 -0
  413. data/spec/unit/util/loader_spec.rb +286 -0
  414. data/spec/unit/util/macaddress_spec.rb +141 -0
  415. data/spec/unit/util/macosx_spec.rb +114 -0
  416. data/spec/unit/util/manufacturer_spec.rb +223 -0
  417. data/spec/unit/util/normalization_spec.rb +113 -0
  418. data/spec/unit/util/operatingsystem_spec.rb +92 -0
  419. data/spec/unit/util/parser_spec.rb +200 -0
  420. data/spec/unit/util/partitions/partitions_spec.rb +67 -0
  421. data/spec/unit/util/partitions_spec.rb +19 -0
  422. data/spec/unit/util/posix_spec.rb +11 -0
  423. data/spec/unit/util/processor_spec.rb +92 -0
  424. data/spec/unit/util/registry_spec.rb +76 -0
  425. data/spec/unit/util/resolution_spec.rb +129 -0
  426. data/spec/unit/util/solaris_zones_spec.rb +127 -0
  427. data/spec/unit/util/uptime_spec.rb +126 -0
  428. data/spec/unit/util/values_spec.rb +171 -0
  429. data/spec/unit/util/virtual_spec.rb +364 -0
  430. data/spec/unit/util/vlans_spec.rb +42 -0
  431. data/spec/unit/util/wmi_spec.rb +19 -0
  432. data/spec/unit/util/xendomains_spec.rb +21 -0
  433. data/spec/unit/version_spec.rb +42 -0
  434. data/spec/unit/virtual_spec.rb +519 -0
  435. data/spec/unit/zfs_version_spec.rb +75 -0
  436. data/spec/unit/zonename_spec.rb +14 -0
  437. data/spec/unit/zones_spec.rb +55 -0
  438. data/spec/unit/zpool_version_spec.rb +75 -0
  439. data/spec/watchr.rb +125 -0
  440. metadata +815 -0
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+ require 'facter/gce/metadata'
3
+
4
+ describe Facter::GCE::Metadata, :if => Facter.json? do
5
+
6
+ describe "contacting the metadata server" do
7
+ it "retries the request when a connection error is thrown" do
8
+ subject.stubs(:open).returns(stub(:read => '{"hello": "world"}'))
9
+ seq = sequence('open-uri seq')
10
+ Timeout.expects(:timeout).with(0.05).twice.in_sequence(seq).raises(Timeout::Error)
11
+ Timeout.expects(:timeout).with(0.05).once.in_sequence(seq).yields
12
+ expect(subject.fetch).to eq({'hello' => 'world'})
13
+ end
14
+
15
+ it "logs the exception when all retries failed" do
16
+ Timeout.expects(:timeout).with(0.05).times(3).raises(Timeout::Error)
17
+ Facter.expects(:log_exception).with(instance_of(Timeout::Error), instance_of(String))
18
+ expect(subject.fetch).to be_nil
19
+ end
20
+ end
21
+
22
+ describe "parsing the metadata response" do
23
+ let(:body) { my_fixture_read('metadata.json') }
24
+ before do
25
+ subject.stubs(:open).returns(stub(:read => body))
26
+ end
27
+
28
+ it "transforms hash values with the 'image' key" do
29
+ expect(subject.fetch['instance']['image']).to eq 'centos6'
30
+ end
31
+
32
+ it "transforms hash values with the 'machineType' key" do
33
+ expect(subject.fetch['instance']['machineType']).to eq 'n1-standard-1'
34
+ end
35
+
36
+ it "transforms hash values with the 'zone' key" do
37
+ expect(subject.fetch['instance']['zone']).to eq 'us-central1-b'
38
+ end
39
+
40
+ it "transforms hash values with the 'network' key" do
41
+ expect(subject.fetch['instance']['networkInterfaces'][0]['network']).to eq 'default'
42
+ end
43
+
44
+ it "splits up the elements of the 'sshKeys' value into an array" do
45
+ expect(subject.fetch['project']['attributes']['sshKeys'][0]).to match(/justin:ssh-rsa/)
46
+ expect(subject.fetch['project']['attributes']['sshKeys'][1]).to match(/adrien:ssh-rsa/)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+ require 'facter/gce/metadata'
3
+
4
+ describe "gce_metadata" do
5
+ let(:querier) { stub('GCE metadata querier') }
6
+
7
+ before do
8
+ Facter::GCE::Metadata.stubs(:new).returns querier
9
+ Facter.collection.internal_loader.load(:ec2)
10
+ end
11
+
12
+ subject { Facter.fact(:gce).resolution(:rest) }
13
+
14
+ it "is unsuitable when the virtual type is not gce" do
15
+ Facter.fact(:virtual).stubs(:value).returns 'kvm'
16
+ expect(subject).to_not be_suitable
17
+ end
18
+
19
+ it "is unsuitable when JSON is not available" do
20
+ Facter.stubs(:json?).returns false
21
+ expect(subject).to_not be_suitable
22
+ end
23
+
24
+ it "is suitable when both the virtual type is gce and JSON is available" do
25
+ Facter.fact(:virtual).stubs(:value).returns 'gce'
26
+ Facter.stubs(:json?).returns true
27
+ expect(subject).to be_suitable
28
+ end
29
+
30
+ it "resolves the fact by querying GCE metadata API" do
31
+ querier.expects(:fetch).returns({'hello' => 'world'})
32
+ expect(subject.value).to eq({'hello' => 'world'})
33
+ end
34
+ end
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter'
5
+
6
+ describe "Hardwareisa fact" do
7
+ it "should match uname -p on Linux" do
8
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
9
+ Facter::Core::Execution.stubs(:execute).with("uname -p", anything).returns("Inky")
10
+
11
+ Facter.fact(:hardwareisa).value.should == "Inky"
12
+ end
13
+
14
+ it "should match uname -p on Darwin" do
15
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
16
+ Facter::Core::Execution.stubs(:execute).with("uname -p", anything).returns("Blinky")
17
+
18
+ Facter.fact(:hardwareisa).value.should == "Blinky"
19
+ end
20
+
21
+ it "should match uname -p on SunOS" do
22
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
23
+ Facter::Core::Execution.stubs(:execute).with("uname -p", anything).returns("Pinky")
24
+
25
+ Facter.fact(:hardwareisa).value.should == "Pinky"
26
+ end
27
+
28
+ it "should match uname -p on FreeBSD" do
29
+ Facter.fact(:kernel).stubs(:value).returns("FreeBSD")
30
+ Facter::Core::Execution.stubs(:execute).with("uname -p", anything).returns("Clyde")
31
+
32
+ Facter.fact(:hardwareisa).value.should == "Clyde"
33
+ end
34
+
35
+ it "should match uname -m on HP-UX" do
36
+ Facter.fact(:kernel).stubs(:value).returns("HP-UX")
37
+ Facter::Core::Execution.stubs(:execute).with("uname -m", anything).returns("Pac-Man")
38
+
39
+ Facter.fact(:hardwareisa).value.should == "Pac-Man"
40
+ end
41
+ end
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter'
5
+
6
+ describe "Hardwaremodel fact" do
7
+ it "should match uname -m by default" do
8
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
9
+ Facter::Core::Execution.stubs(:execute).with("uname -m", anything).returns("Inky")
10
+
11
+ Facter.fact(:hardwaremodel).value.should == "Inky"
12
+ end
13
+
14
+ describe "on Windows" do
15
+ require 'facter/util/wmi'
16
+ before :each do
17
+ Facter.fact(:kernel).stubs(:value).returns("windows")
18
+ end
19
+
20
+ it "should detect i486" do
21
+ cpu = mock('cpu', :Architecture => 0)
22
+ cpu.expects(:Level).returns(4).twice
23
+ Facter::Util::WMI.expects(:execquery).returns([cpu])
24
+
25
+ Facter.fact(:hardwaremodel).value.should == "i486"
26
+ end
27
+
28
+ it "should detect i686" do
29
+ cpu = mock('cpu', :Architecture => 0, :Level => 6)
30
+ Facter::Util::WMI.expects(:execquery).returns([cpu])
31
+
32
+ Facter.fact(:hardwaremodel).value.should == "i686"
33
+ end
34
+
35
+ it "should detect x64" do
36
+ cpu = mock('cpu', :Architecture => 9, :AddressWidth => 64, :Level => 6)
37
+ Facter::Util::WMI.expects(:execquery).returns([cpu])
38
+
39
+ Facter.fact(:hardwaremodel).value.should == "x64"
40
+ end
41
+
42
+ it "(#16948) reports i686 when a 32 bit OS is running on a 64 bit CPU" do
43
+ cpu = mock('cpu', :Architecture => 9, :AddressWidth => 32, :Level => 6)
44
+ Facter::Util::WMI.expects(:execquery).returns([cpu])
45
+
46
+ Facter.fact(:hardwaremodel).value.should == "i686"
47
+ end
48
+
49
+ it "(#20989) should report i686 when a 32 bit OS is running on a 64 bit CPU and when level is greater than 6 (and not something like i1586)" do
50
+ cpu = mock('cpu', :Architecture => 9, :AddressWidth => 32, :Level => 15)
51
+ Facter::Util::WMI.expects(:execquery).returns([cpu])
52
+
53
+ Facter.fact(:hardwaremodel).value.should == "i686"
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,40 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "Hostname facts" do
6
+
7
+ describe "on linux" do
8
+ before do
9
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
10
+ Facter.fact(:kernelrelease).stubs(:value).returns("2.6")
11
+ end
12
+
13
+ it "should use the hostname command" do
14
+ Facter::Core::Execution.expects(:execute).with('hostname').at_least_once
15
+ Facter.fact(:hostname).value.should be_nil
16
+ end
17
+
18
+ it "should use hostname as the fact if unqualified" do
19
+ Facter::Core::Execution.stubs(:execute).with('hostname').returns('host1')
20
+ Facter.fact(:hostname).value.should == "host1"
21
+ end
22
+
23
+ it "should truncate the domain name if qualified" do
24
+ Facter::Core::Execution.stubs(:execute).with('hostname').returns('host1.example.com')
25
+ Facter.fact(:hostname).value.should == "host1"
26
+ end
27
+ end
28
+
29
+ describe "on darwin release R7" do
30
+ before do
31
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
32
+ Facter.fact(:kernelrelease).stubs(:value).returns("R7")
33
+ end
34
+
35
+ it "should use scutil to get the hostname" do
36
+ Facter::Core::Execution.expects(:execute).with('/usr/sbin/scutil --get LocalHostName', anything).returns("host1")
37
+ Facter.fact(:hostname).value.should == "host1"
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,29 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "id fact" do
6
+ include FacterSpec::ConfigHelper
7
+
8
+ kernel = [ 'Linux', 'Darwin', 'windows', 'FreeBSD', 'OpenBSD', 'NetBSD', 'AIX', 'HP-UX' ]
9
+
10
+ kernel.each do |k|
11
+ describe "with kernel reported as #{k}" do
12
+ it "should return the current user" do
13
+ given_a_configuration_of(:is_windows => k == 'windows')
14
+ Facter.fact(:kernel).stubs(:value).returns(k)
15
+ Facter::Core::Execution.expects(:execute).once.with('whoami', anything).returns 'bar'
16
+
17
+ Facter.fact(:id).value.should == 'bar'
18
+ end
19
+ end
20
+ end
21
+
22
+ it "should return the current user on Solaris" do
23
+ given_a_configuration_of(:is_windows => false)
24
+ Facter.fact(:kernel).stubs(:value).returns 'SunOS'
25
+ Facter::Core::Execution.expects(:execute).once.with('/usr/xpg4/bin/id -un', anything).returns 'bar'
26
+
27
+ Facter.fact(:id).value.should == 'bar'
28
+ end
29
+ end
@@ -0,0 +1,57 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'shared_formats/parses'
5
+ require 'facter/util/ip'
6
+
7
+ shared_examples_for "interface netmask and mtu from ifconfig output" do |platform, interface, netmask, mtu, fixture|
8
+ it "should be correct on #{platform} for interface #{interface}" do
9
+ Facter::Util::IP.stubs(:exec_ifconfig).returns(my_fixture_read(fixture))
10
+ Facter::Util::IP.stubs(:get_output_for_interface_and_label).
11
+ returns(my_fixture_read("#{fixture}.#{interface}"))
12
+ Facter.collection.internal_loader.load(:interfaces)
13
+
14
+ Facter.fact("netmask_#{interface}".intern).value.should eq(netmask)
15
+ Facter.fact("mtu_#{interface}".intern).value.should eq(mtu)
16
+ end
17
+ end
18
+
19
+ describe "Per Interface IP facts" do
20
+ it "should replace the ':' in an interface list with '_'" do
21
+ # So we look supported
22
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
23
+
24
+ Facter::Util::IP.stubs(:get_interfaces).returns %w{eth0:1 eth1:2}
25
+ Facter.fact(:interfaces).value.should == %{eth0_1,eth1_2}
26
+ end
27
+
28
+ it "should replace non-alphanumerics in an interface list with '_'" do
29
+ Facter.fact(:kernel).stubs(:value).returns("windows")
30
+
31
+ Facter::Util::IP.stubs(:get_interfaces).returns ["Local Area Connection", "Loopback \"Pseudo-Interface\" (#1)"]
32
+ Facter.fact(:interfaces).value.should == %{Local_Area_Connection,Loopback__Pseudo_Interface____1_}
33
+ end
34
+
35
+ it "should properly format a mac address" do
36
+ Facter::Util::IP.stubs(:get_interfaces).returns ["net0"]
37
+ Facter::Util::IP.stubs(:get_interface_value).returns "0:12:34:56:78:90"
38
+
39
+ Facter.collection.internal_loader.load(:interfaces)
40
+
41
+ fact = Facter.fact("macaddress_net0".intern)
42
+ fact.value.should eq("00:12:34:56:78:90")
43
+ end
44
+ end
45
+
46
+ describe "Netmask and MTU handling on Linux" do
47
+ before :each do
48
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
49
+ end
50
+
51
+ example_behavior_for "interface netmask and mtu from ifconfig output",
52
+ "Archlinux (net-tools 1.60)", "em1",
53
+ "255.255.255.0", "1500", "ifconfig_net_tools_1.60.txt"
54
+ example_behavior_for "interface netmask and mtu from ifconfig output",
55
+ "Archlinux (net-tools 1.60)", "lo",
56
+ "255.0.0.0", "16436", "ifconfig_net_tools_1.60.txt"
57
+ end
@@ -0,0 +1,161 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/ip'
5
+
6
+ def ifconfig_fixture(filename)
7
+ File.read(fixtures('ifconfig', filename))
8
+ end
9
+
10
+ describe "The IPv6 address fact" do
11
+ include FacterSpec::ConfigHelper
12
+
13
+ before do
14
+ given_a_configuration_of(:is_windows => false)
15
+ end
16
+
17
+ it "should return ipaddress6 information for Darwin" do
18
+ Facter::Core::Execution.stubs(:exec).with('uname -s').returns('Darwin')
19
+ Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
20
+ Facter::Util::IP.stubs(:exec_ifconfig).with(["-a"]).
21
+ returns(ifconfig_fixture('darwin_ifconfig_all_with_multiple_interfaces'))
22
+
23
+ Facter.value(:ipaddress6).should == "2610:10:20:209:223:32ff:fed5:ee34"
24
+ end
25
+
26
+ it "should return ipaddress6 information for Linux" do
27
+ Facter::Core::Execution.stubs(:exec).with('uname -s').returns('Linux')
28
+ Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
29
+ Facter::Util::IP.stubs(:exec_ifconfig).with(["2>/dev/null"]).
30
+ returns(ifconfig_fixture('linux_ifconfig_all_with_multiple_interfaces'))
31
+
32
+ Facter.value(:ipaddress6).should == "2610:10:20:209:212:3fff:febe:2201"
33
+ end
34
+
35
+ it "should return ipaddress6 information for Linux with recent net-tools" do
36
+ Facter::Core::Execution.stubs(:exec).with('uname -s').returns('Linux')
37
+ Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
38
+ Facter::Util::IP.stubs(:exec_ifconfig).with(["2>/dev/null"]).
39
+ returns(ifconfig_fixture('ifconfig_net_tools_1.60.txt'))
40
+
41
+ Facter.value(:ipaddress6).should == "2610:10:20:209:212:3fff:febe:2201"
42
+ end
43
+
44
+ it "should return ipaddress6 information for Solaris" do
45
+ Facter::Core::Execution.stubs(:exec).with('uname -s').returns('SunOS')
46
+ Facter::Util::IP.stubs(:get_ifconfig).returns("/usr/sbin/ifconfig")
47
+ Facter::Util::IP.stubs(:exec_ifconfig).with(["-a"]).
48
+ returns(ifconfig_fixture('sunos_ifconfig_all_with_multiple_interfaces'))
49
+
50
+ Facter.value(:ipaddress6).should == "2610:10:20:209:203:baff:fe27:a7c"
51
+ end
52
+
53
+ context "on Windows" do
54
+ require 'facter/util/wmi'
55
+ require 'facter/util/registry'
56
+ require 'facter/util/ip/windows'
57
+ require 'facter_spec/windows_network'
58
+
59
+ include FacterSpec::WindowsNetwork
60
+
61
+ before :each do
62
+ Facter.fact(:kernel).stubs(:value).returns(:windows)
63
+ Facter::Util::Registry.stubs(:hklm_read).returns(nic_bindings)
64
+ given_a_configuration_of(:is_windows => true)
65
+ end
66
+
67
+ it "should do what when VPN is turned on?"
68
+
69
+ context "when you have no active network adapter" do
70
+ it "should return nil if there are no active (or any) network adapters" do
71
+ Facter::Util::WMI.expects(:execquery).with(Facter::Util::IP::Windows::WMI_IP_INFO_QUERY).returns([])
72
+
73
+ Facter.value(:ipaddress6).should == nil
74
+ end
75
+ end
76
+
77
+ it "should return nil if the system doesn't have ipv6 installed", :if => Facter::Util::Config.is_windows? do
78
+ Facter::Util::Resolution.any_instance.expects(:warn).never
79
+ Facter::Util::Registry.stubs(:hklm_read).raises(Win32::Registry::Error, 2)
80
+
81
+ Facter.value(:ipaddress6).should == nil
82
+ end
83
+
84
+ context "when you have one network adapter" do
85
+ it "should return empty if ipv6 is not on" do
86
+ nic = given_a_valid_windows_nic_with_ipv4_and_ipv6
87
+ nic.expects(:IPAddress).returns([ipAddress1])
88
+ Facter::Util::WMI.expects(:execquery).returns([nic])
89
+
90
+ Facter.value(:ipaddress6).should == nil
91
+ end
92
+
93
+ it "should return the ipv6 address properly" do
94
+ Facter::Util::WMI.expects(:execquery).returns([given_a_valid_windows_nic_with_ipv4_and_ipv6])
95
+
96
+ Facter.value(:ipaddress6).should == ipv6Address0
97
+ end
98
+
99
+ it "should return the first ipv6 address if there is more than one (multi-homing)" do
100
+ nic = given_a_valid_windows_nic_with_ipv4_and_ipv6
101
+ nic.expects(:IPAddress).returns([ipAddress0, ipv6Address0,ipv6Address1])
102
+ Facter::Util::WMI.expects(:execquery).returns([nic])
103
+
104
+ Facter.value(:ipaddress6).should == ipv6Address0
105
+ end
106
+
107
+ it "should return return nil if the ipv6 address is link local" do
108
+ nic = given_a_valid_windows_nic_with_ipv4_and_ipv6
109
+ nic.expects(:IPAddress).returns([ipAddress0, ipv6LinkLocal])
110
+ Facter::Util::WMI.expects(:execquery).returns([nic])
111
+
112
+ Facter.value(:ipaddress6).should == nil
113
+ end
114
+ end
115
+
116
+ context "when you have more than one network adapter" do
117
+ it "should return empty if ipv6 is not on" do
118
+ nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
119
+ nics[:nic0].expects(:IPAddress).returns([ipAddress0])
120
+ nics[:nic1].expects(:IPAddress).returns([ipAddress1])
121
+ Facter::Util::WMI.expects(:execquery).returns(nics.values)
122
+
123
+ Facter.value(:ipaddress6).should == nil
124
+ end
125
+
126
+ it "should return the ipv6 of the adapter with the lowest IP connection metric (best connection)" do
127
+ nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
128
+ nics[:nic1].expects(:IPConnectionMetric).returns(5)
129
+ Facter::Util::WMI.expects(:execquery).returns(nics.values)
130
+
131
+ Facter.value(:ipaddress6).should == ipv6Address1
132
+ end
133
+
134
+ it "should return the ipv6 of the adapter with the lowest IP connection metric (best connection) that has ipv6 enabled" do
135
+ nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
136
+ nics[:nic1].expects(:IPConnectionMetric).returns(5)
137
+ nics[:nic1].expects(:IPAddress).returns([ipAddress1])
138
+ Facter::Util::WMI.expects(:execquery).returns(nics.values)
139
+
140
+ Facter.value(:ipaddress6).should == ipv6Address0
141
+ end
142
+
143
+ context "when the IP connection metric is the same" do
144
+ it "should return the ipv6 of the adapter with the lowest binding order" do
145
+ nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
146
+ Facter::Util::WMI.expects(:execquery).returns(nics.values)
147
+
148
+ Facter.value(:ipaddress6).should == ipv6Address0
149
+ end
150
+
151
+ it "should return the ipv6 of the adapter with the lowest binding order even if the adapter is not first" do
152
+ nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
153
+ Facter::Util::Registry.stubs(:hklm_read).returns(["\\Device\\#{settingId1}", "\\Device\\#{settingId0}" ])
154
+ Facter::Util::WMI.expects(:execquery).returns(nics.values)
155
+
156
+ Facter.value(:ipaddress6).should == ipv6Address1
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end