mcollective-client 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mcollective-client might be problematic. Click here for more details.

@@ -3,12 +3,13 @@ module MCollective
3
3
  autoload :Result, 'mcollective/aggregate/result'
4
4
  autoload :Base, 'mcollective/aggregate/base'
5
5
 
6
- attr_accessor :ddl, :functions, :action
6
+ attr_accessor :ddl, :functions, :action, :failed
7
7
 
8
8
  def initialize(ddl)
9
9
  @functions = []
10
10
  @ddl = ddl
11
11
  @action = ddl[:action]
12
+ @failed = []
12
13
 
13
14
  create_functions
14
15
  end
@@ -17,35 +18,58 @@ module MCollective
17
18
  # All aggregate call and summarize method calls operate on these function as a batch.
18
19
  def create_functions
19
20
  @ddl[:aggregate].each_with_index do |agg, i|
20
- contains_output?(agg[:args][0])
21
-
22
21
  output = agg[:args][0]
23
- arguments = agg[:args][1..(agg[:args].size)]
24
22
 
25
- @functions << load_function(agg[:function]).new(output, arguments, agg[:format], @action)
23
+ if contains_output?(output)
24
+ arguments = agg[:args][1]
25
+ format = (arguments.delete(:format) if arguments) || nil
26
+ begin
27
+ @functions << load_function(agg[:function]).new(output, arguments, format, @action)
28
+ rescue Exception => e
29
+ Log.error("Cannot create aggregate function '#{output}'. #{e.to_s}")
30
+ @failed << {:name => output, :type => :startup}
31
+ end
32
+ else
33
+ Log.error("Cannot create aggregate function '#{output}'. '#{output}' has not been specified as a valid ddl output.")
34
+ @failed << {:name => output, :type => :create}
35
+ end
26
36
  end
27
37
  end
28
38
 
29
39
  # Check if the function param is defined as an output for the action in the ddl
30
40
  def contains_output?(output)
31
- raise "'#{@ddl[:action]}' action does not contain output '#{output}'" unless @ddl[:output].keys.include?(output)
41
+ @ddl[:output].keys.include?(output)
32
42
  end
33
43
 
34
44
  # Call all the appropriate functions with the reply data received from RPC::Client
35
45
  def call_functions(reply)
36
46
  @functions.each do |function|
37
47
  Log.debug("Calling aggregate function #{function} for result")
38
- function.process_result(reply[:data][function.output_name], reply)
48
+ begin
49
+ function.process_result(reply[:data][function.output_name], reply)
50
+ rescue Exception => e
51
+ Log.error("Could not process aggregate function for '#{function.output_name}'. #{e.to_s}")
52
+ @failed << {:name => function.output_name, :type => :process_result}
53
+ @functions.delete(function)
54
+ end
39
55
  end
40
56
  end
41
57
 
42
58
  # Finalizes the function returning a result object
43
59
  def summarize
44
60
  summary = @functions.map do |function|
45
- function.summarize
61
+ begin
62
+ function.summarize
63
+ rescue Exception => e
64
+ Log.error("Could not summarize aggregate result for '#{function.output_name}'. #{e.to_s}")
65
+ @failed << {:name => function.output_name, :type => :summarize}
66
+ nil
67
+ end
46
68
  end
47
69
 
48
- summary.sort{|x,y| x.result[:output] <=> y.result[:output]}
70
+ summary.reject{|x| x.nil?}.sort do |x,y|
71
+ x.result[:output] <=> y.result[:output]
72
+ end
49
73
  end
50
74
 
51
75
  # Loads function from disk for use
@@ -8,7 +8,7 @@ module MCollective
8
8
  result = StringIO.new
9
9
 
10
10
  @result[:value].sort{|x,y| x[1] <=> y[1]}.reverse.each do |value|
11
- result.puts " " + @aggregate_format % [value[0], value[1]]
11
+ result.puts @aggregate_format % [value[0], value[1]]
12
12
  end
13
13
 
14
14
  result.string.chomp
@@ -127,10 +127,12 @@ module MCollective
127
127
  def req(body, agent=nil, options=false, waitfor=0)
128
128
  if body.is_a?(Message)
129
129
  agent = body.agent
130
- options = body.options
131
130
  waitfor = body.discovered_hosts.size || 0
131
+ @options = body.options
132
132
  end
133
133
 
134
+ @options = options if options
135
+
134
136
  stat = {:starttime => Time.now.to_f, :discoverytime => 0, :blocktime => 0, :totaltime => 0}
135
137
 
136
138
  timeout = @discoverer.discovery_timeout(@options[:timeout], @options[:filter])
@@ -141,6 +143,8 @@ module MCollective
141
143
  reqid = nil
142
144
 
143
145
  begin
146
+ Log.debug("Publishing request to agent %s with timeout %d" % [agent, timeout])
147
+
144
148
  Timeout.timeout(timeout) do
145
149
  reqid = sendreq(body, agent, @options[:filter])
146
150
 
@@ -44,15 +44,19 @@ module MCollective
44
44
 
45
45
  raise DDLValidationError, "No dataquery has been defined in the DDL for data plugin #{name}" unless query
46
46
 
47
- input = query[:input]
48
- output = query[:output]
47
+ input = query.fetch(:input, {})
48
+ output = query.fetch(:output, {})
49
49
 
50
- raise DDLValidationError, "No :query input has been defined in the DDL for data plugin #{name}" unless input[:query]
51
50
  raise DDLValidationError, "No output has been defined in the DDL for data plugin #{name}" if output.keys.empty?
52
51
 
53
- return true if argument.nil? && input[:query][:optional]
52
+ if input[:query]
53
+ return true if argument.nil? && input[:query][:optional]
54
54
 
55
- ddl.validate_input_argument(input, :query, argument)
55
+ ddl.validate_input_argument(input, :query, argument)
56
+ else
57
+ raise("No data plugin argument was declared in the %s DDL but an input was supplied" % name) if argument
58
+ return true
59
+ end
56
60
  end
57
61
 
58
62
  def self.ddl_has_output?(ddl, output)
@@ -19,7 +19,7 @@ module MCollective
19
19
  end
20
20
 
21
21
  def []=(key, val)
22
- raise "Can only store String, Integer, Float or Boolean data but got #{val.class} for key #{key}" unless [String, Fixnum, Float, TrueClass, FalseClass].include?(val.class)
22
+ raise "Can only store String, Integer, Float or Boolean data but got #{val.class} for key #{key}" unless [String, Fixnum, Bignum, Float, TrueClass, FalseClass].include?(val.class)
23
23
 
24
24
  @data[key.to_sym] = val
25
25
  end
@@ -141,7 +141,7 @@ module MCollective
141
141
 
142
142
  return true
143
143
  rescue => e
144
- raise DDLValidationError, "Cannot validate input: %s" % e.to_s
144
+ raise DDLValidationError, "Cannot validate input %s: %s" % [key, e.to_s]
145
145
  end
146
146
 
147
147
  # Registers an input argument for a given action
@@ -753,6 +753,7 @@ module MCollective
753
753
  end
754
754
 
755
755
  @stats.aggregate_summary = aggregate.summarize if aggregate
756
+ @stats.aggregate_failures = aggregate.failed if aggregate
756
757
  else
757
758
  @stderr.print("\nNo request sent, we did not discover any nodes.")
758
759
  end
@@ -833,6 +834,7 @@ module MCollective
833
834
  end
834
835
 
835
836
  @stats.aggregate_summary = aggregate.summarize if aggregate
837
+ @stats.aggregate_failures = aggregate.failed if aggregate
836
838
  @stats.client_stats = @client.stats
837
839
  else
838
840
  @stderr.print("\nNo request sent, we did not discover any nodes.")
@@ -4,7 +4,7 @@ module MCollective
4
4
  class Stats
5
5
  attr_accessor :noresponsefrom, :starttime, :discoverytime, :blocktime, :responses, :totaltime
6
6
  attr_accessor :discovered, :discovered_nodes, :okcount, :failcount, :noresponsefrom, :responsesfrom
7
- attr_accessor :requestid, :aggregate_summary, :ddl
7
+ attr_accessor :requestid, :aggregate_summary, :ddl, :aggregate_failures
8
8
 
9
9
  def initialize
10
10
  reset
@@ -26,6 +26,7 @@ module MCollective
26
26
  @noresponsefrom = []
27
27
  @requestid = nil
28
28
  @aggregate_summary = []
29
+ @aggregate_failures = []
29
30
  end
30
31
 
31
32
  # returns a hash of our stats
@@ -42,7 +43,8 @@ module MCollective
42
43
  :okcount => @okcount,
43
44
  :requestid => @requestid,
44
45
  :failcount => @failcount,
45
- :aggregate_summary => @aggregate_summary}
46
+ :aggregate_summary => @aggregate_summary,
47
+ :aggregate_failures => @aggregate_failures}
46
48
  end
47
49
 
48
50
  # Fake hash access to keep things backward compatible
@@ -143,18 +145,40 @@ module MCollective
143
145
  display_as = output_item
144
146
  end
145
147
 
146
- aggregate_report = aggregate.to_s
148
+ if aggregate.is_a?(Aggregate::Result::Base)
149
+ aggregate_report = aggregate.to_s
150
+ else
151
+ next
152
+ end
147
153
 
148
154
  result.puts Util.colorize(:bold, "Summary of %s:" % display_as)
149
155
  result.puts
150
156
  unless aggregate_report == ""
151
- result.puts aggregate.to_s
157
+ result.puts aggregate.to_s.split("\n").map{|x| " " + x}.join("\n")
152
158
  else
153
159
  result.puts Util.colorize(:yellow, " No aggregate summary could be computed")
154
160
  end
155
161
  result.puts
156
162
  end
157
163
 
164
+ @aggregate_failures.each do |failed|
165
+ case(failed[:type])
166
+ when :startup
167
+ message = "exception raised while processing startup hook"
168
+ when :create
169
+ message = "unspecified output '#{failed[:name]}' for the action"
170
+ when :process_result
171
+ message = "exception raised while processing result data"
172
+ when :summarize
173
+ message = "exception raised while summarizing"
174
+ end
175
+
176
+ result.puts Util.colorize(:bold, "Summary of %s:" % failed[:name])
177
+ result.puts
178
+ result.puts Util.colorize(:yellow, " Could not compute summary - %s" % message)
179
+ result.puts
180
+ end
181
+
158
182
  result.string
159
183
  end
160
184
 
@@ -190,7 +214,7 @@ module MCollective
190
214
  if @discovered
191
215
  @responses < @discovered ? color = :red : color = :green
192
216
 
193
- if @aggregate_summary.size > 0 && summarize
217
+ if @aggregate_summary.size + @aggregate_failures.size > 0 && summarize
194
218
  result_text << text_for_aggregates
195
219
  else
196
220
  result_text << ""
@@ -9,7 +9,7 @@ module MCollective
9
9
  describe "#to_s" do
10
10
  it "should return the correctly formatted string" do
11
11
  result = CollectionResult.new({:output => [:test], :value => {"foo" => 3, "bar" => 2}}, "%s:%s", :action).to_s
12
- result.should == " foo:3\n bar:2"
12
+ result.should == "foo:3\nbar:2"
13
13
  end
14
14
  end
15
15
  end
@@ -6,30 +6,57 @@ module MCollective
6
6
  describe Aggregate do
7
7
  let(:ddl) do
8
8
  {
9
- :aggregate => [{:function => :func, :args=>[:value], :format => "%s"}],
9
+ :aggregate => [{:function => :func, :args=>[:foo, {:format => "%s"}]}],
10
10
  :action => "test_action",
11
11
  :output => {:foo => nil, :bar => nil}
12
12
  }
13
13
  end
14
14
 
15
15
  describe '#create_functions' do
16
- before :each do
17
- Aggregate.any_instance.stubs(:contains_output?)
18
- end
16
+ let(:function){mock}
19
17
 
20
18
  it "should load all the functions with a format if defined" do
21
- function = mock
22
- function.expects(:new).with(:value, [], "%s", 'test_action')
19
+ function.expects(:new).with(:foo, {}, "%s", 'test_action')
20
+ Aggregate.any_instance.expects(:contains_output?).returns(true)
23
21
  Aggregate.any_instance.expects(:load_function).once.returns(function)
24
- @aggregate = Aggregate.new(ddl)
22
+ Aggregate.new(ddl)
25
23
  end
26
24
 
27
25
  it "should load all the functions without a format if it isn't defined" do
28
- function = mock
29
- function.expects(:new).with(:value, [], nil, 'test_action')
26
+ function.expects(:new).with(:foo, {}, nil, 'test_action')
30
27
  Aggregate.any_instance.expects(:load_function).once.returns(function)
31
- ddl[:aggregate].first[:format] = nil
32
- @aggregate = Aggregate.new(ddl)
28
+ ddl[:aggregate].first[:args][1][:format] = nil
29
+ Aggregate.new(ddl)
30
+ end
31
+
32
+ it "should not summarize functions where the output is not specified in the ddl" do
33
+ invalid_ddl = { :aggregate => [{:function => :func, :args=>[:foo], :format => "%s"}, {:function => :func, :args=>[:fail], :format => "%s"}],
34
+ :action => "test_action",
35
+ :output => {:foo => nil, :bar => nil}}
36
+
37
+ function.stubs(:new).returns("function")
38
+ Aggregate.any_instance.stubs(:load_function).returns(function)
39
+
40
+ Log.expects(:error)
41
+ aggregate = Aggregate.new(invalid_ddl)
42
+ aggregate.functions.should == ["function"]
43
+ aggregate.failed.should == [{:type=>:create, :name=>:fail}]
44
+ end
45
+
46
+ it "should pass additional arguments if specified in the ddl" do
47
+ function.expects(:new).with(:foo, {:extra => "extra"}, "%s", 'test_action')
48
+ Aggregate.any_instance.expects(:load_function).once.returns(function)
49
+ ddl[:aggregate].first[:args][1][:extra] = "extra"
50
+ Aggregate.new(ddl)
51
+ end
52
+
53
+ it "should not summarize functions if the startup hook raises an exception" do
54
+ function.stubs(:new).raises("rspec")
55
+ Aggregate.any_instance.expects(:load_function).returns(function)
56
+
57
+ Log.expects(:error)
58
+ aggregate = Aggregate.new(ddl)
59
+ aggregate.failed.should == [{:type=>:startup, :name =>:foo }]
33
60
  end
34
61
  end
35
62
 
@@ -39,31 +66,51 @@ module MCollective
39
66
  @aggregate = Aggregate.new(ddl)
40
67
  end
41
68
 
42
- it "should raise an exception if the ddl output does not include the function's input" do
43
- expect{
44
- @aggregate.contains_output?(:baz)
45
- }.to raise_error("'test_action' action does not contain output 'baz'")
69
+ it "should return false if the ddl output does not include the function's input" do
70
+ result = @aggregate.contains_output?(:baz)
71
+ result.should == false
46
72
  end
47
73
 
48
- it "should not raise an exception if the ddl output includes the function's input" do
49
- @aggregate.contains_output?(:foo)
74
+ it "should return true if the ddl output includes the function's input" do
75
+ result = @aggregate.contains_output?(:foo)
76
+ result.should == true
50
77
  end
51
78
  end
52
79
 
53
80
  describe '#call_functions' do
54
- it "should call all of the functions" do
55
- Aggregate.any_instance.stubs(:create_functions)
56
- aggregate = Aggregate.new(ddl)
81
+ let(:aggregate){ Aggregate.new(ddl)}
82
+ let(:result){ RPC::Result.new("rspec", "rspec", :sender => "rspec", :statuscode => 0, :statusmsg => "rspec", :data => {:test => :result})}
83
+ let(:function) {mock}
57
84
 
58
- result = RPC::Result.new("rspec", "rspec", :sender => "rspec", :statuscode => 0, :statusmsg => "rspec", :data => {:test => :result})
85
+ before :each do
86
+ Aggregate.any_instance.stubs(:create_functions)
87
+ end
59
88
 
60
- function = mock
89
+ it "should call all of the functions" do
61
90
  function.expects(:process_result).with(:result, result).once
62
91
  function.expects(:output_name).returns(:test)
92
+ aggregate.functions = [function]
63
93
 
94
+ aggregate.call_functions(result)
95
+ end
96
+
97
+ it "should not fail if 'process_result' method raises an exception" do
64
98
  aggregate.functions = [function]
99
+ function.stubs(:output_name).returns(:test)
100
+ function.stubs(:process_result).raises("Failed")
65
101
 
102
+ Log.expects(:error)
66
103
  aggregate.call_functions(result)
104
+ aggregate.failed.should == [:name => :test, :type => :process_result]
105
+ end
106
+
107
+ it "should not fail if 'summarize' method raises en exception" do
108
+ function.stubs(:summarize).raises("Failed")
109
+ function.stubs(:output_name).returns("rspec")
110
+ aggregate.functions = [function]
111
+
112
+ Log.expects(:error)
113
+ result = aggregate.summarize
67
114
  end
68
115
  end
69
116
 
@@ -85,6 +132,19 @@ module MCollective
85
132
  result = aggregate.summarize
86
133
  result.should == [func2, func1]
87
134
  end
135
+
136
+ it "should not summarise data that raises an exception" do
137
+ Aggregate.any_instance.stubs(:create_functions)
138
+ aggregate = Aggregate.new(ddl)
139
+ func = mock
140
+ func.stubs(:summarize).raises("rspec")
141
+ func.stubs(:output_name).returns("rspec")
142
+ aggregate.functions = [func]
143
+ Log.expects(:error)
144
+
145
+ aggregate.summarize
146
+ aggregate.failed.should == [{:name => "rspec", :type => :summarize}]
147
+ end
88
148
  end
89
149
 
90
150
  describe '#load_function' do
@@ -58,7 +58,7 @@ module MCollective
58
58
  @client.expects(:sendreq).returns("823a3419a0975c3facbde121f72ab61f")
59
59
  @client.expects(:receive).returns(reply)
60
60
 
61
- @discoverer.stubs(:discovery_timeout).returns(0)
61
+ @discoverer.expects(:discovery_timeout).with(message.options[:timeout], message.options[:filter]).returns(0)
62
62
 
63
63
  Time.stubs(:now).returns(Time.at(1340621250), Time.at(1340621251))
64
64
 
@@ -23,6 +23,10 @@ module MCollective
23
23
  @result["rspec"] = "rspec value"
24
24
  @result.instance_variable_get("@data").should == {:rspec => "rspec value"}
25
25
  end
26
+
27
+ it "should only allow valid data types" do
28
+ expect { @result["rspec"] = Time.now }.to raise_error(/Can only store .+ data but got Time for key rspec/)
29
+ end
26
30
  end
27
31
 
28
32
  describe "#include" do
@@ -132,9 +132,14 @@ module MCollective
132
132
  expect { Data.ddl_validate(@ddl, "rspec") }.to raise_error("No dataquery has been defined in the DDL for data plugin rspec test")
133
133
  end
134
134
 
135
- it "should ensure the ddl has an input" do
136
- @ddl.expects(:entities).returns({:data => {:input => {}, :output => {}}})
137
- expect { Data.ddl_validate(@ddl, "rspec") }.to raise_error("No :query input has been defined in the DDL for data plugin rspec test")
135
+ it "should allow ddls without any input defined" do
136
+ @ddl.expects(:entities).returns({:data => {:input => {}, :output => {:x => {}}}})
137
+ Data.ddl_validate(@ddl, nil)
138
+ end
139
+
140
+ it "should not allow input arguments when no query were defined" do
141
+ @ddl.expects(:entities).returns({:data => {:input => {}, :output => {:x => {}}}})
142
+ expect { Data.ddl_validate(@ddl, "rspec") }.to raise_error("No data plugin argument was declared in the rspec test DDL but an input was supplied")
138
143
  end
139
144
 
140
145
  it "should ensure the ddl has output" do
@@ -65,7 +65,7 @@ module MCollective
65
65
 
66
66
  expect {
67
67
  @ddl.validate_input_argument(@ddl.entities[:string][:input], :string, 1)
68
- }.to raise_error("Cannot validate input: value should be a string")
68
+ }.to raise_error("Cannot validate input string: value should be a string")
69
69
 
70
70
  @ddl.validate_input_argument(@ddl.entities[:string][:input], :string, "1")
71
71
  end
@@ -79,7 +79,7 @@ module MCollective
79
79
 
80
80
  expect {
81
81
  @ddl.validate_input_argument(@ddl.entities[:string][:input], :string, "too long")
82
- }.to raise_error("Cannot validate input: Input string is longer than 1 character(s)")
82
+ }.to raise_error("Cannot validate input string: Input string is longer than 1 character(s)")
83
83
 
84
84
  @ddl.validate_input_argument(@ddl.entities[:string][:input], :string, "1")
85
85
  end
@@ -93,7 +93,7 @@ module MCollective
93
93
 
94
94
  expect {
95
95
  @ddl.validate_input_argument(@ddl.entities[:string][:input], :string, "doesnt validate")
96
- }.to raise_error("Cannot validate input: value should match ^regex$")
96
+ }.to raise_error("Cannot validate input string: value should match ^regex$")
97
97
 
98
98
  @ddl.validate_input_argument(@ddl.entities[:string][:input], :string, "regex")
99
99
  end
@@ -106,7 +106,7 @@ module MCollective
106
106
 
107
107
  expect {
108
108
  @ddl.validate_input_argument(@ddl.entities[:list][:input], :list, 3)
109
- }.to raise_error("Cannot validate input: value should be one of 1, 2")
109
+ }.to raise_error("Cannot validate input list: value should be one of 1, 2")
110
110
 
111
111
  @ddl.validate_input_argument(@ddl.entities[:list][:input], :list, 1)
112
112
  end
@@ -119,7 +119,7 @@ module MCollective
119
119
 
120
120
  expect {
121
121
  @ddl.validate_input_argument(@ddl.entities[:bool][:input], :bool, 3)
122
- }.to raise_error("Cannot validate input: value should be a boolean")
122
+ }.to raise_error("Cannot validate input bool: value should be a boolean")
123
123
 
124
124
  @ddl.validate_input_argument(@ddl.entities[:bool][:input], :bool, true)
125
125
  @ddl.validate_input_argument(@ddl.entities[:bool][:input], :bool, false)
@@ -133,11 +133,11 @@ module MCollective
133
133
 
134
134
  expect {
135
135
  @ddl.validate_input_argument(@ddl.entities[:test][:input], :int, "1")
136
- }.to raise_error("Cannot validate input: value should be a integer")
136
+ }.to raise_error("Cannot validate input int: value should be a integer")
137
137
 
138
138
  expect {
139
139
  @ddl.validate_input_argument(@ddl.entities[:test][:input], :int, 1.1)
140
- }.to raise_error("Cannot validate input: value should be a integer")
140
+ }.to raise_error("Cannot validate input int: value should be a integer")
141
141
 
142
142
  @ddl.validate_input_argument(@ddl.entities[:test][:input], :int, 1)
143
143
  end
@@ -150,11 +150,11 @@ module MCollective
150
150
 
151
151
  expect {
152
152
  @ddl.validate_input_argument(@ddl.entities[:test][:input], :float, "1")
153
- }.to raise_error("Cannot validate input: value should be a float")
153
+ }.to raise_error("Cannot validate input float: value should be a float")
154
154
 
155
155
  expect {
156
156
  @ddl.validate_input_argument(@ddl.entities[:test][:input], :float, 1)
157
- }.to raise_error("Cannot validate input: value should be a float")
157
+ }.to raise_error("Cannot validate input float: value should be a float")
158
158
 
159
159
  @ddl.validate_input_argument(@ddl.entities[:test][:input], :float, 1.1)
160
160
  end
@@ -167,7 +167,7 @@ module MCollective
167
167
 
168
168
  expect {
169
169
  @ddl.validate_input_argument(@ddl.entities[:test][:input], :number, "1")
170
- }.to raise_error("Cannot validate input: value should be a number")
170
+ }.to raise_error("Cannot validate input number: value should be a number")
171
171
 
172
172
  @ddl.validate_input_argument(@ddl.entities[:test][:input], :number, 1)
173
173
  @ddl.validate_input_argument(@ddl.entities[:test][:input], :number, 1.1)
@@ -39,6 +39,16 @@ module MCollective
39
39
  sum.result[:value] = {"shrt" => 1, "long key" => 1}
40
40
  sum.summarize.aggregate_format.should == "%8s = %s"
41
41
  end
42
+
43
+ it "should calculate an attractive format when result type is not a string" do
44
+ sum1 = Summary.new(:test, [], nil, :test_action)
45
+ sum1.result[:value] = {true => 4, false => 5}
46
+ sum1.summarize.aggregate_format.should == "%5s = %s"
47
+
48
+ sum2 = Summary.new(:test, [], nil, :test_action)
49
+ sum2.result[:value] = {1 => 1, 10 => 2}
50
+ sum2.summarize.aggregate_format.should == "%2s = %s"
51
+ end
42
52
  end
43
53
  end
44
54
  end
@@ -17,6 +17,7 @@ module MCollective
17
17
  :starttime => 1300031826.0,
18
18
  :requestid => nil,
19
19
  :aggregate_summary => [],
20
+ :aggregate_failures => [],
20
21
  :discovered_nodes => []}
21
22
 
22
23
  @stats = Stats.new
@@ -283,6 +284,41 @@ module MCollective
283
284
  @stats.no_response_report.should match(Regexp.new(/No response from.+bar\s+foo/m))
284
285
  end
285
286
  end
287
+
288
+ describe "#text_for_aggregates" do
289
+ let(:aggregate){mock()}
290
+
291
+ before :each do
292
+ aggregate.stubs(:result).returns({:output => "success"})
293
+ aggregate.stubs(:action).returns("action")
294
+ end
295
+
296
+ it "should create the correct output text for aggregate functions" do
297
+ @stats.aggregate_summary = [aggregate]
298
+ aggregate.stubs(:is_a?).returns(true)
299
+ @stats.text_for_aggregates.should =~ /Summary of.*/
300
+ end
301
+
302
+ it "should display an error message for a failed statup hook" do
303
+ @stats.aggregate_failures = [{:name => "rspec", :type => :startup}]
304
+ @stats.text_for_aggregates.should =~ /exception raised while processing startup hook/
305
+ end
306
+
307
+ it "should display an error message for an unspecified output" do
308
+ @stats.aggregate_failures = [{:name => "rspec", :type => :create}]
309
+ @stats.text_for_aggregates.should =~ /unspecified output 'rspec' for the action/
310
+ end
311
+
312
+ it "should display an error message for a failed process_result" do
313
+ @stats.aggregate_failures = [{:name => "rspec", :type => :process_result}]
314
+ @stats.text_for_aggregates.should =~ /exception raised while processing result data/
315
+ end
316
+
317
+ it "should display an error message for a failed summarize" do
318
+ @stats.aggregate_failures = [{:name => "rspec", :type => :summarize}]
319
+ @stats.text_for_aggregates.should =~ /exception raised while summarizing/
320
+ end
321
+ end
286
322
  end
287
323
  end
288
324
  end
@@ -41,7 +41,7 @@ module MCollective
41
41
 
42
42
  it "should call super if a validator method is called and the plugin does not exist" do
43
43
  expect{
44
- Validator.test(1,2,3)
44
+ Validator.rspec(1,2,3)
45
45
  }.to raise_error(ValidatorError)
46
46
  end
47
47
  end
metadata CHANGED
@@ -1,384 +1,373 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mcollective-client
3
- version: !ruby/object:Gem::Version
4
- hash: 7
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.2.1
5
5
  prerelease:
6
- segments:
7
- - 2
8
- - 2
9
- - 0
10
- version: 2.2.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - R.I.Pienaar
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-09-13 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-10-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: systemu
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: json
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: json
32
+ requirement: !ruby/object:Gem::Requirement
38
33
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
46
38
  type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: stomp
50
39
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: stomp
48
+ requirement: !ruby/object:Gem::Requirement
52
49
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
60
54
  type: :runtime
61
- version_requirements: *id003
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
62
  description: Client libraries for the mcollective Application Server
63
63
  email: rip@puppetlabs.com
64
- executables:
64
+ executables:
65
65
  - mco
66
66
  extensions: []
67
-
68
67
  extra_rdoc_files: []
69
-
70
- files:
68
+ files:
71
69
  - bin/mc-call-agent
72
70
  - bin/mco
73
- - lib/mcollective/data.rb
74
- - lib/mcollective/connector/base.rb
75
- - lib/mcollective/windows_daemon.rb
76
- - lib/mcollective/vendor/require_vendored.rb
77
- - lib/mcollective/shell.rb
78
- - lib/mcollective/ssl.rb
71
+ - lib/mcollective/agent.rb
72
+ - lib/mcollective/agents.rb
79
73
  - lib/mcollective/aggregate/base.rb
80
- - lib/mcollective/aggregate/result/numeric_result.rb
81
74
  - lib/mcollective/aggregate/result/base.rb
82
75
  - lib/mcollective/aggregate/result/collection_result.rb
76
+ - lib/mcollective/aggregate/result/numeric_result.rb
83
77
  - lib/mcollective/aggregate/result.rb
84
- - lib/mcollective/agent.rb
85
- - lib/mcollective/facts/base.rb
78
+ - lib/mcollective/aggregate.rb
86
79
  - lib/mcollective/application.rb
87
- - lib/mcollective/message.rb
88
- - lib/mcollective/monkey_patches.rb
89
- - lib/mcollective/agents.rb
90
- - lib/mcollective/rpc/agent.rb
91
- - lib/mcollective/rpc/request.rb
92
- - lib/mcollective/rpc/reply.rb
93
- - lib/mcollective/rpc/progress.rb
94
- - lib/mcollective/rpc/result.rb
95
- - lib/mcollective/rpc/helpers.rb
96
- - lib/mcollective/rpc/actionrunner.rb
97
- - lib/mcollective/rpc/audit.rb
98
- - lib/mcollective/rpc/client.rb
99
- - lib/mcollective/rpc/stats.rb
100
- - lib/mcollective/log.rb
101
- - lib/mcollective/pluginmanager.rb
102
- - lib/mcollective/runnerstats.rb
103
- - lib/mcollective/pluginpackager/agent_definition.rb
104
- - lib/mcollective/pluginpackager/standard_definition.rb
105
- - lib/mcollective/discovery.rb
106
- - lib/mcollective/vendor.rb
107
- - lib/mcollective/facts.rb
108
- - lib/mcollective/logger.rb
109
- - lib/mcollective/generators.rb
110
- - lib/mcollective/ddl/base.rb
80
+ - lib/mcollective/applications.rb
81
+ - lib/mcollective/cache.rb
82
+ - lib/mcollective/client.rb
83
+ - lib/mcollective/config.rb
84
+ - lib/mcollective/connector/base.rb
85
+ - lib/mcollective/connector.rb
86
+ - lib/mcollective/data/base.rb
87
+ - lib/mcollective/data/result.rb
88
+ - lib/mcollective/data.rb
111
89
  - lib/mcollective/ddl/agentddl.rb
112
- - lib/mcollective/ddl/discoveryddl.rb
90
+ - lib/mcollective/ddl/base.rb
113
91
  - lib/mcollective/ddl/dataddl.rb
92
+ - lib/mcollective/ddl/discoveryddl.rb
114
93
  - lib/mcollective/ddl/validatorddl.rb
115
- - lib/mcollective/logger/file_logger.rb
116
- - lib/mcollective/logger/console_logger.rb
117
- - lib/mcollective/logger/base.rb
118
- - lib/mcollective/logger/syslog_logger.rb
94
+ - lib/mcollective/ddl.rb
95
+ - lib/mcollective/discovery.rb
96
+ - lib/mcollective/facts/base.rb
97
+ - lib/mcollective/facts.rb
98
+ - lib/mcollective/generators/agent_generator.rb
119
99
  - lib/mcollective/generators/base.rb
100
+ - lib/mcollective/generators/data_generator.rb
101
+ - lib/mcollective/generators/templates/action_snippet.erb
120
102
  - lib/mcollective/generators/templates/data_input_snippet.erb
121
103
  - lib/mcollective/generators/templates/ddl.erb
122
- - lib/mcollective/generators/templates/action_snippet.erb
123
104
  - lib/mcollective/generators/templates/plugin.erb
124
- - lib/mcollective/generators/data_generator.rb
125
- - lib/mcollective/generators/agent_generator.rb
126
- - lib/mcollective/config.rb
127
- - lib/mcollective/ddl.rb
128
- - lib/mcollective/connector.rb
105
+ - lib/mcollective/generators.rb
106
+ - lib/mcollective/log.rb
107
+ - lib/mcollective/logger/base.rb
108
+ - lib/mcollective/logger/console_logger.rb
109
+ - lib/mcollective/logger/file_logger.rb
110
+ - lib/mcollective/logger/syslog_logger.rb
111
+ - lib/mcollective/logger.rb
112
+ - lib/mcollective/matcher/parser.rb
113
+ - lib/mcollective/matcher/scanner.rb
114
+ - lib/mcollective/matcher.rb
115
+ - lib/mcollective/message.rb
116
+ - lib/mcollective/monkey_patches.rb
117
+ - lib/mcollective/optionparser.rb
118
+ - lib/mcollective/pluginmanager.rb
119
+ - lib/mcollective/pluginpackager/agent_definition.rb
120
+ - lib/mcollective/pluginpackager/standard_definition.rb
121
+ - lib/mcollective/pluginpackager.rb
129
122
  - lib/mcollective/registration/base.rb
130
123
  - lib/mcollective/registration.rb
131
- - lib/mcollective/applications.rb
132
- - lib/mcollective/pluginpackager.rb
133
- - lib/mcollective/security/base.rb
134
- - lib/mcollective/matcher.rb
135
- - lib/mcollective/unix_daemon.rb
136
- - lib/mcollective/data/base.rb
137
- - lib/mcollective/data/result.rb
138
- - lib/mcollective/validator.rb
139
- - lib/mcollective/aggregate.rb
124
+ - lib/mcollective/rpc/actionrunner.rb
125
+ - lib/mcollective/rpc/agent.rb
126
+ - lib/mcollective/rpc/audit.rb
127
+ - lib/mcollective/rpc/client.rb
128
+ - lib/mcollective/rpc/helpers.rb
129
+ - lib/mcollective/rpc/progress.rb
130
+ - lib/mcollective/rpc/reply.rb
131
+ - lib/mcollective/rpc/request.rb
132
+ - lib/mcollective/rpc/result.rb
133
+ - lib/mcollective/rpc/stats.rb
140
134
  - lib/mcollective/rpc.rb
141
- - lib/mcollective/optionparser.rb
142
- - lib/mcollective/cache.rb
143
- - lib/mcollective/matcher/parser.rb
144
- - lib/mcollective/matcher/scanner.rb
145
- - lib/mcollective/client.rb
135
+ - lib/mcollective/runnerstats.rb
136
+ - lib/mcollective/security/base.rb
146
137
  - lib/mcollective/security.rb
138
+ - lib/mcollective/shell.rb
139
+ - lib/mcollective/ssl.rb
140
+ - lib/mcollective/unix_daemon.rb
147
141
  - lib/mcollective/util.rb
142
+ - lib/mcollective/validator.rb
143
+ - lib/mcollective/vendor/require_vendored.rb
144
+ - lib/mcollective/vendor.rb
145
+ - lib/mcollective/windows_daemon.rb
148
146
  - lib/mcollective.rb
149
- - spec/spec.opts
150
- - spec/fixtures/test-public.pem
151
147
  - spec/fixtures/application/test.rb
152
- - spec/fixtures/test-private.pem
153
148
  - spec/fixtures/test-cert.pem
149
+ - spec/fixtures/test-private.pem
150
+ - spec/fixtures/test-public.pem
154
151
  - spec/fixtures/util/1.in
155
- - spec/fixtures/util/4.in
156
152
  - spec/fixtures/util/1.out
157
- - spec/fixtures/util/3.in
158
153
  - spec/fixtures/util/2.in
159
154
  - spec/fixtures/util/2.out
160
- - spec/fixtures/util/4.out
155
+ - spec/fixtures/util/3.in
161
156
  - spec/fixtures/util/3.out
162
- - spec/unit/data_spec.rb
163
- - spec/unit/application_spec.rb
164
- - spec/unit/ddl_spec.rb
157
+ - spec/fixtures/util/4.in
158
+ - spec/fixtures/util/4.out
159
+ - spec/monkey_patches/instance_variable_defined.rb
160
+ - spec/Rakefile
161
+ - spec/spec.opts
162
+ - spec/spec_helper.rb
163
+ - spec/unit/agents_spec.rb
165
164
  - spec/unit/aggregate/base_spec.rb
166
165
  - spec/unit/aggregate/result/base_spec.rb
167
- - spec/unit/aggregate/result/numeric_result_spec.rb
168
166
  - spec/unit/aggregate/result/collection_result_spec.rb
169
- - spec/unit/client_spec.rb
170
- - spec/unit/unix_daemon_spec.rb
171
- - spec/unit/facts/base_spec.rb
167
+ - spec/unit/aggregate/result/numeric_result_spec.rb
168
+ - spec/unit/aggregate_spec.rb
169
+ - spec/unit/application_spec.rb
170
+ - spec/unit/applications_spec.rb
172
171
  - spec/unit/array_spec.rb
173
- - spec/unit/rpc/reply_spec.rb
174
- - spec/unit/rpc/client_spec.rb
175
- - spec/unit/rpc/helpers_spec.rb
176
- - spec/unit/rpc/request_spec.rb
177
- - spec/unit/rpc/agent_spec.rb
178
- - spec/unit/rpc/result_spec.rb
179
- - spec/unit/rpc/actionrunner_spec.rb
180
- - spec/unit/rpc/stats_spec.rb
181
- - spec/unit/windows_daemon_spec.rb
182
172
  - spec/unit/cache_spec.rb
183
- - spec/unit/optionparser_spec.rb
184
- - spec/unit/string_spec.rb
185
- - spec/unit/pluginpackager/agent_definition_spec.rb
186
- - spec/unit/pluginpackager/standard_definition_spec.rb
187
- - spec/unit/ssl_spec.rb
173
+ - spec/unit/client_spec.rb
188
174
  - spec/unit/config_spec.rb
189
- - spec/unit/applications_spec.rb
190
- - spec/unit/validator_spec.rb
191
- - spec/unit/runnerstats_spec.rb
175
+ - spec/unit/data/base_spec.rb
176
+ - spec/unit/data/result_spec.rb
177
+ - spec/unit/data_spec.rb
178
+ - spec/unit/ddl/agentddl_spec.rb
192
179
  - spec/unit/ddl/base_spec.rb
193
180
  - spec/unit/ddl/dataddl_spec.rb
194
- - spec/unit/ddl/agentddl_spec.rb
195
181
  - spec/unit/ddl/discoveryddl_spec.rb
196
- - spec/unit/logger/console_logger_spec.rb
197
- - spec/unit/logger/base_spec.rb
198
- - spec/unit/logger/syslog_logger_spec.rb
182
+ - spec/unit/ddl_spec.rb
183
+ - spec/unit/discovery_spec.rb
184
+ - spec/unit/facts/base_spec.rb
185
+ - spec/unit/facts_spec.rb
199
186
  - spec/unit/generators/agent_generator_spec.rb
200
- - spec/unit/generators/snippets/agent_ddl
201
- - spec/unit/generators/snippets/data_ddl
202
187
  - spec/unit/generators/base_spec.rb
203
188
  - spec/unit/generators/data_generator_spec.rb
204
- - spec/unit/plugins/mcollective/connector/rabbitmq_spec.rb
189
+ - spec/unit/generators/snippets/agent_ddl
190
+ - spec/unit/generators/snippets/data_ddl
191
+ - spec/unit/log_spec.rb
192
+ - spec/unit/logger/base_spec.rb
193
+ - spec/unit/logger/console_logger_spec.rb
194
+ - spec/unit/logger/syslog_logger_spec.rb
195
+ - spec/unit/matcher/parser_spec.rb
196
+ - spec/unit/matcher/scanner_spec.rb
197
+ - spec/unit/matcher_spec.rb
198
+ - spec/unit/message_spec.rb
199
+ - spec/unit/optionparser_spec.rb
200
+ - spec/unit/pluginmanager_spec.rb
201
+ - spec/unit/pluginpackager/agent_definition_spec.rb
202
+ - spec/unit/pluginpackager/standard_definition_spec.rb
203
+ - spec/unit/pluginpackager_spec.rb
204
+ - spec/unit/plugins/mcollective/aggregate/average_spec.rb
205
+ - spec/unit/plugins/mcollective/aggregate/sum_spec.rb
206
+ - spec/unit/plugins/mcollective/aggregate/summary_spec.rb
205
207
  - spec/unit/plugins/mcollective/connector/activemq_spec.rb
208
+ - spec/unit/plugins/mcollective/connector/rabbitmq_spec.rb
206
209
  - spec/unit/plugins/mcollective/connector/stomp/eventlogger_spec.rb
207
210
  - spec/unit/plugins/mcollective/connector/stomp_spec.rb
208
- - spec/unit/plugins/mcollective/aggregate/sum_spec.rb
209
- - spec/unit/plugins/mcollective/aggregate/average_spec.rb
210
- - spec/unit/plugins/mcollective/aggregate/summary_spec.rb
211
+ - spec/unit/plugins/mcollective/data/agent_data_spec.rb
212
+ - spec/unit/plugins/mcollective/data/fstat_data_spec.rb
211
213
  - spec/unit/plugins/mcollective/discovery/flatfile_spec.rb
212
214
  - spec/unit/plugins/mcollective/discovery/mc_spec.rb
213
215
  - spec/unit/plugins/mcollective/packagers/debpackage_packager_spec.rb
214
216
  - spec/unit/plugins/mcollective/packagers/ospackage_spec.rb
215
217
  - spec/unit/plugins/mcollective/packagers/rpmpackage_packager_spec.rb
216
218
  - spec/unit/plugins/mcollective/security/psk_spec.rb
217
- - spec/unit/plugins/mcollective/data/fstat_data_spec.rb
218
- - spec/unit/plugins/mcollective/data/agent_data_spec.rb
219
- - spec/unit/plugins/mcollective/validator/regex_validator_spec.rb
220
- - spec/unit/plugins/mcollective/validator/shellsafe_validator_spec.rb
219
+ - spec/unit/plugins/mcollective/validator/array_validator_spec.rb
221
220
  - spec/unit/plugins/mcollective/validator/ipv4address_validator_spec.rb
222
- - spec/unit/plugins/mcollective/validator/typecheck_validator_spec.rb
223
221
  - spec/unit/plugins/mcollective/validator/ipv6address_validator_spec.rb
224
- - spec/unit/plugins/mcollective/validator/array_validator_spec.rb
225
222
  - spec/unit/plugins/mcollective/validator/length_validator_spec.rb
226
- - spec/unit/pluginpackager_spec.rb
223
+ - spec/unit/plugins/mcollective/validator/regex_validator_spec.rb
224
+ - spec/unit/plugins/mcollective/validator/shellsafe_validator_spec.rb
225
+ - spec/unit/plugins/mcollective/validator/typecheck_validator_spec.rb
227
226
  - spec/unit/registration/base_spec.rb
228
- - spec/unit/agents_spec.rb
229
- - spec/unit/security/base_spec.rb
230
- - spec/unit/vendor_spec.rb
231
- - spec/unit/message_spec.rb
227
+ - spec/unit/rpc/actionrunner_spec.rb
228
+ - spec/unit/rpc/agent_spec.rb
229
+ - spec/unit/rpc/client_spec.rb
230
+ - spec/unit/rpc/helpers_spec.rb
231
+ - spec/unit/rpc/reply_spec.rb
232
+ - spec/unit/rpc/request_spec.rb
233
+ - spec/unit/rpc/result_spec.rb
234
+ - spec/unit/rpc/stats_spec.rb
232
235
  - spec/unit/rpc_spec.rb
233
- - spec/unit/data/base_spec.rb
234
- - spec/unit/data/result_spec.rb
235
- - spec/unit/matcher_spec.rb
236
- - spec/unit/log_spec.rb
237
- - spec/unit/aggregate_spec.rb
238
- - spec/unit/facts_spec.rb
236
+ - spec/unit/runnerstats_spec.rb
237
+ - spec/unit/security/base_spec.rb
239
238
  - spec/unit/shell_spec.rb
240
- - spec/unit/pluginmanager_spec.rb
241
- - spec/unit/discovery_spec.rb
242
- - spec/unit/matcher/parser_spec.rb
243
- - spec/unit/matcher/scanner_spec.rb
239
+ - spec/unit/ssl_spec.rb
240
+ - spec/unit/string_spec.rb
244
241
  - spec/unit/symbol_spec.rb
242
+ - spec/unit/unix_daemon_spec.rb
245
243
  - spec/unit/util_spec.rb
244
+ - spec/unit/validator_spec.rb
245
+ - spec/unit/vendor_spec.rb
246
+ - spec/unit/windows_daemon_spec.rb
246
247
  - spec/windows_spec.opts
247
- - spec/spec_helper.rb
248
- - spec/monkey_patches/instance_variable_defined.rb
249
- - spec/Rakefile
250
248
  homepage: https://docs.puppetlabs.com/mcollective/
251
249
  licenses: []
252
-
253
250
  post_install_message:
254
251
  rdoc_options: []
255
-
256
- require_paths:
252
+ require_paths:
257
253
  - lib
258
- required_ruby_version: !ruby/object:Gem::Requirement
254
+ required_ruby_version: !ruby/object:Gem::Requirement
259
255
  none: false
260
- requirements:
261
- - - ">="
262
- - !ruby/object:Gem::Version
263
- hash: 3
264
- segments:
265
- - 0
266
- version: "0"
267
- required_rubygems_version: !ruby/object:Gem::Requirement
256
+ requirements:
257
+ - - ! '>='
258
+ - !ruby/object:Gem::Version
259
+ version: '0'
260
+ required_rubygems_version: !ruby/object:Gem::Requirement
268
261
  none: false
269
- requirements:
270
- - - ">="
271
- - !ruby/object:Gem::Version
272
- hash: 3
273
- segments:
274
- - 0
275
- version: "0"
262
+ requirements:
263
+ - - ! '>='
264
+ - !ruby/object:Gem::Version
265
+ version: '0'
276
266
  requirements: []
277
-
278
267
  rubyforge_project:
279
- rubygems_version: 1.8.11
268
+ rubygems_version: 1.8.24
280
269
  signing_key:
281
270
  specification_version: 3
282
271
  summary: Client libraries for The Marionette Collective
283
- test_files:
284
- - spec/spec.opts
285
- - spec/fixtures/test-public.pem
272
+ test_files:
286
273
  - spec/fixtures/application/test.rb
287
- - spec/fixtures/test-private.pem
288
274
  - spec/fixtures/test-cert.pem
275
+ - spec/fixtures/test-private.pem
276
+ - spec/fixtures/test-public.pem
289
277
  - spec/fixtures/util/1.in
290
- - spec/fixtures/util/4.in
291
278
  - spec/fixtures/util/1.out
292
- - spec/fixtures/util/3.in
293
279
  - spec/fixtures/util/2.in
294
280
  - spec/fixtures/util/2.out
295
- - spec/fixtures/util/4.out
281
+ - spec/fixtures/util/3.in
296
282
  - spec/fixtures/util/3.out
297
- - spec/unit/data_spec.rb
298
- - spec/unit/application_spec.rb
299
- - spec/unit/ddl_spec.rb
283
+ - spec/fixtures/util/4.in
284
+ - spec/fixtures/util/4.out
285
+ - spec/monkey_patches/instance_variable_defined.rb
286
+ - spec/Rakefile
287
+ - spec/spec.opts
288
+ - spec/spec_helper.rb
289
+ - spec/unit/agents_spec.rb
300
290
  - spec/unit/aggregate/base_spec.rb
301
291
  - spec/unit/aggregate/result/base_spec.rb
302
- - spec/unit/aggregate/result/numeric_result_spec.rb
303
292
  - spec/unit/aggregate/result/collection_result_spec.rb
304
- - spec/unit/client_spec.rb
305
- - spec/unit/unix_daemon_spec.rb
306
- - spec/unit/facts/base_spec.rb
293
+ - spec/unit/aggregate/result/numeric_result_spec.rb
294
+ - spec/unit/aggregate_spec.rb
295
+ - spec/unit/application_spec.rb
296
+ - spec/unit/applications_spec.rb
307
297
  - spec/unit/array_spec.rb
308
- - spec/unit/rpc/reply_spec.rb
309
- - spec/unit/rpc/client_spec.rb
310
- - spec/unit/rpc/helpers_spec.rb
311
- - spec/unit/rpc/request_spec.rb
312
- - spec/unit/rpc/agent_spec.rb
313
- - spec/unit/rpc/result_spec.rb
314
- - spec/unit/rpc/actionrunner_spec.rb
315
- - spec/unit/rpc/stats_spec.rb
316
- - spec/unit/windows_daemon_spec.rb
317
298
  - spec/unit/cache_spec.rb
318
- - spec/unit/optionparser_spec.rb
319
- - spec/unit/string_spec.rb
320
- - spec/unit/pluginpackager/agent_definition_spec.rb
321
- - spec/unit/pluginpackager/standard_definition_spec.rb
322
- - spec/unit/ssl_spec.rb
299
+ - spec/unit/client_spec.rb
323
300
  - spec/unit/config_spec.rb
324
- - spec/unit/applications_spec.rb
325
- - spec/unit/validator_spec.rb
326
- - spec/unit/runnerstats_spec.rb
301
+ - spec/unit/data/base_spec.rb
302
+ - spec/unit/data/result_spec.rb
303
+ - spec/unit/data_spec.rb
304
+ - spec/unit/ddl/agentddl_spec.rb
327
305
  - spec/unit/ddl/base_spec.rb
328
306
  - spec/unit/ddl/dataddl_spec.rb
329
- - spec/unit/ddl/agentddl_spec.rb
330
307
  - spec/unit/ddl/discoveryddl_spec.rb
331
- - spec/unit/logger/console_logger_spec.rb
332
- - spec/unit/logger/base_spec.rb
333
- - spec/unit/logger/syslog_logger_spec.rb
308
+ - spec/unit/ddl_spec.rb
309
+ - spec/unit/discovery_spec.rb
310
+ - spec/unit/facts/base_spec.rb
311
+ - spec/unit/facts_spec.rb
334
312
  - spec/unit/generators/agent_generator_spec.rb
335
- - spec/unit/generators/snippets/agent_ddl
336
- - spec/unit/generators/snippets/data_ddl
337
313
  - spec/unit/generators/base_spec.rb
338
314
  - spec/unit/generators/data_generator_spec.rb
339
- - spec/unit/plugins/mcollective/connector/rabbitmq_spec.rb
315
+ - spec/unit/generators/snippets/agent_ddl
316
+ - spec/unit/generators/snippets/data_ddl
317
+ - spec/unit/log_spec.rb
318
+ - spec/unit/logger/base_spec.rb
319
+ - spec/unit/logger/console_logger_spec.rb
320
+ - spec/unit/logger/syslog_logger_spec.rb
321
+ - spec/unit/matcher/parser_spec.rb
322
+ - spec/unit/matcher/scanner_spec.rb
323
+ - spec/unit/matcher_spec.rb
324
+ - spec/unit/message_spec.rb
325
+ - spec/unit/optionparser_spec.rb
326
+ - spec/unit/pluginmanager_spec.rb
327
+ - spec/unit/pluginpackager/agent_definition_spec.rb
328
+ - spec/unit/pluginpackager/standard_definition_spec.rb
329
+ - spec/unit/pluginpackager_spec.rb
330
+ - spec/unit/plugins/mcollective/aggregate/average_spec.rb
331
+ - spec/unit/plugins/mcollective/aggregate/sum_spec.rb
332
+ - spec/unit/plugins/mcollective/aggregate/summary_spec.rb
340
333
  - spec/unit/plugins/mcollective/connector/activemq_spec.rb
334
+ - spec/unit/plugins/mcollective/connector/rabbitmq_spec.rb
341
335
  - spec/unit/plugins/mcollective/connector/stomp/eventlogger_spec.rb
342
336
  - spec/unit/plugins/mcollective/connector/stomp_spec.rb
343
- - spec/unit/plugins/mcollective/aggregate/sum_spec.rb
344
- - spec/unit/plugins/mcollective/aggregate/average_spec.rb
345
- - spec/unit/plugins/mcollective/aggregate/summary_spec.rb
337
+ - spec/unit/plugins/mcollective/data/agent_data_spec.rb
338
+ - spec/unit/plugins/mcollective/data/fstat_data_spec.rb
346
339
  - spec/unit/plugins/mcollective/discovery/flatfile_spec.rb
347
340
  - spec/unit/plugins/mcollective/discovery/mc_spec.rb
348
341
  - spec/unit/plugins/mcollective/packagers/debpackage_packager_spec.rb
349
342
  - spec/unit/plugins/mcollective/packagers/ospackage_spec.rb
350
343
  - spec/unit/plugins/mcollective/packagers/rpmpackage_packager_spec.rb
351
344
  - spec/unit/plugins/mcollective/security/psk_spec.rb
352
- - spec/unit/plugins/mcollective/data/fstat_data_spec.rb
353
- - spec/unit/plugins/mcollective/data/agent_data_spec.rb
354
- - spec/unit/plugins/mcollective/validator/regex_validator_spec.rb
355
- - spec/unit/plugins/mcollective/validator/shellsafe_validator_spec.rb
345
+ - spec/unit/plugins/mcollective/validator/array_validator_spec.rb
356
346
  - spec/unit/plugins/mcollective/validator/ipv4address_validator_spec.rb
357
- - spec/unit/plugins/mcollective/validator/typecheck_validator_spec.rb
358
347
  - spec/unit/plugins/mcollective/validator/ipv6address_validator_spec.rb
359
- - spec/unit/plugins/mcollective/validator/array_validator_spec.rb
360
348
  - spec/unit/plugins/mcollective/validator/length_validator_spec.rb
361
- - spec/unit/pluginpackager_spec.rb
349
+ - spec/unit/plugins/mcollective/validator/regex_validator_spec.rb
350
+ - spec/unit/plugins/mcollective/validator/shellsafe_validator_spec.rb
351
+ - spec/unit/plugins/mcollective/validator/typecheck_validator_spec.rb
362
352
  - spec/unit/registration/base_spec.rb
363
- - spec/unit/agents_spec.rb
364
- - spec/unit/security/base_spec.rb
365
- - spec/unit/vendor_spec.rb
366
- - spec/unit/message_spec.rb
353
+ - spec/unit/rpc/actionrunner_spec.rb
354
+ - spec/unit/rpc/agent_spec.rb
355
+ - spec/unit/rpc/client_spec.rb
356
+ - spec/unit/rpc/helpers_spec.rb
357
+ - spec/unit/rpc/reply_spec.rb
358
+ - spec/unit/rpc/request_spec.rb
359
+ - spec/unit/rpc/result_spec.rb
360
+ - spec/unit/rpc/stats_spec.rb
367
361
  - spec/unit/rpc_spec.rb
368
- - spec/unit/data/base_spec.rb
369
- - spec/unit/data/result_spec.rb
370
- - spec/unit/matcher_spec.rb
371
- - spec/unit/log_spec.rb
372
- - spec/unit/aggregate_spec.rb
373
- - spec/unit/facts_spec.rb
362
+ - spec/unit/runnerstats_spec.rb
363
+ - spec/unit/security/base_spec.rb
374
364
  - spec/unit/shell_spec.rb
375
- - spec/unit/pluginmanager_spec.rb
376
- - spec/unit/discovery_spec.rb
377
- - spec/unit/matcher/parser_spec.rb
378
- - spec/unit/matcher/scanner_spec.rb
365
+ - spec/unit/ssl_spec.rb
366
+ - spec/unit/string_spec.rb
379
367
  - spec/unit/symbol_spec.rb
368
+ - spec/unit/unix_daemon_spec.rb
380
369
  - spec/unit/util_spec.rb
370
+ - spec/unit/validator_spec.rb
371
+ - spec/unit/vendor_spec.rb
372
+ - spec/unit/windows_daemon_spec.rb
381
373
  - spec/windows_spec.opts
382
- - spec/spec_helper.rb
383
- - spec/monkey_patches/instance_variable_defined.rb
384
- - spec/Rakefile