diff options
author | Shahul Hameed <skhajamohid1@bloomberg.net> | 2015-08-13 19:00:29 +0000 |
---|---|---|
committer | Shahul Hameed <skhajamohid1@bloomberg.net> | 2015-08-13 19:00:29 +0000 |
commit | 3ca5eb158288a9d5163e09a312be323a58f7ba76 (patch) | |
tree | b8543a9faeb6a383ea18df03eea04b79f7478223 | |
parent | e5a0cc265049e120c75120c664ad43914ea3a9fa (diff) | |
download | ohai-3ca5eb158288a9d5163e09a312be323a58f7ba76.tar.gz |
Add support for sparc processors in solaris cpu plugin
-rw-r--r-- | lib/ohai/plugins/solaris2/cpu.rb | 39 | ||||
-rw-r--r-- | spec/unit/plugins/solaris2/cpu_spec.rb | 139 |
2 files changed, 136 insertions, 42 deletions
diff --git a/lib/ohai/plugins/solaris2/cpu.rb b/lib/ohai/plugins/solaris2/cpu.rb index 9900cd48..dbd3a26c 100644 --- a/lib/ohai/plugins/solaris2/cpu.rb +++ b/lib/ohai/plugins/solaris2/cpu.rb @@ -16,12 +16,8 @@ Ohai.plugin(:CPU) do provides "cpu" - - collect_data(:solaris2) do - cpu Mash.new - cpu[:total] = shell_out("psrinfo | wc -l").stdout.to_i - cpu[:real] = shell_out("psrinfo -p").stdout.to_i - + + def get_x86_processor_info processor_info = shell_out("psrinfo -v -p | grep Hz").stdout processors = processor_info.split(/^ [^\s]/) processors.each_with_index do |processor, i| @@ -38,4 +34,35 @@ Ohai.plugin(:CPU) do cpu[index]['mhz'] = cpu_info[10] end end + + def get_sparc_processor_info + i = 0 + cores = 0 + shell_out('psrinfo -v -p').stdout.lines.each do |line| + case line.strip + when /(\d+)\s+cores/ + cores += "#{$1}".to_i + when /^(\S+).*\b(\d+)\s+MHz\)$/ + index = i.to_s + cpu[index] = Mash.new + cpu[index]['model_name'] = "#{$1}" + cpu[index]['mhz'] = "#{$2}" + i += 1 + end + end + cpu[:cores] = cores + end + + collect_data(:solaris2) do + cpu Mash.new + cpu[:total] = shell_out("psrinfo | wc -l").stdout.to_i + cpu[:real] = shell_out("psrinfo -p").stdout.to_i + + processor_type = shell_out("uname -p").stdout.strip + if processor_type.eql?('sparc') + get_sparc_processor_info + else + get_x86_processor_info + end + end end diff --git a/spec/unit/plugins/solaris2/cpu_spec.rb b/spec/unit/plugins/solaris2/cpu_spec.rb index 7886215f..4e13980e 100644 --- a/spec/unit/plugins/solaris2/cpu_spec.rb +++ b/spec/unit/plugins/solaris2/cpu_spec.rb @@ -22,61 +22,128 @@ describe Ohai::System, "Solaris2.X cpu plugin" do allow(@plugin).to receive(:collect_os).and_return("solaris2") allow(@plugin).to receive(:shell_out).with("psrinfo | wc -l").and_return(mock_shell_out(0, "32\n", "")) allow(@plugin).to receive(:shell_out).with("psrinfo -p").and_return(mock_shell_out(0, "4\n", "")) - - psrinfo_output = <<-END.strip + end + + describe 'on x86 processors' do + before(:each) do + allow(@plugin).to receive(:shell_out).with("uname -p").and_return(mock_shell_out(0, "i386\n", "")) + psrinfo_output = <<-END.strip x86 (GenuineIntel 206D7 family 6 model 45 step 7 clock 2600 MHz) Intel(r) Xeon(r) CPU E5-2670 0 @ 2.60GHz x86 (CrazyTown 206D7 family 12 model 93 step 9 clock 2900 MHz) Intel(r) Xeon(r) CPU E5-2690 0 @ 2.90GHz END - allow(@plugin).to receive(:shell_out).with('psrinfo -v -p | grep Hz').and_return(mock_shell_out(0, psrinfo_output, "")) - end - - it "should get the total virtual processor count" do - @plugin.run - expect(@plugin['cpu']['total']).to eql(32) - end + allow(@plugin).to receive(:shell_out).with('psrinfo -v -p | grep Hz').and_return(mock_shell_out(0, psrinfo_output, "")) + end - it 'should get the total processor count' do - @plugin.run - expect(@plugin['cpu']['real']).to eql(4) - end - - describe 'per-cpu information' do - it "should include vendor_id for processors" do + it "should get the total virtual processor count" do @plugin.run - expect(@plugin['cpu']['0']['vendor_id']).to eql('GenuineIntel') - expect(@plugin['cpu']['1']['vendor_id']).to eql('CrazyTown') + expect(@plugin['cpu']['total']).to eql(32) end - it "should include family for processors" do + it 'should get the total processor count' do @plugin.run - expect(@plugin['cpu']["0"]["family"]).to eql("6") - expect(@plugin['cpu']["1"]["family"]).to eql("12") + expect(@plugin['cpu']['real']).to eql(4) end - it "should include model for processors" do - @plugin.run - expect(@plugin['cpu']["0"]["model"]).to eql("45") - expect(@plugin['cpu']["1"]["model"]).to eql("93") - end + describe 'per-cpu information' do + it "should include vendor_id for processors" do + @plugin.run + expect(@plugin['cpu']['0']['vendor_id']).to eql('GenuineIntel') + expect(@plugin['cpu']['1']['vendor_id']).to eql('CrazyTown') + end + + it "should include family for processors" do + @plugin.run + expect(@plugin['cpu']["0"]["family"]).to eql("6") + expect(@plugin['cpu']["1"]["family"]).to eql("12") + end - it "should include stepping for processors" do + it "should include model for processors" do + @plugin.run + expect(@plugin['cpu']["0"]["model"]).to eql("45") + expect(@plugin['cpu']["1"]["model"]).to eql("93") + end + + it "should include stepping for processors" do + @plugin.run + expect(@plugin['cpu']["0"]["stepping"]).to eql("7") + expect(@plugin['cpu']["1"]["stepping"]).to eql("9") + end + + it "should include model name for processors" do + @plugin.run + expect(@plugin['cpu']["0"]["model_name"]).to eql("Intel(r) Xeon(r) CPU E5-2670 0 @ 2.60GHz") + expect(@plugin['cpu']["1"]["model_name"]).to eql("Intel(r) Xeon(r) CPU E5-2690 0 @ 2.90GHz") + end + + it "should include mhz name for processors" do + @plugin.run + expect(@plugin['cpu']["0"]["mhz"]).to eql("2600") + expect(@plugin['cpu']["1"]["mhz"]).to eql("2900") + end + end + end + + + describe 'on sparc processors' do + before(:each) do + allow(@plugin).to receive(:shell_out).with("uname -p").and_return(mock_shell_out(0, "sparc\n", "")) + psrinfo_output = <<-END.strip +The physical processor has 4 cores and 8 virtual processors (32-39) + The core has 2 virtual processors (32 33) + The core has 2 virtual processors (34 35) + The core has 2 virtual processors (36 37) + The core has 2 virtual processors (38 39) + SPARC64-VII (portid 1056 impl 0x7 ver 0x91 clock 2400 MHz) +The physical processor has 4 cores and 8 virtual processors (40-47) + The core has 2 virtual processors (40 41) + The core has 2 virtual processors (42 43) + The core has 2 virtual processors (44 45) + The core has 2 virtual processors (46 47) + SPARC64-VII (portid 1064 impl 0x7 ver 0x91 clock 2400 MHz) +The physical processor has 4 cores and 8 virtual processors (48-55) + The core has 2 virtual processors (48 49) + The core has 2 virtual processors (50 51) + The core has 2 virtual processors (52 53) + The core has 2 virtual processors (54 55) + SPARC64-VII (portid 1072 impl 0x7 ver 0x91 clock 2400 MHz) +The physical processor has 4 cores and 8 virtual processors (56-63) + The core has 2 virtual processors (56 57) + The core has 2 virtual processors (58 59) + The core has 2 virtual processors (60 61) + The core has 2 virtual processors (62 63) + SPARC64-VII (portid 1080 impl 0x7 ver 0x91 clock 2400 MHz) +END + allow(@plugin).to receive(:shell_out).with('psrinfo -v -p').and_return(mock_shell_out(0, psrinfo_output, "")) + end + + it "should get the total virtual processor count" do @plugin.run - expect(@plugin['cpu']["0"]["stepping"]).to eql("7") - expect(@plugin['cpu']["1"]["stepping"]).to eql("9") + expect(@plugin['cpu']['total']).to eql(32) end - it "should include model name for processors" do + it 'should get the total processor count' do @plugin.run - expect(@plugin['cpu']["0"]["model_name"]).to eql("Intel(r) Xeon(r) CPU E5-2670 0 @ 2.60GHz") - expect(@plugin['cpu']["1"]["model_name"]).to eql("Intel(r) Xeon(r) CPU E5-2690 0 @ 2.90GHz") + expect(@plugin['cpu']['real']).to eql(4) end + + describe 'per-cpu information' do + it "should include model name for processors" do + @plugin.run + expect(@plugin['cpu']["0"]["model_name"]).to eql("SPARC64-VII") + expect(@plugin['cpu']["1"]["model_name"]).to eql("SPARC64-VII") + expect(@plugin['cpu']["2"]["model_name"]).to eql("SPARC64-VII") + expect(@plugin['cpu']["3"]["model_name"]).to eql("SPARC64-VII") + end - it "should include mhz name for processors" do - @plugin.run - expect(@plugin['cpu']["0"]["mhz"]).to eql("2600") - expect(@plugin['cpu']["1"]["mhz"]).to eql("2900") + it "should include mhz for processors" do + @plugin.run + expect(@plugin['cpu']["0"]["mhz"]).to eql("2400") + expect(@plugin['cpu']["1"]["mhz"]).to eql("2400") + expect(@plugin['cpu']["2"]["mhz"]).to eql("2400") + expect(@plugin['cpu']["3"]["mhz"]).to eql("2400") + end end end end |