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.
- checksums.yaml +7 -0
- data/COMMITTERS.md +194 -0
- data/CONTRIBUTING.md +65 -0
- data/Gemfile +43 -0
- data/LICENSE +15 -0
- data/README.md +33 -0
- data/Rakefile +79 -0
- data/bin/facter +16 -0
- data/etc/facter.conf +5 -0
- data/ext/build_defaults.yaml +24 -0
- data/ext/debian/changelog.erb +59 -0
- data/ext/debian/compat +1 -0
- data/ext/debian/control +14 -0
- data/ext/debian/copyright +19 -0
- data/ext/debian/docs +1 -0
- data/ext/debian/lintian-overrides +0 -0
- data/ext/debian/rules +10 -0
- data/ext/debian/source/format +1 -0
- data/ext/facter-diff +74 -0
- data/ext/ips/facter.p5m.erb +10 -0
- data/ext/ips/rules +7 -0
- data/ext/ips/transforms +18 -0
- data/ext/osx/file_mapping.yaml +27 -0
- data/ext/osx/preflight.erb +33 -0
- data/ext/osx/prototype.plist.erb +38 -0
- data/ext/project_data.yaml +33 -0
- data/ext/redhat/facter.spec.erb +220 -0
- data/ext/solaris/pkginfo +7 -0
- data/install.rb +380 -0
- data/lib/facter.rb +262 -0
- data/lib/facter/Cfkey.rb +42 -0
- data/lib/facter/application.rb +204 -0
- data/lib/facter/architecture.rb +50 -0
- data/lib/facter/augeasversion.rb +28 -0
- data/lib/facter/blockdevices.rb +105 -0
- data/lib/facter/core/aggregate.rb +220 -0
- data/lib/facter/core/directed_graph.rb +46 -0
- data/lib/facter/core/execution.rb +100 -0
- data/lib/facter/core/execution/base.rb +73 -0
- data/lib/facter/core/execution/posix.rb +50 -0
- data/lib/facter/core/execution/windows.rb +57 -0
- data/lib/facter/core/logging.rb +169 -0
- data/lib/facter/core/resolvable.rb +94 -0
- data/lib/facter/core/suitable.rb +117 -0
- data/lib/facter/domain.rb +99 -0
- data/lib/facter/ec2.rb +37 -0
- data/lib/facter/facterversion.rb +15 -0
- data/lib/facter/filesystems.rb +38 -0
- data/lib/facter/fqdn.rb +22 -0
- data/lib/facter/hardwareisa.rb +20 -0
- data/lib/facter/hardwaremodel.rb +67 -0
- data/lib/facter/hostname.rb +33 -0
- data/lib/facter/id.rb +21 -0
- data/lib/facter/interfaces.rb +46 -0
- data/lib/facter/ipaddress.rb +171 -0
- data/lib/facter/ipaddress6.rb +82 -0
- data/lib/facter/iphostnumber.rb +29 -0
- data/lib/facter/kernel.rb +22 -0
- data/lib/facter/kernelmajversion.rb +15 -0
- data/lib/facter/kernelrelease.rb +42 -0
- data/lib/facter/kernelversion.rb +22 -0
- data/lib/facter/ldom.rb +47 -0
- data/lib/facter/lsbdistcodename.rb +18 -0
- data/lib/facter/lsbdistdescription.rb +21 -0
- data/lib/facter/lsbdistid.rb +18 -0
- data/lib/facter/lsbdistrelease.rb +18 -0
- data/lib/facter/lsbmajdistrelease.rb +27 -0
- data/lib/facter/lsbrelease.rb +18 -0
- data/lib/facter/macaddress.rb +97 -0
- data/lib/facter/macosx.rb +56 -0
- data/lib/facter/manufacturer.rb +68 -0
- data/lib/facter/memory.rb +162 -0
- data/lib/facter/netmask.rb +42 -0
- data/lib/facter/network.rb +20 -0
- data/lib/facter/operatingsystem.rb +121 -0
- data/lib/facter/operatingsystemmajrelease.rb +33 -0
- data/lib/facter/operatingsystemrelease.rb +226 -0
- data/lib/facter/osfamily.rb +35 -0
- data/lib/facter/path.rb +14 -0
- data/lib/facter/physicalprocessorcount.rb +84 -0
- data/lib/facter/processor.rb +183 -0
- data/lib/facter/ps.rb +30 -0
- data/lib/facter/puppetversion.rb +20 -0
- data/lib/facter/rubysitedir.rb +12 -0
- data/lib/facter/rubyversion.rb +12 -0
- data/lib/facter/selinux.rb +99 -0
- data/lib/facter/ssh.rb +72 -0
- data/lib/facter/timezone.rb +14 -0
- data/lib/facter/uniqueid.rb +4 -0
- data/lib/facter/uptime.rb +34 -0
- data/lib/facter/uptime_days.rb +15 -0
- data/lib/facter/uptime_hours.rb +15 -0
- data/lib/facter/uptime_seconds.rb +24 -0
- data/lib/facter/util/architecture.rb +19 -0
- data/lib/facter/util/collection.rb +161 -0
- data/lib/facter/util/composite_loader.rb +12 -0
- data/lib/facter/util/config.rb +61 -0
- data/lib/facter/util/confine.rb +66 -0
- data/lib/facter/util/directory_loader.rb +83 -0
- data/lib/facter/util/ec2.rb +101 -0
- data/lib/facter/util/fact.rb +204 -0
- data/lib/facter/util/file_read.rb +37 -0
- data/lib/facter/util/formatter.rb +38 -0
- data/lib/facter/util/ip.rb +285 -0
- data/lib/facter/util/ip/windows.rb +215 -0
- data/lib/facter/util/loader.rb +146 -0
- data/lib/facter/util/macaddress.rb +43 -0
- data/lib/facter/util/macosx.rb +73 -0
- data/lib/facter/util/manufacturer.rb +104 -0
- data/lib/facter/util/memory.rb +228 -0
- data/lib/facter/util/monkey_patches.rb +8 -0
- data/lib/facter/util/netmask.rb +40 -0
- data/lib/facter/util/normalization.rb +94 -0
- data/lib/facter/util/nothing_loader.rb +12 -0
- data/lib/facter/util/parser.rb +158 -0
- data/lib/facter/util/plist.rb +24 -0
- data/lib/facter/util/plist/generator.rb +228 -0
- data/lib/facter/util/plist/parser.rb +226 -0
- data/lib/facter/util/processor.rb +291 -0
- data/lib/facter/util/registry.rb +11 -0
- data/lib/facter/util/resolution.rb +152 -0
- data/lib/facter/util/solaris_zones.rb +158 -0
- data/lib/facter/util/unix_root.rb +5 -0
- data/lib/facter/util/uptime.rb +81 -0
- data/lib/facter/util/values.rb +80 -0
- data/lib/facter/util/virtual.rb +151 -0
- data/lib/facter/util/vlans.rb +24 -0
- data/lib/facter/util/windows_root.rb +37 -0
- data/lib/facter/util/wmi.rb +16 -0
- data/lib/facter/util/xendomains.rb +10 -0
- data/lib/facter/version.rb +86 -0
- data/lib/facter/virtual.rb +262 -0
- data/lib/facter/vlans.rb +17 -0
- data/lib/facter/xendomains.rb +20 -0
- data/lib/facter/zfs_version.rb +10 -0
- data/lib/facter/zonename.rb +6 -0
- data/lib/facter/zones.rb +17 -0
- data/lib/facter/zpool_version.rb +10 -0
- data/spec/fixtures/cpuinfo/amd64dual +57 -0
- data/spec/fixtures/cpuinfo/amd64quad +79 -0
- data/spec/fixtures/cpuinfo/amd64solo +23 -0
- data/spec/fixtures/cpuinfo/amd64tri +86 -0
- data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
- data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
- data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
- data/spec/fixtures/cpuinfo/panda-armel +17 -0
- data/spec/fixtures/cpuinfo/ppc64 +19 -0
- data/spec/fixtures/cpuinfo/sparc +10 -0
- data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
- data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
- data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
- data/spec/fixtures/hpux/sched.models +174 -0
- data/spec/fixtures/hpux/unistd.h +1534 -0
- data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
- data/spec/fixtures/ifconfig/centos_5_5 +17 -0
- data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
- data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
- data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
- data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
- data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
- data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
- data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
- data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
- data/spec/fixtures/ifconfig/fedora_10 +36 -0
- data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
- data/spec/fixtures/ifconfig/fedora_13 +18 -0
- data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
- data/spec/fixtures/ifconfig/fedora_8 +38 -0
- data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
- data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
- data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
- data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
- data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
- data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
- data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
- data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
- data/spec/fixtures/ldom/ldom_v1 +6 -0
- data/spec/fixtures/netstat/centos_5_5 +5 -0
- data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
- data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
- data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
- data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
- data/spec/fixtures/netstat/fedora_10 +7 -0
- data/spec/fixtures/netstat/open_solaris_10 +16 -0
- data/spec/fixtures/netstat/open_solaris_b132 +17 -0
- data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
- data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
- data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
- data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
- data/spec/fixtures/unit/filesystems/linux +28 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
- data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
- data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
- data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
- data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
- data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
- data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
- data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
- data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
- data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
- data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
- data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
- data/spec/fixtures/unit/util/loader/nosuchfact.rb +1 -0
- data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
- data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
- data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
- data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
- data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
- data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
- data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
- data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
- data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
- data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
- data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
- data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
- data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
- data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
- data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
- data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
- data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
- data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
- data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
- data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
- data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
- data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
- data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
- data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
- data/spec/integration/facter_spec.rb +39 -0
- data/spec/lib/facter_spec/cpuinfo.rb +15 -0
- data/spec/lib/facter_spec/windows_network.rb +64 -0
- data/spec/puppetlabs_spec/files.rb +57 -0
- data/spec/puppetlabs_spec/fixtures.rb +49 -0
- data/spec/puppetlabs_spec/matchers.rb +87 -0
- data/spec/puppetlabs_spec/verbose.rb +9 -0
- data/spec/puppetlabs_spec_helper.rb +26 -0
- data/spec/shared_contexts/platform.rb +55 -0
- data/spec/shared_formats/parses.rb +3 -0
- data/spec/spec_helper.rb +75 -0
- data/spec/unit/application_spec.rb +101 -0
- data/spec/unit/architecture_spec.rb +63 -0
- data/spec/unit/blockdevices_spec.rb +109 -0
- data/spec/unit/core/aggregate_spec.rb +125 -0
- data/spec/unit/core/directed_graph_spec.rb +79 -0
- data/spec/unit/core/execution/base_spec.rb +119 -0
- data/spec/unit/core/execution/posix_spec.rb +86 -0
- data/spec/unit/core/execution/windows_spec.rb +106 -0
- data/spec/unit/core/execution_spec.rb +37 -0
- data/spec/unit/core/logging_spec.rb +104 -0
- data/spec/unit/core/resolvable_spec.rb +81 -0
- data/spec/unit/core/suitable_spec.rb +96 -0
- data/spec/unit/domain_spec.rb +310 -0
- data/spec/unit/ec2_spec.rb +187 -0
- data/spec/unit/facter_spec.rb +108 -0
- data/spec/unit/filesystems_spec.rb +50 -0
- data/spec/unit/hardwareisa_spec.rb +41 -0
- data/spec/unit/hardwaremodel_spec.rb +56 -0
- data/spec/unit/hostname_spec.rb +40 -0
- data/spec/unit/id_spec.rb +29 -0
- data/spec/unit/interfaces_spec.rb +57 -0
- data/spec/unit/ipaddress6_spec.rb +161 -0
- data/spec/unit/ipaddress_spec.rb +114 -0
- data/spec/unit/kernel_spec.rb +24 -0
- data/spec/unit/kernelmajversion_spec.rb +17 -0
- data/spec/unit/kernelrelease_spec.rb +53 -0
- data/spec/unit/kernelversion_spec.rb +32 -0
- data/spec/unit/ldom_spec.rb +74 -0
- data/spec/unit/lsbdistcodename_spec.rb +25 -0
- data/spec/unit/lsbdistdescription_spec.rb +25 -0
- data/spec/unit/lsbdistid_spec.rb +25 -0
- data/spec/unit/lsbdistrelease_spec.rb +25 -0
- data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
- data/spec/unit/lsbrelease_spec.rb +25 -0
- data/spec/unit/macaddress_spec.rb +61 -0
- data/spec/unit/manufacturer_spec.rb +115 -0
- data/spec/unit/memory_spec.rb +539 -0
- data/spec/unit/netmask_spec.rb +95 -0
- data/spec/unit/operatingsystem_spec.rb +141 -0
- data/spec/unit/operatingsystemmajrelease_spec.rb +16 -0
- data/spec/unit/operatingsystemrelease_spec.rb +226 -0
- data/spec/unit/physicalprocessorcount_spec.rb +76 -0
- data/spec/unit/processor_spec.rb +393 -0
- data/spec/unit/ps_spec.rb +42 -0
- data/spec/unit/selinux_spec.rb +114 -0
- data/spec/unit/ssh_spec.rb +77 -0
- data/spec/unit/uniqueid_spec.rb +27 -0
- data/spec/unit/uptime_spec.rb +110 -0
- data/spec/unit/util/collection_spec.rb +258 -0
- data/spec/unit/util/config_spec.rb +84 -0
- data/spec/unit/util/confine_spec.rb +148 -0
- data/spec/unit/util/directory_loader_spec.rb +88 -0
- data/spec/unit/util/ec2_spec.rb +180 -0
- data/spec/unit/util/fact_spec.rb +142 -0
- data/spec/unit/util/file_read_spec.rb +29 -0
- data/spec/unit/util/ip/windows_spec.rb +80 -0
- data/spec/unit/util/ip_spec.rb +463 -0
- data/spec/unit/util/loader_spec.rb +286 -0
- data/spec/unit/util/macaddress_spec.rb +141 -0
- data/spec/unit/util/macosx_spec.rb +113 -0
- data/spec/unit/util/manufacturer_spec.rb +179 -0
- data/spec/unit/util/normalization_spec.rb +113 -0
- data/spec/unit/util/parser_spec.rb +200 -0
- data/spec/unit/util/processor_spec.rb +92 -0
- data/spec/unit/util/registry_spec.rb +76 -0
- data/spec/unit/util/resolution_spec.rb +129 -0
- data/spec/unit/util/solaris_zones_spec.rb +127 -0
- data/spec/unit/util/uptime_spec.rb +126 -0
- data/spec/unit/util/values_spec.rb +131 -0
- data/spec/unit/util/virtual_spec.rb +294 -0
- data/spec/unit/util/vlans_spec.rb +12 -0
- data/spec/unit/util/wmi_spec.rb +19 -0
- data/spec/unit/util/xendomains_spec.rb +21 -0
- data/spec/unit/version_spec.rb +42 -0
- data/spec/unit/virtual_spec.rb +470 -0
- data/spec/unit/zfs_version_spec.rb +75 -0
- data/spec/unit/zonename_spec.rb +14 -0
- data/spec/unit/zones_spec.rb +55 -0
- data/spec/unit/zpool_version_spec.rb +75 -0
- data/spec/watchr.rb +125 -0
- metadata +674 -0
@@ -0,0 +1,142 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/fact'
|
5
|
+
|
6
|
+
describe Facter::Util::Fact do
|
7
|
+
|
8
|
+
subject(:fact) { Facter::Util::Fact.new("yay") }
|
9
|
+
|
10
|
+
let(:resolution) { Facter::Util::Resolution.new("yay", fact) }
|
11
|
+
|
12
|
+
it "requires a name" do
|
13
|
+
expect { Facter::Util::Fact.new }.to raise_error(ArgumentError)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "downcases and converts the name to a symbol" do
|
17
|
+
expect(Facter::Util::Fact.new("YayNess").name).to eq :yayness
|
18
|
+
end
|
19
|
+
|
20
|
+
it "issues a deprecation warning for use of ldapname" do
|
21
|
+
Facter.expects(:warnonce).with("ldapname is deprecated and will be removed in a future version")
|
22
|
+
Facter::Util::Fact.new("YayNess", :ldapname => "fooness")
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "when adding resolution mechanisms using #add" do
|
26
|
+
it "delegates to #define_resolution with an anonymous resolution" do
|
27
|
+
subject.expects(:define_resolution).with(nil, {})
|
28
|
+
subject.add
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "looking up resolutions by name" do
|
33
|
+
subject(:fact) { described_class.new('yay') }
|
34
|
+
|
35
|
+
it "returns nil if no such resolution exists" do
|
36
|
+
expect(fact.resolution('nope')).to be_nil
|
37
|
+
end
|
38
|
+
|
39
|
+
it "never returns anonymous resolutions" do
|
40
|
+
fact.add() { setcode { 'anonymous' } }
|
41
|
+
|
42
|
+
expect(fact.resolution(nil)).to be_nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "adding resolution mechanisms by name" do
|
47
|
+
|
48
|
+
let(:res) do
|
49
|
+
stub 'resolution',
|
50
|
+
:name => 'named',
|
51
|
+
:set_options => nil,
|
52
|
+
:resolution_type => :simple
|
53
|
+
end
|
54
|
+
|
55
|
+
it "creates a new resolution if no such resolution exists" do
|
56
|
+
Facter::Util::Resolution.expects(:new).once.with('named', fact).returns(res)
|
57
|
+
|
58
|
+
fact.define_resolution('named')
|
59
|
+
|
60
|
+
expect(fact.resolution('named')).to eq res
|
61
|
+
end
|
62
|
+
|
63
|
+
it "creates a simple resolution when the type is nil" do
|
64
|
+
fact.define_resolution('named')
|
65
|
+
expect(fact.resolution('named')).to be_a_kind_of Facter::Util::Resolution
|
66
|
+
end
|
67
|
+
|
68
|
+
it "creates a simple resolution when the type is :simple" do
|
69
|
+
fact.define_resolution('named', :type => :simple)
|
70
|
+
expect(fact.resolution('named')).to be_a_kind_of Facter::Util::Resolution
|
71
|
+
end
|
72
|
+
|
73
|
+
it "creates an aggregate resolution when the type is :aggregate" do
|
74
|
+
fact.define_resolution('named', :type => :aggregate)
|
75
|
+
expect(fact.resolution('named')).to be_a_kind_of Facter::Core::Aggregate
|
76
|
+
end
|
77
|
+
|
78
|
+
it "raises an error if there is an existing resolution with a different type" do
|
79
|
+
pending "We need to stop rescuing all errors when instantiating resolutions"
|
80
|
+
fact.define_resolution('named')
|
81
|
+
expect {
|
82
|
+
fact.define_resolution('named', :type => :aggregate)
|
83
|
+
}.to raise_error(ArgumentError, /Cannot return resolution.*already defined as simple/)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "returns existing resolutions by name" do
|
87
|
+
Facter::Util::Resolution.expects(:new).once.with('named', fact).returns(res)
|
88
|
+
|
89
|
+
fact.define_resolution('named')
|
90
|
+
fact.define_resolution('named')
|
91
|
+
|
92
|
+
expect(fact.resolution('named')).to eq res
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "when returning a value" do
|
97
|
+
it "returns nil if there are no resolutions" do
|
98
|
+
Facter::Util::Fact.new("yay").value.should be_nil
|
99
|
+
end
|
100
|
+
|
101
|
+
it "prefers the highest weight resolution" do
|
102
|
+
fact.add { has_weight 1; setcode { "1" } }
|
103
|
+
fact.add { has_weight 2; setcode { "2" } }
|
104
|
+
fact.add { has_weight 0; setcode { "0" } }
|
105
|
+
expect(fact.value).to eq "2"
|
106
|
+
end
|
107
|
+
|
108
|
+
it "returns the first value returned by a resolution" do
|
109
|
+
fact.add { has_weight 1; setcode { "1" } }
|
110
|
+
fact.add { has_weight 2; setcode { nil } }
|
111
|
+
fact.add { has_weight 0; setcode { "0" } }
|
112
|
+
expect(fact.value).to eq "1"
|
113
|
+
end
|
114
|
+
|
115
|
+
it "skips unsuitable resolutions" do
|
116
|
+
fact.add { has_weight 1; setcode { "1" } }
|
117
|
+
fact.add do
|
118
|
+
def suitable?; false; end
|
119
|
+
has_weight 2
|
120
|
+
setcode { 2 }
|
121
|
+
end
|
122
|
+
|
123
|
+
expect(fact.value).to eq "1"
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
describe '#flush' do
|
128
|
+
subject do
|
129
|
+
Facter::Util::Fact.new(:foo)
|
130
|
+
end
|
131
|
+
|
132
|
+
it "invokes #flush on all resolutions" do
|
133
|
+
simple = subject.add(:type => :simple)
|
134
|
+
simple.expects(:flush)
|
135
|
+
|
136
|
+
aggregate = subject.add(:type => :aggregate)
|
137
|
+
aggregate.expects(:flush)
|
138
|
+
|
139
|
+
subject.flush
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'facter/util/file_read'
|
4
|
+
require 'spec_helper'
|
5
|
+
|
6
|
+
describe Facter::Util::FileRead do
|
7
|
+
let(:issue) { "Ubuntu 10.04.4 LTS \\n \\l\n\n" }
|
8
|
+
|
9
|
+
it "reads a file" do
|
10
|
+
File.expects(:read).with("/etc/issue").returns(issue)
|
11
|
+
Facter::Util::FileRead.read("/etc/issue").should == issue
|
12
|
+
end
|
13
|
+
|
14
|
+
it "returns nil if the file cannot be accessed" do
|
15
|
+
File.stubs(:read).with("/etc/issue").raises(Errno::EACCES.new("/etc/issue"))
|
16
|
+
Facter::Util::FileRead.read("/etc/issue").should be_nil
|
17
|
+
end
|
18
|
+
|
19
|
+
it "returns nil if the file does not exist" do
|
20
|
+
File.stubs(:read).with("/etc/issue").raises(Errno::ENOENT.new("/etc/issue"))
|
21
|
+
Facter::Util::FileRead.read("/etc/issue").should be_nil
|
22
|
+
end
|
23
|
+
|
24
|
+
it "logs a message when handing exceptions" do
|
25
|
+
File.stubs(:read).with("/etc/issue").raises(Errno::EACCES.new("/etc/issue"))
|
26
|
+
Facter.expects(:debug).with("Could not read /etc/issue: Permission denied - /etc/issue")
|
27
|
+
Facter::Util::FileRead.read("/etc/issue")
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/ip/windows'
|
5
|
+
|
6
|
+
describe Facter::Util::IP::Windows do
|
7
|
+
before :each do
|
8
|
+
Facter.fact(:kernel).stubs(:value).returns('windows')
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".to_s" do
|
12
|
+
let(:to_s) { described_class.to_s }
|
13
|
+
|
14
|
+
it { to_s.should eq 'windows' }
|
15
|
+
end
|
16
|
+
|
17
|
+
describe ".convert_netmask_from_hex?" do
|
18
|
+
let :convert_netmask_from_hex? do
|
19
|
+
described_class.convert_netmask_from_hex?
|
20
|
+
end
|
21
|
+
|
22
|
+
it { convert_netmask_from_hex?.should be false }
|
23
|
+
end
|
24
|
+
|
25
|
+
describe ".bonding_master" do
|
26
|
+
let(:bonding_master) { described_class.bonding_master('eth0') }
|
27
|
+
|
28
|
+
pending("porting to Windows") do
|
29
|
+
it { bonding_master.should be_nil }
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe ".interfaces" do
|
34
|
+
let(:name) { 'Local Area Connection' }
|
35
|
+
let(:index) { 7 }
|
36
|
+
let(:nic_config) { mock('nic_config', :Index => index) }
|
37
|
+
let(:nic) { stub('nic', :NetConnectionId => name ) }
|
38
|
+
let(:nic_empty_NetConnectionId) { stub('nic', :NetConnectionId => '' ) }
|
39
|
+
let(:nic_nil_NetConnectionId) { stub('nic', :NetConnectionId => nil ) }
|
40
|
+
let(:wmi_query) {"SELECT * FROM Win32_NetworkAdapter WHERE Index = #{index} AND NetEnabled = TRUE"}
|
41
|
+
|
42
|
+
it "should return an array of only connected interfaces" do
|
43
|
+
Facter::Util::WMI.expects(:execquery).with(Facter::Util::IP::Windows::WMI_IP_INFO_QUERY).
|
44
|
+
returns([nic_config])
|
45
|
+
Facter::Util::WMI.expects(:execquery).with(wmi_query).
|
46
|
+
returns([nic])
|
47
|
+
|
48
|
+
described_class.interfaces.should == [name]
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should not return an interface with an empty NetConnectionId" do
|
52
|
+
Facter::Util::WMI.expects(:execquery).with(Facter::Util::IP::Windows::WMI_IP_INFO_QUERY).
|
53
|
+
returns([nic_config])
|
54
|
+
Facter::Util::WMI.expects(:execquery).with(wmi_query).
|
55
|
+
returns([nic_empty_NetConnectionId])
|
56
|
+
|
57
|
+
described_class.interfaces.should == []
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should not return an interface with a nil NetConnectionId" do
|
61
|
+
Facter::Util::WMI.expects(:execquery).with(Facter::Util::IP::Windows::WMI_IP_INFO_QUERY).
|
62
|
+
returns([nic_config])
|
63
|
+
Facter::Util::WMI.expects(:execquery).with(wmi_query).
|
64
|
+
returns([nic_nil_NetConnectionId])
|
65
|
+
|
66
|
+
described_class.interfaces.should == []
|
67
|
+
end
|
68
|
+
|
69
|
+
context "when the adapter configuration is enabled but the underlying adapter is not enabled" do
|
70
|
+
it "should not return an interface" do
|
71
|
+
Facter::Util::WMI.expects(:execquery).with(Facter::Util::IP::Windows::WMI_IP_INFO_QUERY).
|
72
|
+
returns([nic_config])
|
73
|
+
Facter::Util::WMI.expects(:execquery).with(wmi_query).
|
74
|
+
returns([])
|
75
|
+
|
76
|
+
described_class.interfaces.should == []
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,463 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/ip'
|
5
|
+
|
6
|
+
describe Facter::Util::IP do
|
7
|
+
include FacterSpec::ConfigHelper
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
given_a_configuration_of(:is_windows => false)
|
11
|
+
end
|
12
|
+
|
13
|
+
[:freebsd, :linux, :netbsd, :openbsd, :sunos, :darwin, :"hp-ux", :"gnu/kfreebsd", :windows].each do |platform|
|
14
|
+
it "should be supported on #{platform}" do
|
15
|
+
given_a_configuration_of(:is_windows => platform == :windows)
|
16
|
+
Facter::Util::IP.supported_platforms.should be_include(platform)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return a list of interfaces" do
|
21
|
+
Facter::Util::IP.should respond_to(:get_interfaces)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should return an empty list of interfaces on an unknown kernel" do
|
25
|
+
Facter.stubs(:value).returns("UnknownKernel")
|
26
|
+
Facter::Util::IP.get_interfaces().should == []
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return a list with a single interface and the loopback interface on Linux with a single interface" do
|
30
|
+
linux_ifconfig = my_fixture_read("linux_ifconfig_all_with_single_interface")
|
31
|
+
Facter::Util::IP.stubs(:get_all_interface_output).returns(linux_ifconfig)
|
32
|
+
Facter::Util::IP.get_interfaces().should == ["eth0", "lo"]
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return a list two interfaces on Darwin with two interfaces" do
|
36
|
+
darwin_ifconfig = my_fixture_read("darwin_ifconfig_all_with_multiple_interfaces")
|
37
|
+
Facter::Util::IP.stubs(:get_all_interface_output).returns(darwin_ifconfig)
|
38
|
+
Facter::Util::IP.get_interfaces().should == ["lo0", "en0"]
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should return a list two interfaces on Solaris with two interfaces multiply reporting" do
|
42
|
+
solaris_ifconfig = my_fixture_read("solaris_ifconfig_all_with_multiple_interfaces")
|
43
|
+
Facter::Util::IP.stubs(:get_all_interface_output).returns(solaris_ifconfig)
|
44
|
+
Facter::Util::IP.get_interfaces().should == ["lo0", "e1000g0"]
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should return a list of six interfaces on a GNU/kFreeBSD with six interfaces" do
|
48
|
+
kfreebsd_ifconfig = my_fixture_read("debian_kfreebsd_ifconfig")
|
49
|
+
Facter::Util::IP.stubs(:get_all_interface_output).returns(kfreebsd_ifconfig)
|
50
|
+
Facter::Util::IP.get_interfaces().should == ["em0", "em1", "bge0", "bge1", "lo0", "vlan0"]
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should return a list of only connected interfaces on Windows" do
|
54
|
+
Facter.fact(:kernel).stubs(:value).returns("windows")
|
55
|
+
|
56
|
+
Facter::Util::IP::Windows.expects(:interfaces).returns(["Loopback Pseudo-Interface 1", "Local Area Connection", "Teredo Tunneling Pseudo-Interface"])
|
57
|
+
Facter::Util::IP.get_interfaces().should == ["Loopback Pseudo-Interface 1", "Local Area Connection", "Teredo Tunneling Pseudo-Interface"]
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should return a value for a specific interface" do
|
61
|
+
Facter::Util::IP.should respond_to(:get_interface_value)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should not return interface information for unsupported platforms" do
|
65
|
+
Facter.stubs(:value).with(:kernel).returns("bleah")
|
66
|
+
Facter::Util::IP.get_interface_value("e1000g0", "netmask").should == []
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should return ipaddress information for Solaris" do
|
70
|
+
solaris_ifconfig_interface = my_fixture_read("solaris_ifconfig_single_interface")
|
71
|
+
|
72
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("e1000g0").returns(solaris_ifconfig_interface)
|
73
|
+
Facter.stubs(:value).with(:kernel).returns("SunOS")
|
74
|
+
|
75
|
+
Facter::Util::IP.get_interface_value("e1000g0", "ipaddress").should == "172.16.15.138"
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should return netmask information for Solaris" do
|
79
|
+
solaris_ifconfig_interface = my_fixture_read("solaris_ifconfig_single_interface")
|
80
|
+
|
81
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("e1000g0").returns(solaris_ifconfig_interface)
|
82
|
+
Facter.stubs(:value).with(:kernel).returns("SunOS")
|
83
|
+
|
84
|
+
Facter::Util::IP.get_interface_value("e1000g0", "netmask").should == "255.255.255.0"
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should return calculated network information for Solaris" do
|
88
|
+
solaris_ifconfig_interface = my_fixture_read("solaris_ifconfig_single_interface")
|
89
|
+
|
90
|
+
Facter::Util::IP.stubs(:get_single_interface_output).with("e1000g0").returns(solaris_ifconfig_interface)
|
91
|
+
Facter.stubs(:value).with(:kernel).returns("SunOS")
|
92
|
+
|
93
|
+
Facter::Util::IP.get_network_value("e1000g0").should == "172.16.15.0"
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should return macaddress with leading zeros stripped off for GNU/kFreeBSD" do
|
97
|
+
kfreebsd_ifconfig = my_fixture_read("debian_kfreebsd_ifconfig")
|
98
|
+
|
99
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("em0").returns(kfreebsd_ifconfig)
|
100
|
+
Facter.stubs(:value).with(:kernel).returns("GNU/kFreeBSD")
|
101
|
+
|
102
|
+
Facter::Util::IP.get_interface_value("em0", "macaddress").should == "0:11:a:59:67:90"
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should return interface information for FreeBSD supported via an alias" do
|
106
|
+
ifconfig_interface = my_fixture_read("6.0-STABLE_FreeBSD_ifconfig")
|
107
|
+
|
108
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("fxp0").returns(ifconfig_interface)
|
109
|
+
Facter.stubs(:value).with(:kernel).returns("FreeBSD")
|
110
|
+
|
111
|
+
Facter::Util::IP.get_interface_value("fxp0", "macaddress").should == "00:0e:0c:68:67:7c"
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should return macaddress information for OS X" do
|
115
|
+
ifconfig_interface = my_fixture_read("Mac_OS_X_10.5.5_ifconfig")
|
116
|
+
|
117
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("en1").returns(ifconfig_interface)
|
118
|
+
Facter.stubs(:value).with(:kernel).returns("Darwin")
|
119
|
+
|
120
|
+
Facter::Util::IP.get_interface_value("en1", "macaddress").should == "00:1b:63:ae:02:66"
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should return all interfaces correctly on OS X" do
|
124
|
+
ifconfig_interface = my_fixture_read("Mac_OS_X_10.5.5_ifconfig")
|
125
|
+
|
126
|
+
Facter::Util::IP.expects(:get_all_interface_output).returns(ifconfig_interface)
|
127
|
+
Facter.stubs(:value).with(:kernel).returns("Darwin")
|
128
|
+
|
129
|
+
Facter::Util::IP.get_interfaces().should == ["lo0", "gif0", "stf0", "en0", "fw0", "en1", "vmnet8", "vmnet1"]
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should return a human readable netmask on Solaris" do
|
133
|
+
solaris_ifconfig_interface = my_fixture_read("solaris_ifconfig_single_interface")
|
134
|
+
|
135
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("e1000g0").returns(solaris_ifconfig_interface)
|
136
|
+
Facter.stubs(:value).with(:kernel).returns("SunOS")
|
137
|
+
|
138
|
+
Facter::Util::IP.get_interface_value("e1000g0", "netmask").should == "255.255.255.0"
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should return a human readable netmask on Darwin" do
|
142
|
+
darwin_ifconfig_interface = my_fixture_read("darwin_ifconfig_single_interface")
|
143
|
+
|
144
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("en1").returns(darwin_ifconfig_interface)
|
145
|
+
Facter.stubs(:value).with(:kernel).returns("Darwin")
|
146
|
+
|
147
|
+
Facter::Util::IP.get_interface_value("en1", "netmask").should == "255.255.255.0"
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should return a human readable netmask on GNU/kFreeBSD" do
|
151
|
+
kfreebsd_ifconfig = my_fixture_read("debian_kfreebsd_ifconfig")
|
152
|
+
|
153
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("em1").returns(kfreebsd_ifconfig)
|
154
|
+
Facter.stubs(:value).with(:kernel).returns("GNU/kFreeBSD")
|
155
|
+
|
156
|
+
Facter::Util::IP.get_interface_value("em1", "netmask").should == "255.255.255.0"
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should return correct macaddress information for infiniband on Linux" do
|
160
|
+
correct_ifconfig_interface = my_fixture_read("linux_get_single_interface_ib0")
|
161
|
+
|
162
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("ib0").returns(correct_ifconfig_interface)
|
163
|
+
Facter.stubs(:value).with(:kernel).returns("Linux")
|
164
|
+
|
165
|
+
Facter::Util::IP.get_interface_value("ib0", "macaddress").should == "80:00:00:4a:fe:80:00:00:00:00:00:00:00:02:c9:03:00:43:27:21"
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should replace the incorrect macaddress with the correct macaddress in ifconfig for infiniband on Linux" do
|
169
|
+
ifconfig_interface = my_fixture_read("linux_ifconfig_ib0")
|
170
|
+
correct_ifconfig_interface = my_fixture_read("linux_get_single_interface_ib0")
|
171
|
+
|
172
|
+
Facter::Util::IP.expects(:get_infiniband_macaddress).with("ib0").returns("80:00:00:4a:fe:80:00:00:00:00:00:00:00:02:c9:03:00:43:27:21")
|
173
|
+
Facter::Util::IP.expects(:ifconfig_interface).with("ib0").returns(ifconfig_interface)
|
174
|
+
Facter.stubs(:value).with(:kernel).returns("Linux")
|
175
|
+
|
176
|
+
Facter::Util::IP.get_single_interface_output("ib0").should == correct_ifconfig_interface
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should return fake macaddress information for infiniband on Linux when neither sysfs or /sbin/ip are available" do
|
180
|
+
ifconfig_interface = my_fixture_read("linux_ifconfig_ib0")
|
181
|
+
|
182
|
+
File.expects(:exists?).with("/sys/class/net/ib0/address").returns(false)
|
183
|
+
File.expects(:exists?).with("/sbin/ip").returns(false)
|
184
|
+
Facter::Util::IP.expects(:ifconfig_interface).with("ib0").returns(ifconfig_interface)
|
185
|
+
Facter.stubs(:value).with(:kernel).returns("Linux")
|
186
|
+
|
187
|
+
Facter::Util::IP.get_interface_value("ib0", "macaddress").should == "FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF"
|
188
|
+
end
|
189
|
+
|
190
|
+
it "should not get bonding master on interface aliases" do
|
191
|
+
Facter.stubs(:value).with(:kernel).returns("Linux")
|
192
|
+
|
193
|
+
Facter::Util::IP.get_bonding_master("eth0:1").should be_nil
|
194
|
+
end
|
195
|
+
|
196
|
+
[:freebsd, :netbsd, :openbsd, :sunos, :darwin, :"hp-ux"].each do |platform|
|
197
|
+
it "should require conversion from hex on #{platform}" do
|
198
|
+
Facter::Util::IP.convert_from_hex?(platform).should == true
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
[:windows].each do |platform|
|
203
|
+
it "should not require conversion from hex on #{platform}" do
|
204
|
+
Facter::Util::IP.convert_from_hex?(platform).should be_false
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
it "should return an arp address on Linux" do
|
209
|
+
Facter.stubs(:value).with(:kernel).returns("Linux")
|
210
|
+
|
211
|
+
Facter::Util::IP.expects(:get_arp_value).with("eth0").returns("00:00:0c:9f:f0:04")
|
212
|
+
Facter::Util::IP.get_arp_value("eth0").should == "00:00:0c:9f:f0:04"
|
213
|
+
end
|
214
|
+
|
215
|
+
it "should return mtu information on Linux" do
|
216
|
+
linux_ifconfig = my_fixture_read("linux_ifconfig_all_with_single_interface")
|
217
|
+
Facter::Util::IP.stubs(:get_all_interface_output).returns(linux_ifconfig)
|
218
|
+
Facter::Util::IP.stubs(:get_single_interface_output).with("eth0").
|
219
|
+
returns(my_fixture_read("linux_get_single_interface_eth0"))
|
220
|
+
Facter::Util::IP.stubs(:get_single_interface_output).with("lo").
|
221
|
+
returns(my_fixture_read("linux_get_single_interface_lo"))
|
222
|
+
Facter.stubs(:value).with(:kernel).returns("Linux")
|
223
|
+
|
224
|
+
Facter::Util::IP.get_interface_value("eth0", "mtu").should == "1500"
|
225
|
+
Facter::Util::IP.get_interface_value("lo", "mtu").should == "16436"
|
226
|
+
end
|
227
|
+
|
228
|
+
it "should return mtu information on Darwin" do
|
229
|
+
darwin_ifconfig_interface = my_fixture_read("darwin_ifconfig_single_interface")
|
230
|
+
|
231
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("en1").returns(darwin_ifconfig_interface)
|
232
|
+
Facter.stubs(:value).with(:kernel).returns("Darwin")
|
233
|
+
|
234
|
+
Facter::Util::IP.get_interface_value("en1", "mtu").should == "1500"
|
235
|
+
end
|
236
|
+
|
237
|
+
it "should return mtu information for Solaris" do
|
238
|
+
solaris_ifconfig_interface = my_fixture_read("solaris_ifconfig_single_interface")
|
239
|
+
|
240
|
+
Facter::Util::IP.expects(:get_single_interface_output).with("e1000g0").returns(solaris_ifconfig_interface)
|
241
|
+
Facter.stubs(:value).with(:kernel).returns("SunOS")
|
242
|
+
|
243
|
+
Facter::Util::IP.get_interface_value("e1000g0", "mtu").should == "1500"
|
244
|
+
end
|
245
|
+
|
246
|
+
# (#17487) - tests for HP-UX.
|
247
|
+
# some fake data for testing robustness of regexps.
|
248
|
+
def self.fake_netstat_in_examples
|
249
|
+
examples = []
|
250
|
+
examples << ["Header row\na line with none in it\na line without\nanother line without\n",
|
251
|
+
"a line without\nanother line without\n"]
|
252
|
+
examples << ["Header row\na line without\na line with none in it\nanother line with none\nanother line without\n",
|
253
|
+
"a line without\nanother line without\n"]
|
254
|
+
examples << ["Header row\na line with * asterisks *\na line with none in it\nanother line without\n",
|
255
|
+
"a line with asterisks \nanother line without\n"]
|
256
|
+
examples << ["a line with none none none in it\na line with none in it\na line without\nanother line without\n",
|
257
|
+
"another line without\n"]
|
258
|
+
examples
|
259
|
+
end
|
260
|
+
|
261
|
+
fake_netstat_in_examples.each_with_index do |example, i|
|
262
|
+
input, expected_output = example
|
263
|
+
it "should pass regexp test on fake netstat input example #{i}" do
|
264
|
+
Facter.stubs(:value).with(:kernel).returns("HP-UX")
|
265
|
+
Facter::Util::IP.stubs(:hpux_netstat_in).returns(input)
|
266
|
+
Facter::Util::IP.get_all_interface_output().should == expected_output
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
# and some real data for exhaustive tests.
|
271
|
+
def self.hpux_examples
|
272
|
+
examples = []
|
273
|
+
examples << ["HP-UX 11.11",
|
274
|
+
["lan1", "lan0", "lo0" ],
|
275
|
+
["1500", "1500", "4136" ],
|
276
|
+
["10.1.1.6", "192.168.3.10", "127.0.0.1"],
|
277
|
+
["255.255.255.0", "255.255.255.0", "255.0.0.0"],
|
278
|
+
["00:10:79:7B:5C:DE", "00:30:7F:0C:79:DC", nil ],
|
279
|
+
[my_fixture_read("hpux_1111_ifconfig_lan1"),
|
280
|
+
my_fixture_read("hpux_1111_ifconfig_lan0"),
|
281
|
+
my_fixture_read("hpux_1111_ifconfig_lo0")],
|
282
|
+
my_fixture_read("hpux_1111_netstat_in"),
|
283
|
+
my_fixture_read("hpux_1111_lanscan")]
|
284
|
+
|
285
|
+
examples << ["HP-UX 11.31",
|
286
|
+
["lan1", "lan0", "lo0" ],
|
287
|
+
["1500", "1500", "4136" ],
|
288
|
+
["10.1.54.36", "192.168.30.152", "127.0.0.1"],
|
289
|
+
["255.255.255.0", "255.255.255.0", "255.0.0.0"],
|
290
|
+
["00:17:FD:2D:2A:57", "00:12:31:7D:62:09", nil ],
|
291
|
+
[my_fixture_read("hpux_1131_ifconfig_lan1"),
|
292
|
+
my_fixture_read("hpux_1131_ifconfig_lan0"),
|
293
|
+
my_fixture_read("hpux_1131_ifconfig_lo0")],
|
294
|
+
my_fixture_read("hpux_1131_netstat_in"),
|
295
|
+
my_fixture_read("hpux_1131_lanscan")]
|
296
|
+
|
297
|
+
examples << ["HP-UX 11.31 with an asterisk after a NIC that has an address",
|
298
|
+
["lan1", "lan0", "lo0" ],
|
299
|
+
["1500", "1500", "4136" ],
|
300
|
+
["10.10.0.5", "192.168.3.9", "127.0.0.1"],
|
301
|
+
["255.255.255.0", "255.255.255.0", "255.0.0.0"],
|
302
|
+
["00:10:79:7B:BE:46", "00:30:5D:06:26:B2", nil ],
|
303
|
+
[my_fixture_read("hpux_1131_asterisk_ifconfig_lan1"),
|
304
|
+
my_fixture_read("hpux_1131_asterisk_ifconfig_lan0"),
|
305
|
+
my_fixture_read("hpux_1131_asterisk_ifconfig_lo0")],
|
306
|
+
my_fixture_read("hpux_1131_asterisk_netstat_in"),
|
307
|
+
my_fixture_read("hpux_1131_asterisk_lanscan")]
|
308
|
+
|
309
|
+
examples << ["HP-UX 11.31 with NIC bonding and one virtual NIC",
|
310
|
+
["lan4:1", "lan1", "lo0", "lan4" ],
|
311
|
+
["1500", "1500", "4136", "1500" ],
|
312
|
+
["192.168.1.197", "192.168.30.32", "127.0.0.1", "192.168.32.75" ],
|
313
|
+
["255.255.255.0", "255.255.255.0", "255.0.0.0", "255.255.255.0" ],
|
314
|
+
[nil, "00:12:81:9E:48:DE", nil, "00:12:81:9E:4A:7E"],
|
315
|
+
[my_fixture_read("hpux_1131_nic_bonding_ifconfig_lan4_1"),
|
316
|
+
my_fixture_read("hpux_1131_nic_bonding_ifconfig_lan1"),
|
317
|
+
my_fixture_read("hpux_1131_nic_bonding_ifconfig_lo0"),
|
318
|
+
my_fixture_read("hpux_1131_nic_bonding_ifconfig_lan4")],
|
319
|
+
my_fixture_read("hpux_1131_nic_bonding_netstat_in"),
|
320
|
+
my_fixture_read("hpux_1131_nic_bonding_lanscan")]
|
321
|
+
examples
|
322
|
+
end
|
323
|
+
|
324
|
+
hpux_examples.each do |example|
|
325
|
+
description, array_of_expected_ifs, array_of_expected_mtus,
|
326
|
+
array_of_expected_ips, array_of_expected_netmasks,
|
327
|
+
array_of_expected_macs, array_of_ifconfig_fixtures,
|
328
|
+
netstat_in_fixture, lanscan_fixture = example
|
329
|
+
|
330
|
+
it "should return a list three interfaces on #{description}" do
|
331
|
+
Facter.stubs(:value).with(:kernel).returns("HP-UX")
|
332
|
+
Facter::Util::IP.stubs(:hpux_netstat_in).returns(netstat_in_fixture)
|
333
|
+
Facter::Util::IP.get_interfaces().should == array_of_expected_ifs
|
334
|
+
end
|
335
|
+
|
336
|
+
array_of_expected_ifs.each_with_index do |nic, i|
|
337
|
+
ifconfig_fixture = array_of_ifconfig_fixtures[i]
|
338
|
+
expected_mtu = array_of_expected_mtus[i]
|
339
|
+
expected_ip = array_of_expected_ips[i]
|
340
|
+
expected_netmask = array_of_expected_netmasks[i]
|
341
|
+
expected_mac = array_of_expected_macs[i]
|
342
|
+
|
343
|
+
# (#17808) These tests fail because MTU facts haven't been implemented for HP-UX.
|
344
|
+
#it "should return MTU #{expected_mtu} on #{nic} for #{description} example" do
|
345
|
+
# Facter.stubs(:value).with(:kernel).returns("HP-UX")
|
346
|
+
# Facter::Util::IP.stubs(:hpux_netstat_in).returns(netstat_in_fixture)
|
347
|
+
# Facter::Util::IP.stubs(:hpux_lanscan).returns(lanscan_fixture)
|
348
|
+
# Facter::Util::IP.stubs(:hpux_ifconfig_interface).with(nic).returns(ifconfig_fixture)
|
349
|
+
# Facter::Util::IP.get_interface_value(nic, "mtu").should == expected_mtu
|
350
|
+
#end
|
351
|
+
|
352
|
+
it "should return IP #{expected_ip} on #{nic} for #{description} example" do
|
353
|
+
Facter.stubs(:value).with(:kernel).returns("HP-UX")
|
354
|
+
Facter::Util::IP.stubs(:hpux_lanscan).returns(lanscan_fixture)
|
355
|
+
Facter::Util::IP.stubs(:hpux_ifconfig_interface).with(nic).returns(ifconfig_fixture)
|
356
|
+
Facter::Util::IP.get_interface_value(nic, "ipaddress").should == expected_ip
|
357
|
+
end
|
358
|
+
|
359
|
+
it "should return netmask #{expected_netmask} on #{nic} for #{description} example" do
|
360
|
+
Facter.stubs(:value).with(:kernel).returns("HP-UX")
|
361
|
+
Facter::Util::IP.stubs(:hpux_lanscan).returns(lanscan_fixture)
|
362
|
+
Facter::Util::IP.stubs(:hpux_ifconfig_interface).with(nic).returns(ifconfig_fixture)
|
363
|
+
Facter::Util::IP.get_interface_value(nic, "netmask").should == expected_netmask
|
364
|
+
end
|
365
|
+
|
366
|
+
it "should return MAC address #{expected_mac} on #{nic} for #{description} example" do
|
367
|
+
Facter.stubs(:value).with(:kernel).returns("HP-UX")
|
368
|
+
Facter::Util::IP.stubs(:hpux_lanscan).returns(lanscan_fixture)
|
369
|
+
Facter::Util::IP.stubs(:hpux_ifconfig_interface).with(nic).returns(ifconfig_fixture)
|
370
|
+
Facter::Util::IP.get_interface_value(nic, "macaddress").should == expected_mac
|
371
|
+
end
|
372
|
+
end
|
373
|
+
end
|
374
|
+
|
375
|
+
describe "on Windows" do
|
376
|
+
require 'facter/util/ip/windows'
|
377
|
+
|
378
|
+
before :each do
|
379
|
+
Facter.stubs(:value).with(:kernel).returns("windows")
|
380
|
+
end
|
381
|
+
|
382
|
+
it "should return ipaddress information" do
|
383
|
+
Facter::Util::IP::Windows.expects(:value_for_interface_and_label).with("Local Area Connection", "ipaddress").returns('172.16.138.216')
|
384
|
+
|
385
|
+
Facter::Util::IP.get_interface_value("Local Area Connection", "ipaddress").should == "172.16.138.216"
|
386
|
+
end
|
387
|
+
|
388
|
+
it "should return network information" do
|
389
|
+
Facter::Util::IP::Windows.expects(:value_for_interface_and_label).with("Local Area Connection", "ipaddress").returns('172.16.138.216')
|
390
|
+
Facter::Util::IP::Windows.expects(:value_for_interface_and_label).with("Local Area Connection", "netmask").returns('255.255.255.0')
|
391
|
+
|
392
|
+
Facter::Util::IP.get_network_value("Local Area Connection").should == "172.16.138.0"
|
393
|
+
end
|
394
|
+
|
395
|
+
it "should return ipaddress6 information" do
|
396
|
+
Facter::Util::IP::Windows.expects(:value_for_interface_and_label).with("Local Area Connection", "ipaddress6").returns("2001:0:4137:9e76:2087:77a:53ef:7527")
|
397
|
+
|
398
|
+
Facter::Util::IP.get_interface_value("Local Area Connection", "ipaddress6").should == "2001:0:4137:9e76:2087:77a:53ef:7527"
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
describe "exec_ifconfig" do
|
403
|
+
it "uses get_ifconfig" do
|
404
|
+
Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig").once
|
405
|
+
|
406
|
+
Facter::Util::IP.exec_ifconfig
|
407
|
+
end
|
408
|
+
it "support additional arguments" do
|
409
|
+
Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
|
410
|
+
|
411
|
+
Facter::Core::Execution.stubs(:exec).with("/sbin/ifconfig -a")
|
412
|
+
|
413
|
+
Facter::Util::IP.exec_ifconfig(["-a"])
|
414
|
+
end
|
415
|
+
it "joins multiple arguments correctly" do
|
416
|
+
Facter::Util::IP.stubs(:get_ifconfig).returns("/sbin/ifconfig")
|
417
|
+
|
418
|
+
Facter::Core::Execution.stubs(:exec).with("/sbin/ifconfig -a -e -i -j")
|
419
|
+
|
420
|
+
Facter::Util::IP.exec_ifconfig(["-a","-e","-i","-j"])
|
421
|
+
end
|
422
|
+
end
|
423
|
+
describe "get_ifconfig" do
|
424
|
+
it "assigns /sbin/ifconfig if it is executable" do
|
425
|
+
File.stubs(:executable?).returns(false)
|
426
|
+
File.stubs(:executable?).with("/sbin/ifconfig").returns(true)
|
427
|
+
Facter::Util::IP.get_ifconfig.should eq("/sbin/ifconfig")
|
428
|
+
end
|
429
|
+
it "assigns /usr/sbin/ifconfig if it is executable" do
|
430
|
+
File.stubs(:executable?).returns(false)
|
431
|
+
File.stubs(:executable?).with("/usr/sbin/ifconfig").returns(true)
|
432
|
+
Facter::Util::IP.get_ifconfig.should eq("/usr/sbin/ifconfig")
|
433
|
+
end
|
434
|
+
it "assigns /bin/ifconfig if it is executable" do
|
435
|
+
File.stubs(:executable?).returns(false)
|
436
|
+
File.stubs(:executable?).with("/bin/ifconfig").returns(true)
|
437
|
+
Facter::Util::IP.get_ifconfig.should eq("/bin/ifconfig")
|
438
|
+
end
|
439
|
+
end
|
440
|
+
|
441
|
+
context "with bonded ethernet interfaces on Linux" do
|
442
|
+
before :each do
|
443
|
+
Facter.fact(:kernel).stubs(:value).returns("Linux")
|
444
|
+
end
|
445
|
+
|
446
|
+
describe "Facter::Util::Ip.get_interface_value" do
|
447
|
+
before :each do
|
448
|
+
Facter::Util::IP.stubs(:read_proc_net_bonding).
|
449
|
+
with("/proc/net/bonding/bond0").
|
450
|
+
returns(my_fixture_read("linux_2_6_35_proc_net_bonding_bond0"))
|
451
|
+
|
452
|
+
Facter::Util::IP.stubs(:get_bonding_master).returns("bond0")
|
453
|
+
end
|
454
|
+
|
455
|
+
it 'provides the real device macaddress for eth0' do
|
456
|
+
Facter::Util::IP.get_interface_value("eth0", "macaddress").should == "00:11:22:33:44:55"
|
457
|
+
end
|
458
|
+
it 'provides the real device macaddress for eth1' do
|
459
|
+
Facter::Util::IP.get_interface_value("eth1", "macaddress").should == "00:11:22:33:44:56"
|
460
|
+
end
|
461
|
+
end
|
462
|
+
end
|
463
|
+
end
|