blob: dfd267a5ff201cc665172e45b338f1df1b2ecae1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../../spec_helper'
require 'puppet/agent'
require 'puppet/agent/runner'
describe Puppet::Agent::Runner do
before do
@runner = Puppet::Agent::Runner.new
end
it "should indirect :runner" do
Puppet::Agent::Runner.indirection.name.should == :runner
end
it "should use a configurer agent as its agent" do
agent = mock 'agent'
Puppet::Agent.expects(:new).with(Puppet::Configurer).returns agent
@runner.agent.should equal(agent)
end
it "should accept options at initialization" do
lambda { Puppet::Agent::Runner.new :background => true }.should_not raise_error
end
it "should default to running in the foreground" do
Puppet::Agent::Runner.new.should_not be_background
end
it "should default to its options being an empty hash" do
Puppet::Agent::Runner.new.options.should == {}
end
it "should accept :tags for the agent" do
Puppet::Agent::Runner.new(:tags => "foo").options[:tags].should == "foo"
end
it "should accept :ignoreschedules for the agent" do
Puppet::Agent::Runner.new(:ignoreschedules => true).options[:ignoreschedules].should be_true
end
it "should accept an option to configure it to run in the background" do
Puppet::Agent::Runner.new(:background => true).should be_background
end
it "should retain the background option" do
Puppet::Agent::Runner.new(:background => true).options[:background].should be_nil
end
it "should not accept arbitrary options" do
lambda { Puppet::Agent::Runner.new(:foo => true) }.should raise_error(ArgumentError)
end
describe "when asked to run" do
before do
@agent = stub 'agent', :run => nil, :running? => false
@runner.stubs(:agent).returns @agent
end
it "should run its agent" do
agent = stub 'agent2', :running? => false
@runner.stubs(:agent).returns agent
agent.expects(:run)
@runner.run
end
it "should pass any of its options on to the agent" do
@runner.stubs(:options).returns(:foo => :bar)
@agent.expects(:run).with(:foo => :bar)
@runner.run
end
it "should log its run using the provided options" do
@runner.expects(:log_run)
@runner.run
end
it "should set its status to 'already_running' if the agent is already running" do
@agent.expects(:running?).returns true
@runner.run
@runner.status.should == "running"
end
it "should set its status to 'success' if the agent is run" do
@agent.expects(:running?).returns false
@runner.run
@runner.status.should == "success"
end
it "should run the agent in a thread if asked to run it in the background" do
Thread.expects(:new)
@runner.expects(:background?).returns true
@agent.expects(:run).never # because our thread didn't yield
@runner.run
end
it "should run the agent directly if asked to run it in the foreground" do
Thread.expects(:new).never
@runner.expects(:background?).returns false
@agent.expects(:run)
@runner.run
end
end
end
|