diff options
Diffstat (limited to 'spec/unit/plugins/java_spec.rb')
-rw-r--r-- | spec/unit/plugins/java_spec.rb | 222 |
1 files changed, 139 insertions, 83 deletions
diff --git a/spec/unit/plugins/java_spec.rb b/spec/unit/plugins/java_spec.rb index 7258ce66..cc3e3e0a 100644 --- a/spec/unit/plugins/java_spec.rb +++ b/spec/unit/plugins/java_spec.rb @@ -23,91 +23,147 @@ describe Ohai::System, "plugin java (Java5 Client VM)" do before(:each) do @plugin = get_plugin("java") @plugin[:languages] = Mash.new - @stderr = "java version \"1.5.0_16\"\nJava(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284)\nJava HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing)" - @plugin.stub(:shell_out).with("java -version").and_return(mock_shell_out(0, "", @stderr)) end - it "should run java -version" do - @plugin.should_receive(:shell_out).with("java -version").and_return(mock_shell_out(0, "", @stderr)) - @plugin.run - end - - it "should set java[:version]" do - @plugin.run - @plugin[:languages][:java][:version].should eql("1.5.0_16") - end - - it "should set java[:runtime][:name] to runtime name" do - @plugin.run - @plugin[:languages][:java][:runtime][:name].should eql("Java(TM) 2 Runtime Environment, Standard Edition") - end - - it "should set java[:runtime][:build] to runtime build" do - @plugin.run - @plugin[:languages][:java][:runtime][:build].should eql("1.5.0_16-b06-284") - end - - it "should set java[:hotspot][:name] to hotspot name" do - @plugin.run - @plugin[:languages][:java][:hotspot][:name].should eql("Java HotSpot(TM) Client VM") - end - - it "should set java[:hotspot][:build] to hotspot build" do - @plugin.run - @plugin[:languages][:java][:hotspot][:build].should eql("1.5.0_16-133, mixed mode, sharing") - end - - it "should not set the languages[:java] tree up if java command fails" do - @stderr = "Some error output here" - @plugin.stub(:shell_out).with("java -version").and_return(mock_shell_out(1, "", @stderr)) - @plugin.run - @plugin[:languages].should_not have_key(:java) - end -end - -describe Ohai::System, "plugin java (Java6 Server VM)" do - before(:each) do - @plugin = get_plugin("java") - @plugin[:languages] = Mash.new - @stderr = "java version \"1.6.0_22\"\nJava(TM) 2 Runtime Environment (build 1.6.0_22-b04)\nJava HotSpot(TM) Server VM (build 17.1-b03, mixed mode)" - @plugin.stub(:shell_out).with("java -version").and_return(mock_shell_out(0, "", @stderr)) - end - - it "should run java -version" do - @plugin.should_receive(:shell_out).with("java -version").and_return(mock_shell_out(0, "", @stderr)) - @plugin.run - end - - it "should set java[:version]" do - @plugin.run - @plugin[:languages][:java][:version].should eql("1.6.0_22") - end - - it "should set java[:runtime][:name] to runtime name" do - @plugin.run - @plugin[:languages][:java][:runtime][:name].should eql("Java(TM) 2 Runtime Environment") - end - - it "should set java[:runtime][:build] to runtime build" do - @plugin.run - @plugin[:languages][:java][:runtime][:build].should eql("1.6.0_22-b04") - end - - it "should set java[:hotspot][:name] to hotspot name" do - @plugin.run - @plugin[:languages][:java][:hotspot][:name].should eql("Java HotSpot(TM) Server VM") - end - - it "should set java[:hotspot][:build] to hotspot build" do - @plugin.run - @plugin[:languages][:java][:hotspot][:build].should eql("17.1-b03, mixed mode") - end - - it "should not set the languages[:java] tree up if java command fails" do - @stderr = "Some error output here" - @plugin.stub(:shell_out).with("java -version").and_return(mock_shell_out(0, "", @stderr)) - @plugin.run - @plugin[:languages].should_not have_key(:java) + shared_examples_for "when the JRE is installed" do + before do + @stderr = "java version \"1.5.0_16\"\nJava(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284)\nJava HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing)" + @plugin.stub(:shell_out).with("java -version").and_return(mock_shell_out(0, "", @stderr)) + end + + it "should run java -version" do + @plugin.should_receive(:shell_out).with("java -version").and_return(mock_shell_out(0, "", @stderr)) + @plugin.run + end + + it "should set java[:version]" do + @plugin.run + @plugin[:languages][:java][:version].should eql("1.5.0_16") + end + + it "should set java[:runtime][:name] to runtime name" do + @plugin.run + @plugin[:languages][:java][:runtime][:name].should eql("Java(TM) 2 Runtime Environment, Standard Edition") + end + + it "should set java[:runtime][:build] to runtime build" do + @plugin.run + @plugin[:languages][:java][:runtime][:build].should eql("1.5.0_16-b06-284") + end + + it "should set java[:hotspot][:name] to hotspot name" do + @plugin.run + @plugin[:languages][:java][:hotspot][:name].should eql("Java HotSpot(TM) Client VM") + end + + it "should set java[:hotspot][:build] to hotspot build" do + @plugin.run + @plugin[:languages][:java][:hotspot][:build].should eql("1.5.0_16-133, mixed mode, sharing") + end + + it "should not set the languages[:java] tree up if java command fails" do + @stderr = "Some error output here" + @plugin.stub(:shell_out).with("java -version").and_return(mock_shell_out(1, "", @stderr)) + @plugin.run + @plugin[:languages].should_not have_key(:java) + end + end + + shared_examples_for "when the Server JRE is installed" do + + before(:each) do + @stderr = "java version \"1.6.0_22\"\nJava(TM) 2 Runtime Environment (build 1.6.0_22-b04)\nJava HotSpot(TM) Server VM (build 17.1-b03, mixed mode)" + @plugin.stub(:shell_out).with("java -version").and_return(mock_shell_out(0, "", @stderr)) + end + + it "should run java -version" do + @plugin.should_receive(:shell_out).with("java -version").and_return(mock_shell_out(0, "", @stderr)) + @plugin.run + end + + it "should set java[:version]" do + @plugin.run + @plugin[:languages][:java][:version].should eql("1.6.0_22") + end + + it "should set java[:runtime][:name] to runtime name" do + @plugin.run + @plugin[:languages][:java][:runtime][:name].should eql("Java(TM) 2 Runtime Environment") + end + + it "should set java[:runtime][:build] to runtime build" do + @plugin.run + @plugin[:languages][:java][:runtime][:build].should eql("1.6.0_22-b04") + end + + it "should set java[:hotspot][:name] to hotspot name" do + @plugin.run + @plugin[:languages][:java][:hotspot][:name].should eql("Java HotSpot(TM) Server VM") + end + + it "should set java[:hotspot][:build] to hotspot build" do + @plugin.run + @plugin[:languages][:java][:hotspot][:build].should eql("17.1-b03, mixed mode") + end + + it "should not set the languages[:java] tree up if java command fails" do + @stderr = "Some error output here" + @plugin.stub(:shell_out).with("java -version").and_return(mock_shell_out(0, "", @stderr)) + @plugin.run + @plugin[:languages].should_not have_key(:java) + end + end + + context "when not on Mac OS X" do + before do + stub_const("RUBY_PLATFORM", "x86_64-linux") + end + + context "and the client JRE is installed" do + include_examples "when the JRE is installed" + end + context "and the server JRE is installed" do + include_examples "when the Server JRE is installed" + end + end + + context "when on Mac OS X with Java installed" do + before do + stub_const("RUBY_PLATFORM", "x86_64-darwin12.3.0") + end + + it "detects that it is on a darwin platform" do + @plugin.should be_on_darwin + end + + context "and real Java is installed" do + before do + java_home_status = double(Process::Status, :success? => true) + java_home_cmd = double(Mixlib::ShellOut, :status => java_home_status) + @plugin.should_receive(:shell_out).with("/usr/libexec/java_home").and_return(java_home_cmd) + end + + context "and the client JRE is installed" do + include_examples "when the JRE is installed" + end + context "and the server JRE is installed" do + include_examples "when the Server JRE is installed" + end + end + + context "and the JVM stubs are installed" do + before do + java_home_status = double(Process::Status, :success? => false) + java_home_cmd = double(Mixlib::ShellOut, :status => java_home_status) + @plugin.should_receive(:shell_out).with("/usr/libexec/java_home").and_return(java_home_cmd) + end + + it "does not attempt to get java info" do + @plugin.should_not_receive(:shell_out).with("java -version") + @plugin.run + @plugin[:languages].should_not have_key(:java) + end + end end |