facter 2.0.1.rc1-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of facter might be problematic. Click here for more details.
- 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 +758 -0
@@ -0,0 +1,92 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/processor'
|
5
|
+
require 'facter_spec/cpuinfo'
|
6
|
+
|
7
|
+
describe Facter::Util::Processor do
|
8
|
+
describe "on linux" do
|
9
|
+
include FacterSpec::Cpuinfo
|
10
|
+
|
11
|
+
before :each do
|
12
|
+
Facter.fact(:kernel).stubs(:value).returns("Linux")
|
13
|
+
File.stubs(:exists?).with("/proc/cpuinfo").returns(true)
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "with architecture amd64" do
|
17
|
+
before :each do
|
18
|
+
Facter.fact(:architecture).stubs(:value).returns("amd64")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should get the processor description from the amd64solo fixture" do
|
22
|
+
File.stubs(:readlines).with("/proc/cpuinfo").returns(cpuinfo_fixture_readlines("amd64solo"))
|
23
|
+
Facter::Util::Processor.enum_cpuinfo[0].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should get the processor descriptions from the amd64dual fixture" do
|
27
|
+
File.stubs(:readlines).with("/proc/cpuinfo").returns(cpuinfo_fixture_readlines("amd64dual"))
|
28
|
+
|
29
|
+
Facter::Util::Processor.enum_cpuinfo[0].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
|
30
|
+
Facter::Util::Processor.enum_cpuinfo[1].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should get the processor descriptions from the amd64tri fixture" do
|
34
|
+
File.stubs(:readlines).with("/proc/cpuinfo").returns(cpuinfo_fixture_readlines("amd64tri"))
|
35
|
+
|
36
|
+
Facter::Util::Processor.enum_cpuinfo[0].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
|
37
|
+
Facter::Util::Processor.enum_cpuinfo[1].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
|
38
|
+
Facter::Util::Processor.enum_cpuinfo[2].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should get the processor descriptions from the amd64quad fixture" do
|
42
|
+
File.stubs(:readlines).with("/proc/cpuinfo").returns(cpuinfo_fixture_readlines("amd64quad"))
|
43
|
+
|
44
|
+
Facter::Util::Processor.enum_cpuinfo[0].should == "Quad-Core AMD Opteron(tm) Processor 2374 HE"
|
45
|
+
Facter::Util::Processor.enum_cpuinfo[1].should == "Quad-Core AMD Opteron(tm) Processor 2374 HE"
|
46
|
+
Facter::Util::Processor.enum_cpuinfo[2].should == "Quad-Core AMD Opteron(tm) Processor 2374 HE"
|
47
|
+
Facter::Util::Processor.enum_cpuinfo[3].should == "Quad-Core AMD Opteron(tm) Processor 2374 HE"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "with architecture x86" do
|
52
|
+
before :each do
|
53
|
+
Facter.fact(:architecture).stubs(:value).returns("x86")
|
54
|
+
File.stubs(:readlines).with("/proc/cpuinfo").returns(my_fixture_read("x86-pentium2").lines)
|
55
|
+
end
|
56
|
+
|
57
|
+
subject { Facter::Util::Processor.enum_cpuinfo }
|
58
|
+
|
59
|
+
it "should have the correct processor titles" do
|
60
|
+
subject[0].should == "Pentium II (Deschutes)"
|
61
|
+
subject[1].should == "Pentium II (Deschutes)"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "on Solaris" do
|
67
|
+
before :each do
|
68
|
+
Facter.fact(:kernel).stubs(:value).returns("SunOS")
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should get the processor description on Solaris (x86)" do
|
72
|
+
Facter.fact(:architecture).stubs(:value).returns("i86pc")
|
73
|
+
Facter::Core::Execution.stubs(:exec).with("/usr/bin/kstat cpu_info").returns(my_fixture_read("solaris-i86pc"))
|
74
|
+
|
75
|
+
Facter::Util::Processor.enum_kstat[0].should == "Intel(r) Core(tm) i5 CPU M 450 @ 2.40GHz"
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should get the processor description on Solaris (SPARC64)" do
|
79
|
+
Facter.fact(:architecture).stubs(:value).returns("sun4u")
|
80
|
+
Facter::Core::Execution.stubs(:exec).with("/usr/bin/kstat cpu_info").returns(my_fixture_read("solaris-sun4u"))
|
81
|
+
|
82
|
+
Facter::Util::Processor.enum_kstat[0].should == "SPARC64-VII"
|
83
|
+
Facter::Util::Processor.enum_kstat[1].should == "SPARC64-VII"
|
84
|
+
Facter::Util::Processor.enum_kstat[2].should == "SPARC64-VII"
|
85
|
+
Facter::Util::Processor.enum_kstat[3].should == "SPARC64-VII"
|
86
|
+
Facter::Util::Processor.enum_kstat[4].should == "SPARC64-VII"
|
87
|
+
Facter::Util::Processor.enum_kstat[5].should == "SPARC64-VII"
|
88
|
+
Facter::Util::Processor.enum_kstat[6].should == "SPARC64-VII"
|
89
|
+
Facter::Util::Processor.enum_kstat[7].should == "SPARC64-VII"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'facter/operatingsystem'
|
4
|
+
require 'facter/util/registry'
|
5
|
+
|
6
|
+
describe Facter::Util::Registry do
|
7
|
+
describe "hklm_read", :if => Facter::Util::Config.is_windows? do
|
8
|
+
before(:all) do
|
9
|
+
require 'win32/registry'
|
10
|
+
end
|
11
|
+
describe "valid params" do
|
12
|
+
[ {:key => "valid_key", :value => "valid_value", :expected => "valid"},
|
13
|
+
{:key => "valid_key", :value => "", :expected => "valid"},
|
14
|
+
{:key => "valid_key", :value => nil, :expected => "invalid"},
|
15
|
+
{:key => "", :value => "valid_value", :expected => "valid"},
|
16
|
+
{:key => "", :value => "", :expected => "valid"},
|
17
|
+
{:key => "", :value => nil, :expected => "invalid"},
|
18
|
+
{:key => nil, :value => "valid_value", :expected => "invalid"},
|
19
|
+
{:key => nil, :value => "", :expected => "invalid"},
|
20
|
+
{:key => nil, :value => nil, :expected => "invalid"}
|
21
|
+
].each do |scenario|
|
22
|
+
describe "with key #{scenario[:key] || "nil"} and value #{scenario[:value] || "nil"}" do
|
23
|
+
let :fake_registry_key do
|
24
|
+
fake = {}
|
25
|
+
fake[scenario[:value]] = scenario[:expected]
|
26
|
+
fake
|
27
|
+
end
|
28
|
+
it "should return #{scenario[:expected]} value" do
|
29
|
+
Win32::Registry::HKEY_LOCAL_MACHINE.stubs(:open).with(scenario[:key]).returns(fake_registry_key)
|
30
|
+
fake_registry_key.stubs(:close)
|
31
|
+
|
32
|
+
Facter::Util::Registry.hklm_read(scenario[:key], scenario[:value]).should == scenario[:expected]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "invalid params" do
|
39
|
+
[ {:key => "valid_key", :value => "invalid_value"},
|
40
|
+
{:key => "valid_key", :value => ""},
|
41
|
+
{:key => "valid_key", :value => nil},
|
42
|
+
].each do |scenario|
|
43
|
+
describe "with valid key and value #{scenario[:value] || "nil"}" do
|
44
|
+
let :fake_registry_key do
|
45
|
+
{}
|
46
|
+
end
|
47
|
+
it "should raise an error" do
|
48
|
+
Win32::Registry::HKEY_LOCAL_MACHINE.stubs(:open).with(scenario[:key]).returns(fake_registry_key)
|
49
|
+
fake_registry_key.stubs(:close)
|
50
|
+
|
51
|
+
Facter::Util::Registry.hklm_read(scenario[:key], scenario[:value]).should raise_error
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
[ {:key => "invalid_key", :value => "valid_value"},
|
56
|
+
{:key => "invalid_key", :value => ""},
|
57
|
+
{:key => "invalid_key", :value => nil},
|
58
|
+
{:key => "", :value => "valid_value"},
|
59
|
+
{:key => "", :value => ""},
|
60
|
+
{:key => "", :value => nil},
|
61
|
+
{:key => nil, :value => "valid_value"},
|
62
|
+
{:key => nil, :value => ""},
|
63
|
+
{:key => nil, :value => nil}
|
64
|
+
].each do |scenario|
|
65
|
+
describe "with invalid key #{scenario[:key] || "nil"} and value #{scenario[:value] || "nil"}" do
|
66
|
+
it "should raise an error" do
|
67
|
+
Win32::Registry::HKEY_LOCAL_MACHINE.stubs(:open).with(scenario[:key]).raises(Win32::Registry::Error, 2)
|
68
|
+
expect do
|
69
|
+
Facter::Util::Registry.hklm_read(scenario[:key], scenario[:value])
|
70
|
+
end.to raise_error Win32::Registry::Error
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/resolution'
|
5
|
+
|
6
|
+
describe Facter::Util::Resolution do
|
7
|
+
include FacterSpec::ConfigHelper
|
8
|
+
|
9
|
+
subject(:resolution) { described_class.new(:foo, stub_fact) }
|
10
|
+
|
11
|
+
let(:stub_fact) { stub('fact', :name => :stubfact) }
|
12
|
+
|
13
|
+
it "requires a name" do
|
14
|
+
expect { Facter::Util::Resolution.new }.to raise_error(ArgumentError)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "requires a fact" do
|
18
|
+
expect { Facter::Util::Resolution.new('yay') }.to raise_error(ArgumentError)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "can return its name" do
|
22
|
+
expect(resolution.name).to eq :foo
|
23
|
+
end
|
24
|
+
|
25
|
+
it "can explicitly set a value" do
|
26
|
+
resolution.value = "foo"
|
27
|
+
expect(resolution.value).to eq "foo"
|
28
|
+
end
|
29
|
+
|
30
|
+
it "defaults to nil for code" do
|
31
|
+
expect(resolution.code).to be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "when setting the code" do
|
35
|
+
before do
|
36
|
+
Facter.stubs(:warnonce)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "creates a block when given a command" do
|
40
|
+
resolution.setcode "foo"
|
41
|
+
expect(resolution.code).to be_a_kind_of Proc
|
42
|
+
end
|
43
|
+
|
44
|
+
it "stores the provided block when given a block" do
|
45
|
+
block = lambda { }
|
46
|
+
resolution.setcode(&block)
|
47
|
+
resolution.code.should equal(block)
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
it "prefers a command over a block" do
|
52
|
+
block = lambda { }
|
53
|
+
resolution.setcode("foo", &block)
|
54
|
+
expect(resolution.code).to_not eq block
|
55
|
+
end
|
56
|
+
|
57
|
+
it "fails if neither a string nor block has been provided" do
|
58
|
+
expect { resolution.setcode }.to raise_error(ArgumentError)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "when returning the value" do
|
63
|
+
it "returns any value that has been provided" do
|
64
|
+
resolution.value = "foo"
|
65
|
+
expect(resolution.value).to eq "foo"
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "and setcode has not been called" do
|
69
|
+
it "returns nil" do
|
70
|
+
expect(resolution.value).to be_nil
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "and the code is a string" do
|
75
|
+
it "returns the result of executing the code" do
|
76
|
+
resolution.setcode "/bin/foo"
|
77
|
+
Facter::Core::Execution.expects(:exec).once.with("/bin/foo").returns "yup"
|
78
|
+
|
79
|
+
expect(resolution.value).to eq "yup"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "and the code is a block" do
|
84
|
+
it "returns the value returned by the block" do
|
85
|
+
resolution.setcode { "yayness" }
|
86
|
+
expect(resolution.value).to eq "yayness"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe "setting options" do
|
92
|
+
it "can set the value" do
|
93
|
+
resolution.set_options(:value => 'something')
|
94
|
+
expect(resolution.value).to eq 'something'
|
95
|
+
end
|
96
|
+
|
97
|
+
it "can set the timeout" do
|
98
|
+
resolution.set_options(:timeout => 314)
|
99
|
+
expect(resolution.limit).to eq 314
|
100
|
+
end
|
101
|
+
|
102
|
+
it "can set the weight" do
|
103
|
+
resolution.set_options(:weight => 27)
|
104
|
+
expect(resolution.weight).to eq 27
|
105
|
+
end
|
106
|
+
|
107
|
+
it "fails on unhandled options" do
|
108
|
+
expect do
|
109
|
+
resolution.set_options(:foo => 'bar')
|
110
|
+
end.to raise_error(ArgumentError, /Invalid resolution options.*foo/)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "evaluating" do
|
115
|
+
it "evaluates the block in the context of the given resolution" do
|
116
|
+
subject.expects(:has_weight).with(5)
|
117
|
+
subject.evaluate { has_weight(5) }
|
118
|
+
end
|
119
|
+
|
120
|
+
it "raises a warning if the resolution is evaluated twice" do
|
121
|
+
Facter.expects(:warn).with do |msg|
|
122
|
+
expect(msg).to match /Already evaluated foo at.*reevaluating anyways/
|
123
|
+
end
|
124
|
+
|
125
|
+
subject.evaluate { }
|
126
|
+
subject.evaluate { }
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'facter/util/solaris_zones'
|
3
|
+
|
4
|
+
describe Facter::Util::SolarisZones do
|
5
|
+
let :zone_list do
|
6
|
+
zone_list = <<-EOF
|
7
|
+
0:global:running:/::native:shared
|
8
|
+
-:local:configured:/::native:shared
|
9
|
+
-:zoneA:stopped:/::native:shared
|
10
|
+
EOF
|
11
|
+
end
|
12
|
+
|
13
|
+
let :zone_list2 do
|
14
|
+
zone_list = <<-EOF
|
15
|
+
0:global:running:/::native:shared
|
16
|
+
-:local:configured:/::native:shared
|
17
|
+
-:zoneB:stopped:/::native:shared
|
18
|
+
-:zoneC:stopped:/::native:shared
|
19
|
+
EOF
|
20
|
+
end
|
21
|
+
|
22
|
+
subject do
|
23
|
+
described_class.new(:zoneadm_output => zone_list)
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '.add_facts' do
|
27
|
+
before :each do
|
28
|
+
zones = described_class.new(:zoneadm_output => zone_list)
|
29
|
+
zones.send(:parse!)
|
30
|
+
zones.stubs(:refresh)
|
31
|
+
described_class.stubs(:new).returns(zones)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'defines the zones fact' do
|
35
|
+
described_class.add_facts
|
36
|
+
Facter.fact(:zones).value.should == 3
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'defines a fact for each attribute of a zone' do
|
40
|
+
described_class.add_facts
|
41
|
+
[:id, :name, :status, :path, :uuid, :brand, :iptype].each do |attr|
|
42
|
+
Facter.fact("zone_local_#{attr}".intern).
|
43
|
+
should be_a_kind_of Facter::Util::Fact
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#refresh' do
|
49
|
+
it 'executes the zoneadm_cmd' do
|
50
|
+
Facter::Core::Execution.expects(:exec).with(subject.zoneadm_cmd).returns(zone_list)
|
51
|
+
subject.refresh
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe 'multiple facts sharing a single model' do
|
56
|
+
context 'when zones is resolved for the first time' do
|
57
|
+
it 'counts the number of zones' do
|
58
|
+
given_initial_zone_facts
|
59
|
+
Facter.fact(:zones).value.should == 3
|
60
|
+
end
|
61
|
+
it 'defines facts for zoneA' do
|
62
|
+
given_initial_zone_facts
|
63
|
+
Facter.fact(:zone_zoneA_id).value.should == '-'
|
64
|
+
end
|
65
|
+
it 'does not define facts for zoneB' do
|
66
|
+
given_initial_zone_facts
|
67
|
+
Facter.fact(:zone_zoneB_id).should be_nil
|
68
|
+
end
|
69
|
+
it 'uses a single read of the system information for all of the dynamically generated zone facts' do
|
70
|
+
given_initial_zone_facts # <= single read happens here
|
71
|
+
|
72
|
+
Facter::Core::Execution.expects(:exec).never
|
73
|
+
Facter.fact(:zone_zoneA_id).value
|
74
|
+
Facter.fact(:zone_local_id).value
|
75
|
+
end
|
76
|
+
end
|
77
|
+
context 'when all facts have been flushed after zones was resolved once' do
|
78
|
+
it 'updates the number of zones' do
|
79
|
+
given_initial_zone_facts
|
80
|
+
when_facts_have_been_resolved_then_flushed
|
81
|
+
|
82
|
+
Facter.fact(:zones).value.should == 4
|
83
|
+
end
|
84
|
+
it 'stops resolving a value for a zone that no longer exists' do
|
85
|
+
given_initial_zone_facts
|
86
|
+
when_facts_have_been_resolved_then_flushed
|
87
|
+
|
88
|
+
Facter.fact(:zone_zoneA_id).value.should be_nil
|
89
|
+
Facter.fact(:zone_zoneA_status).value.should be_nil
|
90
|
+
Facter.fact(:zone_zoneA_path).value.should be_nil
|
91
|
+
end
|
92
|
+
it 'defines facts for new zones' do
|
93
|
+
given_initial_zone_facts
|
94
|
+
when_facts_have_been_resolved_then_flushed
|
95
|
+
|
96
|
+
Facter.fact(:zone_zoneB_id).should be_nil
|
97
|
+
Facter.fact(:zones).value
|
98
|
+
Facter.fact(:zone_zoneB_id).value.should be_a_kind_of String
|
99
|
+
end
|
100
|
+
it 'uses a single read of the system information for all of the dynamically generated zone facts' do
|
101
|
+
given_initial_zone_facts
|
102
|
+
when_facts_have_been_resolved_then_flushed
|
103
|
+
|
104
|
+
Facter::Core::Execution.expects(:exec).once.returns(zone_list2)
|
105
|
+
Facter.fact(:zones).value
|
106
|
+
Facter.fact(:zone_zoneA_id).value
|
107
|
+
Facter.fact(:zone_local_id).value
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def given_initial_zone_facts
|
114
|
+
Facter::Core::Execution.stubs(:exec).
|
115
|
+
with(subject.zoneadm_cmd).
|
116
|
+
returns(zone_list)
|
117
|
+
described_class.add_facts
|
118
|
+
end
|
119
|
+
|
120
|
+
def when_facts_have_been_resolved_then_flushed
|
121
|
+
Facter.fact(:zones).value
|
122
|
+
Facter.fact(:zone_zoneA_id).value
|
123
|
+
Facter.fact(:zone_local_id).value
|
124
|
+
Facter::Core::Execution.stubs(:exec).returns(zone_list2)
|
125
|
+
Facter.flush
|
126
|
+
end
|
127
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/uptime'
|
5
|
+
|
6
|
+
describe Facter::Util::Uptime do
|
7
|
+
|
8
|
+
describe ".get_uptime_seconds_unix", :unless => Facter::Util::Config.is_windows? do
|
9
|
+
describe "when /proc/uptime is available" do
|
10
|
+
before do
|
11
|
+
uptime_file = my_fixture("ubuntu_proc_uptime")
|
12
|
+
Facter::Util::Uptime.stubs(:uptime_file).returns("\"#{uptime_file}\"")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return the uptime in seconds as an integer" do
|
16
|
+
Facter::Util::Uptime.get_uptime_seconds_unix.should == 5097686
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "when /proc/uptime is not available" do
|
22
|
+
before :each do
|
23
|
+
@nonexistent_file = '/non/existent/file'
|
24
|
+
File.exists?(@nonexistent_file).should == false
|
25
|
+
Facter::Util::Uptime.stubs(:uptime_file).returns(@nonexistent_file)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should use 'sysctl -n kern.boottime' on OpenBSD" do
|
29
|
+
sysctl_output_file = my_fixture('sysctl_kern_boottime_openbsd') # Dec 09 21:11:46 +0000 2011
|
30
|
+
Facter::Util::Uptime.stubs(:uptime_sysctl_cmd).returns("cat \"#{sysctl_output_file}\"")
|
31
|
+
Time.stubs(:now).returns Time.parse("Dec 09 22:11:46 +0000 2011") # one hour later
|
32
|
+
Facter::Util::Uptime.get_uptime_seconds_unix.should == 60 * 60
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should use 'sysctl -n kern.boottime' on Darwin, etc." do
|
36
|
+
sysctl_output_file = my_fixture('sysctl_kern_boottime_darwin') # Oct 30 21:52:27 +0000 2011
|
37
|
+
Facter::Util::Uptime.stubs(:uptime_sysctl_cmd).returns("cat \"#{sysctl_output_file}\"")
|
38
|
+
Time.stubs(:now).returns Time.parse("Oct 30 22:52:27 +0000 2011") # one hour later
|
39
|
+
Facter::Util::Uptime.get_uptime_seconds_unix.should == 60 * 60
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "nor is 'sysctl kern.boottime'" do
|
43
|
+
before :each do
|
44
|
+
Facter::Util::Uptime.stubs(:uptime_proc_uptime).returns(false)
|
45
|
+
Facter::Util::Uptime.stubs(:uptime_sysctl).returns(false)
|
46
|
+
Facter.fact(:kernel).stubs(:value).returns('SunOS')
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "should use 'uptime' command" do
|
50
|
+
# Note about uptime variations.
|
51
|
+
# Solaris (I have examined 5.6, 5.7, 5.8, 5.9, 5.10 & 5.11) and HP-UX (11.00, 11.11, 11.23, 11.31) have time
|
52
|
+
# right justified at at 8 characters, and two spaces before 'up'.
|
53
|
+
# Solaris differs from all other Unices (and Linux) in that the plural/singular case of minutes/hours/days are
|
54
|
+
# written min(s)/hr(s)/day(s) instead of min/mins/hr/hrs etc., e.g. 1 min(s), 2 min(s) as opposed to
|
55
|
+
# 1 min, 2 mins, etc.
|
56
|
+
# AIX (4.3.3, 5.2, 5.3, 6.1) differs from other SysV Unices in that times are padded with a leading 0 in the
|
57
|
+
# hour column where necessary, and have AM/PM in uppercase, and there are three spaces before 'up'.
|
58
|
+
# Tru64 (4.0, 5.1) differs from other SysV Unices in that times are in 24 hour format, and there are no
|
59
|
+
# leading spaces.
|
60
|
+
# Linux (RHEL, uptime version 2.0.7) differs from the SysV Unices in that only minutes before the first hour
|
61
|
+
# are written as 1 min, 2 min, 3 min etc. and after that full hours are rendered 1:00 or 21:00. Time of
|
62
|
+
# day was written 5:37pm and right-justified at 8 characters, with 2 spaces before 'up'. A figure in
|
63
|
+
# whole days was written as 3 days, 0 min.
|
64
|
+
# By version 2.0.17 the time of day was rewritten in 24hr time with seconds, right-justified at 9 characters.
|
65
|
+
# By version 3.2.7 one of the spaces before 'up' had been removed.
|
66
|
+
test_cases = [
|
67
|
+
[' 4:42pm up 1 min(s), 0 users, load average: 0.95, 0.25, 0.09', 1*60],
|
68
|
+
['13:16 up 58 mins, 2 users, load average: 0.00, 0.02, 0.05', 58*60],
|
69
|
+
['13:18 up 1 hr, 1 user, load average: 0.58, 0.23, 0.14', 1*60*60 ],
|
70
|
+
[' 10:14pm up 3 hr(s), 0 users, load average: 0.00, 0.00, 0.00', 3*60*60 ],
|
71
|
+
['14:18 up 2 hrs, 0 users, load average: 0.33, 0.27, 0.29', 2*60*60 ],
|
72
|
+
[' 9:01pm up 1:47, 0 users, load average: 0.00, 0.00, 0.00', 1*60*60 + 47*60],
|
73
|
+
['13:19 up 1:01, 1 user, load average: 0.10, 0.26, 0.21', 1*60*60 + 1*60],
|
74
|
+
['10:49 up 22:31, 0 users, load average: 0.26, 0.34, 0.27', 22*60*60 + 31*60],
|
75
|
+
['12:18 up 1 day, 0 users, load average: 0.74, 0.20, 0.10', 1*24*60*60 ],
|
76
|
+
[' 2:48pm up 1 day(s), 0 users, load average: 0.21, 0.20, 0.17', 1*24*60*60 ],
|
77
|
+
['12:18 up 2 days, 0 users, load average: 0.50, 0.27, 0.16', 2*24*60*60 ],
|
78
|
+
[' 1:56pm up 25 day(s), 2 users, load average: 0.59, 0.56, 0.50', 25*24*60*60 ],
|
79
|
+
[' 1:29pm up 485 days, 0 users, load average: 0.00, 0.01, 0.01', 485*24*60*60 ],
|
80
|
+
[' 18:11:24 up 69 days, 0 min, 0 users, load average: 0.00, 0.00, 0.00', 69*24*60*60 ],
|
81
|
+
['12:19 up 1 day, 1 min, 0 users, load average: 0.07, 0.16, 0.13', 1*24*60*60 + 1*60],
|
82
|
+
[' 3:23pm up 25 day(s), 27 min(s), 2 users, load average: 0.49, 0.45, 0.46', 25*24*60*60 + 27*60],
|
83
|
+
[' 02:42PM up 1 day, 39 mins, 0 users, load average: 1.49, 1.74, 1.80', 1*24*60*60 + 39*60],
|
84
|
+
[' 18:13:13 up 245 days, 44 min, 1 user, load average: 0.00, 0.00, 0.00', 245*24*60*60 + 44*60],
|
85
|
+
[' 6:09pm up 350 days, 2 min, 1 user, load average: 0.02, 0.03, 0.00', 350*24*60*60 + 2*60],
|
86
|
+
[' 1:07pm up 174 day(s), 16 hr(s), 0 users, load average: 0.05, 0.04, 0.03', 174*24*60*60 + 16*60*60 ],
|
87
|
+
[' 02:34PM up 621 days, 18 hrs, 0 users, load average: 2.67, 2.52, 2.56', 621*24*60*60 + 18*60*60 ],
|
88
|
+
[' 3:30am up 108 days, 1 hr, 31 users, load average: 0.39, 0.40, 0.41', 108*24*60*60 + 1*60*60 ],
|
89
|
+
['13:18 up 1 day, 1 hr, 0 users, load average: 0.78, 0.33, 0.18', 1*24*60*60 + 1*60*60 ],
|
90
|
+
['14:18 up 1 day, 2 hrs, 0 users, load average: 1.17, 0.48, 0.41', 1*24*60*60 + 2*60*60 ],
|
91
|
+
['15:56 up 152 days, 17 hrs, 0 users, load average: 0.01, 0.06, 0.07', 152*24*60*60 + 17*60*60 ],
|
92
|
+
[' 5:37pm up 25 days, 21:00, 0 users, load average: 0.01, 0.02, 0.00', 25*24*60*60 + 21*60*60 ],
|
93
|
+
[' 8:59pm up 94 day(s), 3:17, 46 users, load average: 0.66, 0.67, 0.70', 94*24*60*60 + 3*60*60 + 17*60],
|
94
|
+
[' 3:01pm up 4496 day(s), 21:19, 32 users, load average: 0.61, 0.62, 0.62', 4496*24*60*60 + 21*60*60 + 19*60],
|
95
|
+
[' 02:42PM up 41 days, 2:38, 0 users, load average: 0.38, 0.70, 0.55', 41*24*60*60 + 2*60*60 + 38*60],
|
96
|
+
[' 18:13:29 up 25 days, 21:36, 0 users, load average: 0.00, 0.00, 0.00', 25*24*60*60 + 21*60*60 + 36*60],
|
97
|
+
[' 13:36:05 up 118 days, 1:15, 1 user, load average: 0.00, 0.00, 0.00', 118*24*60*60 + 1*60*60 + 15*60]
|
98
|
+
]
|
99
|
+
|
100
|
+
test_cases.each do |uptime, expected|
|
101
|
+
it "should return #{expected} for #{uptime}" do
|
102
|
+
Facter::Core::Execution.stubs(:exec).with('uptime 2>/dev/null').returns(uptime)
|
103
|
+
Facter.fact(:uptime_seconds).value.should == expected
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
describe "nor is 'uptime' command" do
|
108
|
+
before :each do
|
109
|
+
Facter::Util::Uptime.stubs(:uptime_executable_cmd).returns("cat \"#{@nonexistent_file}\"")
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should return nil" do
|
113
|
+
Facter::Util::Uptime.get_uptime_seconds_unix.should == nil
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
describe ".get_uptime_seconds_win", :if => Facter::Util::Config.is_windows? do
|
122
|
+
it "should return a postive value" do
|
123
|
+
Facter::Util::Uptime.get_uptime_seconds_win.should > 0
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|