sonar_connector 0.8.5
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.
- data/LICENSE +20 -0
- data/README.rdoc +18 -0
- data/Rakefile +41 -0
- data/VERSION +1 -0
- data/bin/sonar-connector +69 -0
- data/config/config.example.json +82 -0
- data/lib/sonar_connector.rb +40 -0
- data/lib/sonar_connector/commands/command.rb +21 -0
- data/lib/sonar_connector/commands/commit_seppuku_command.rb +15 -0
- data/lib/sonar_connector/commands/increment_status_value_command.rb +14 -0
- data/lib/sonar_connector/commands/send_admin_email_command.rb +12 -0
- data/lib/sonar_connector/commands/update_disk_usage_command.rb +13 -0
- data/lib/sonar_connector/commands/update_status_command.rb +16 -0
- data/lib/sonar_connector/config.rb +166 -0
- data/lib/sonar_connector/connectors/base.rb +243 -0
- data/lib/sonar_connector/connectors/dummy_connector.rb +17 -0
- data/lib/sonar_connector/connectors/seppuku_connector.rb +26 -0
- data/lib/sonar_connector/consumer.rb +94 -0
- data/lib/sonar_connector/controller.rb +164 -0
- data/lib/sonar_connector/emailer.rb +16 -0
- data/lib/sonar_connector/rspec/spec_helper.rb +61 -0
- data/lib/sonar_connector/status.rb +43 -0
- data/lib/sonar_connector/utils.rb +39 -0
- data/script/console +10 -0
- data/spec/sonar_connector/commands/command_spec.rb +34 -0
- data/spec/sonar_connector/commands/commit_seppuku_command_spec.rb +25 -0
- data/spec/sonar_connector/commands/increment_status_value_command_spec.rb +25 -0
- data/spec/sonar_connector/commands/send_admin_email_command_spec.rb +14 -0
- data/spec/sonar_connector/commands/update_disk_usage_command_spec.rb +21 -0
- data/spec/sonar_connector/commands/update_status_command_spec.rb +24 -0
- data/spec/sonar_connector/config_spec.rb +93 -0
- data/spec/sonar_connector/connectors/base_spec.rb +207 -0
- data/spec/sonar_connector/connectors/dummy_connector_spec.rb +22 -0
- data/spec/sonar_connector/connectors/seppuku_connector_spec.rb +37 -0
- data/spec/sonar_connector/consumer_spec.rb +116 -0
- data/spec/sonar_connector/controller_spec.rb +46 -0
- data/spec/sonar_connector/emailer_spec.rb +36 -0
- data/spec/sonar_connector/status_spec.rb +78 -0
- data/spec/sonar_connector/utils_spec.rb +62 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +6 -0
- metadata +235 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sonar::Connector::DummyConnector do
|
4
|
+
before do
|
5
|
+
setup_valid_config_file
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "action" do
|
9
|
+
before do
|
10
|
+
@base_config = Sonar::Connector::Config.load(valid_config_filename)
|
11
|
+
@config = {'name'=>'foo', 'repeat_delay'=> 5}
|
12
|
+
@connector = Sonar::Connector::DummyConnector.new(@config, @base_config)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should log a quirky debug message" do
|
16
|
+
mock(@connector.log).debug(anything) do |param|
|
17
|
+
param.should match(/mumbled incoherently to itself/)
|
18
|
+
end
|
19
|
+
@connector.action
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sonar::Connector::SeppukuConnector do
|
4
|
+
before do
|
5
|
+
setup_valid_config_file
|
6
|
+
@base_config = Sonar::Connector::Config.load(valid_config_filename)
|
7
|
+
@config = {'name'=>'foo', 'repeat_delay'=> 5}
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "parse" do
|
11
|
+
it "should set up a run counter" do
|
12
|
+
@connector = Sonar::Connector::SeppukuConnector.new(@config, @base_config)
|
13
|
+
@connector.run_count.should == 0
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "action" do
|
18
|
+
before do
|
19
|
+
@connector = Sonar::Connector::SeppukuConnector.new(@config, @base_config)
|
20
|
+
@queue = []
|
21
|
+
stub(@connector).queue{@queue}
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should not issue seppuku command on 1st execution" do
|
25
|
+
stub(Sonar::Connector::CommitSeppukuCommand).new
|
26
|
+
@connector.action
|
27
|
+
Sonar::Connector::CommitSeppukuCommand.should_not have_received.new
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should issue seppuku command on 2nd execution" do
|
31
|
+
stub(Sonar::Connector::CommitSeppukuCommand).new
|
32
|
+
@connector.action
|
33
|
+
@connector.action
|
34
|
+
Sonar::Connector::CommitSeppukuCommand.should have_received.new
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sonar::Connector::Consumer do
|
4
|
+
|
5
|
+
describe Sonar::Connector::ExecutionContext do
|
6
|
+
before do
|
7
|
+
@log = Object.new
|
8
|
+
@status = Object.new
|
9
|
+
@controller = Object.new
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "initialize" do
|
13
|
+
it "should set logger" do
|
14
|
+
ec = Sonar::Connector::ExecutionContext.new(:log=>@log)
|
15
|
+
ec.log.should == @log
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should set status" do
|
19
|
+
ec = Sonar::Connector::ExecutionContext.new(:status=>@status)
|
20
|
+
ec.status.should == @status
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should set controller" do
|
24
|
+
Sonar::Connector::ExecutionContext.new(:controller=>@controller).controller.should == @controller
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "watch" do
|
30
|
+
|
31
|
+
# create a new anonymous Sonar::Connector::Command descendant class
|
32
|
+
def new_command_class(name)
|
33
|
+
new_anon_class(Sonar::Connector::Command, name){
|
34
|
+
def initialize(message)
|
35
|
+
l = lambda do
|
36
|
+
log.info message
|
37
|
+
end
|
38
|
+
super(l)
|
39
|
+
end
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
before do
|
44
|
+
setup_valid_config_file
|
45
|
+
@controller = Sonar::Connector::Controller.new(valid_config_filename)
|
46
|
+
@consumer = Sonar::Connector::Consumer.new(@controller, @controller.config)
|
47
|
+
@kommand = new_command_class("DummyCommand")
|
48
|
+
@queue = Queue.new
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should execute items on the queue" do
|
52
|
+
k1 = @kommand.new("some message")
|
53
|
+
k2 = @kommand.new("another message")
|
54
|
+
|
55
|
+
mock(k1).execute(anything)
|
56
|
+
mock(k2).execute(anything)
|
57
|
+
|
58
|
+
@queue << k1
|
59
|
+
@queue << k2
|
60
|
+
|
61
|
+
# set up the run order
|
62
|
+
mock(@consumer) do
|
63
|
+
run(){true}
|
64
|
+
run(){true}
|
65
|
+
run(){false}
|
66
|
+
end
|
67
|
+
|
68
|
+
@consumer.prepare(@queue)
|
69
|
+
@consumer.watch
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should handle uncaught exceptions thrown by a command" do
|
73
|
+
k1 = @kommand.new("some message")
|
74
|
+
k2 = @kommand.new("another message")
|
75
|
+
|
76
|
+
mock(k1).execute(anything){
|
77
|
+
raise "command raised an uncaught exception"
|
78
|
+
}
|
79
|
+
mock(k2).execute(anything)
|
80
|
+
|
81
|
+
@queue << k1
|
82
|
+
@queue << k2
|
83
|
+
|
84
|
+
# set up the run order
|
85
|
+
mock(@consumer) do
|
86
|
+
run(){true}
|
87
|
+
run(){true}
|
88
|
+
run(){false}
|
89
|
+
end
|
90
|
+
|
91
|
+
@consumer.prepare(@queue)
|
92
|
+
@consumer.watch
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should terminate on ThreadTerminator exception" do
|
96
|
+
k1 = @kommand.new("some message")
|
97
|
+
k2 = @kommand.new("some other message - this will never get processed")
|
98
|
+
|
99
|
+
mock(k1).execute(anything){
|
100
|
+
raise Sonar::Connector::ThreadTerminator.new
|
101
|
+
}
|
102
|
+
|
103
|
+
dont_allow(k2).execute
|
104
|
+
|
105
|
+
mock.proxy(@consumer).cleanup
|
106
|
+
|
107
|
+
@queue << k1
|
108
|
+
@queue << k2
|
109
|
+
|
110
|
+
@consumer.prepare(@queue)
|
111
|
+
@consumer.watch
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sonar::Connector::Controller do
|
4
|
+
|
5
|
+
before do
|
6
|
+
setup_valid_config_file
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "new" do
|
10
|
+
before do
|
11
|
+
@controller = Sonar::Connector::Controller.new(valid_config_filename)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should assign a logger" do
|
15
|
+
@controller.log.should be_instance_of(Logger)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should assign a queue" do
|
19
|
+
@controller.queue.should be_instance_of(Queue)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "start" do
|
24
|
+
before do
|
25
|
+
|
26
|
+
# Add another connector so we have two in total
|
27
|
+
@config_options["connectors"] << {
|
28
|
+
"class" => "Sonar::Connector::DummyConnector",
|
29
|
+
"name" => "dummy2",
|
30
|
+
"repeat_delay" => 10
|
31
|
+
}
|
32
|
+
|
33
|
+
@controller = Sonar::Connector::Controller.new(valid_config_filename)
|
34
|
+
@controller.connectors.count.should == 2
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should invoke a thread for each connector plus one for the consumer" do
|
38
|
+
t = Object.new
|
39
|
+
stub(t).join(){true}
|
40
|
+
mock(@controller).endless_sleep(){nil}
|
41
|
+
mock(Thread).new().times(3){t} # once per conector and one for the consumer
|
42
|
+
@controller.start
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sonar::Connector::Emailer do
|
4
|
+
before do
|
5
|
+
setup_valid_config_file
|
6
|
+
@base_config = Sonar::Connector::Config.load(valid_config_filename)
|
7
|
+
@status = Sonar::Connector::Status.new(@base_config)
|
8
|
+
|
9
|
+
@connector = Object.new
|
10
|
+
mock(@connector).name(){ "foo_connector" }
|
11
|
+
|
12
|
+
ActionMailer::Base.deliveries = []
|
13
|
+
ActionMailer::Base.delivery_method.should == :test
|
14
|
+
ActionMailer::Base.perform_deliveries.should be_true
|
15
|
+
@email = Sonar::Connector::Emailer.create_admin_message(@connector, "the important message")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should send" do
|
19
|
+
lambda{
|
20
|
+
Sonar::Connector::Emailer.deliver(@email)
|
21
|
+
}.should change{ActionMailer::Base.deliveries.size}.by(1)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should have correct sender" do
|
25
|
+
@email.from.should == @base_config.email_settings["admin_sender"].to_a
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should have correct recipient" do
|
29
|
+
@email.to.should == @base_config.email_settings["admin_recipients"].to_a
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should have the message and connector name in the body" do
|
33
|
+
@email.body.should match(/foo_connector/)
|
34
|
+
@email.body.should match(/the important message/)
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sonar::Connector::Status do
|
4
|
+
before do
|
5
|
+
setup_valid_config_file
|
6
|
+
@base_config = Sonar::Connector::Config.load(valid_config_filename)
|
7
|
+
@status = Sonar::Connector::Status.new(@base_config)
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "initialize" do
|
11
|
+
it "should load status" do
|
12
|
+
@status.send(:status).should be_instance_of(Hash)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "[]" do
|
17
|
+
it "should access the group" do
|
18
|
+
@status.set("group", "key", "value")
|
19
|
+
@status["group"]["key"].should == "value"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "[]=" do
|
24
|
+
it "should set the group" do
|
25
|
+
@status["group"].should be_nil
|
26
|
+
@status["group"] = {"key" => "value"}
|
27
|
+
@status["group"]["key"].should == "value"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "load_status" do
|
32
|
+
it "should load yml file if it exists" do
|
33
|
+
mock(YAML).load_file(@base_config.status_file){ {:foo=>:bar} }
|
34
|
+
|
35
|
+
@status[:foo].should be_nil
|
36
|
+
@status.load_status
|
37
|
+
@status[:foo].should == :bar
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "save_status" do
|
42
|
+
it "should save serialised status" do
|
43
|
+
@status.set "group", "key", "value"
|
44
|
+
@status.save_status
|
45
|
+
@status.send(:status=, {})
|
46
|
+
|
47
|
+
@status["group"].should be_nil
|
48
|
+
@status.load_status
|
49
|
+
@status["group"]["key"].should == "value"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "set" do
|
54
|
+
it "should initialize the group hash if it doesn't exist" do
|
55
|
+
@status["group"] = nil
|
56
|
+
@status.set "group", "key", "value"
|
57
|
+
@status["group"].should be_instance_of(Hash)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should set key and value" do
|
61
|
+
@status["group"].should be_nil
|
62
|
+
@status.set("group", "key", "value")
|
63
|
+
@status["group"]["key"].should == "value"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should update the timestamp" do
|
67
|
+
now = Time.now
|
68
|
+
stub(Time).now{now}
|
69
|
+
@status.set("group", "key", "value")
|
70
|
+
@status["group"]["last_updated"] = nil
|
71
|
+
@status["group"]["last_updated"].should be_nil
|
72
|
+
|
73
|
+
@status.set("group", "key", "value")
|
74
|
+
@status["group"]["last_updated"].should == now.to_s
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sonar::Connector::Utils do
|
4
|
+
describe "du" do
|
5
|
+
before do
|
6
|
+
@test_dir = File.join(base_dir, 'test_du_dir')
|
7
|
+
FileUtils.mkdir_p @test_dir
|
8
|
+
end
|
9
|
+
|
10
|
+
after do
|
11
|
+
FileUtils.rm_rf @test_dir
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should return error if it's not a directory" do
|
15
|
+
lambda{
|
16
|
+
Sonar::Connector::Utils.du('some bad dir')
|
17
|
+
}.should raise_error(/not a directory/)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return zero for an empty dir" do
|
21
|
+
Dir[ File.join(@test_dir, '*') ].should == []
|
22
|
+
Sonar::Connector::Utils.du(@test_dir).should == 0
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should sum up filesizes" do
|
26
|
+
sizes = [0, 1, 20, 3000, 40001]
|
27
|
+
|
28
|
+
# create files of different sizes in the test dir
|
29
|
+
sizes.each_with_index do |s,i|
|
30
|
+
name = File.join(@test_dir, "#{i}.txt")
|
31
|
+
File.open(name, 'w'){|f| f << (0...s).map{65.+(rand(25)).chr}.join }
|
32
|
+
end
|
33
|
+
|
34
|
+
Sonar::Connector::Utils.du(@test_dir).should == sizes.sum
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should glob subdirs" do
|
38
|
+
depth = 5
|
39
|
+
sizes = [30, 40, 400, 500]
|
40
|
+
sizes.each_with_index do |s, i|
|
41
|
+
dir = File.join @test_dir, *(0...depth).map{i.to_s}
|
42
|
+
FileUtils.mkdir_p dir
|
43
|
+
name = File.join dir, 'file.txt'
|
44
|
+
File.open(name, 'w'){|f| f << (0...s).map{65.+(rand(25)).chr}.join }
|
45
|
+
end
|
46
|
+
Sonar::Connector::Utils.du(@test_dir).should == sizes.sum
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "stdout_logger" do
|
51
|
+
it "should return a logger" do
|
52
|
+
pending
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "disk_logger" do
|
57
|
+
it "should return a logger" do
|
58
|
+
pending
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,235 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sonar_connector
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 53
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 8
|
9
|
+
- 5
|
10
|
+
version: 0.8.5
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Peter MacRobert
|
14
|
+
- Mark Meyer
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2011-03-25 00:00:00 +00:00
|
20
|
+
default_executable: sonar-connector
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: actionmailer
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - "="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 23
|
31
|
+
segments:
|
32
|
+
- 2
|
33
|
+
- 3
|
34
|
+
- 10
|
35
|
+
version: 2.3.10
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: actionmailer_extensions
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
hash: 11
|
47
|
+
segments:
|
48
|
+
- 0
|
49
|
+
- 4
|
50
|
+
- 2
|
51
|
+
version: 0.4.2
|
52
|
+
type: :runtime
|
53
|
+
version_requirements: *id002
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: json_pure
|
56
|
+
prerelease: false
|
57
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
hash: 27
|
63
|
+
segments:
|
64
|
+
- 1
|
65
|
+
- 2
|
66
|
+
- 2
|
67
|
+
version: 1.2.2
|
68
|
+
type: :runtime
|
69
|
+
version_requirements: *id003
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: uuidtools
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
hash: 9
|
79
|
+
segments:
|
80
|
+
- 2
|
81
|
+
- 1
|
82
|
+
- 1
|
83
|
+
version: 2.1.1
|
84
|
+
type: :runtime
|
85
|
+
version_requirements: *id004
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: sonar_connector_filestore
|
88
|
+
prerelease: false
|
89
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
hash: 27
|
95
|
+
segments:
|
96
|
+
- 0
|
97
|
+
- 1
|
98
|
+
- 0
|
99
|
+
version: 0.1.0
|
100
|
+
type: :runtime
|
101
|
+
version_requirements: *id005
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: rspec
|
104
|
+
prerelease: false
|
105
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
hash: 15
|
111
|
+
segments:
|
112
|
+
- 1
|
113
|
+
- 2
|
114
|
+
- 8
|
115
|
+
version: 1.2.8
|
116
|
+
type: :development
|
117
|
+
version_requirements: *id006
|
118
|
+
- !ruby/object:Gem::Dependency
|
119
|
+
name: rr
|
120
|
+
prerelease: false
|
121
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ">="
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
hash: 61
|
127
|
+
segments:
|
128
|
+
- 0
|
129
|
+
- 10
|
130
|
+
- 5
|
131
|
+
version: 0.10.5
|
132
|
+
type: :development
|
133
|
+
version_requirements: *id007
|
134
|
+
description: Framework that allows arbitrary push and pull connectors to send data to an instance of the Trampoline SONAR server
|
135
|
+
email: hello@empire42.com
|
136
|
+
executables:
|
137
|
+
- sonar-connector
|
138
|
+
extensions: []
|
139
|
+
|
140
|
+
extra_rdoc_files:
|
141
|
+
- LICENSE
|
142
|
+
- README.rdoc
|
143
|
+
files:
|
144
|
+
- LICENSE
|
145
|
+
- README.rdoc
|
146
|
+
- Rakefile
|
147
|
+
- VERSION
|
148
|
+
- bin/sonar-connector
|
149
|
+
- config/config.example.json
|
150
|
+
- lib/sonar_connector.rb
|
151
|
+
- lib/sonar_connector/commands/command.rb
|
152
|
+
- lib/sonar_connector/commands/commit_seppuku_command.rb
|
153
|
+
- lib/sonar_connector/commands/increment_status_value_command.rb
|
154
|
+
- lib/sonar_connector/commands/send_admin_email_command.rb
|
155
|
+
- lib/sonar_connector/commands/update_disk_usage_command.rb
|
156
|
+
- lib/sonar_connector/commands/update_status_command.rb
|
157
|
+
- lib/sonar_connector/config.rb
|
158
|
+
- lib/sonar_connector/connectors/base.rb
|
159
|
+
- lib/sonar_connector/connectors/dummy_connector.rb
|
160
|
+
- lib/sonar_connector/connectors/seppuku_connector.rb
|
161
|
+
- lib/sonar_connector/consumer.rb
|
162
|
+
- lib/sonar_connector/controller.rb
|
163
|
+
- lib/sonar_connector/emailer.rb
|
164
|
+
- lib/sonar_connector/rspec/spec_helper.rb
|
165
|
+
- lib/sonar_connector/status.rb
|
166
|
+
- lib/sonar_connector/utils.rb
|
167
|
+
- script/console
|
168
|
+
- spec/sonar_connector/commands/command_spec.rb
|
169
|
+
- spec/sonar_connector/commands/commit_seppuku_command_spec.rb
|
170
|
+
- spec/sonar_connector/commands/increment_status_value_command_spec.rb
|
171
|
+
- spec/sonar_connector/commands/send_admin_email_command_spec.rb
|
172
|
+
- spec/sonar_connector/commands/update_disk_usage_command_spec.rb
|
173
|
+
- spec/sonar_connector/commands/update_status_command_spec.rb
|
174
|
+
- spec/sonar_connector/config_spec.rb
|
175
|
+
- spec/sonar_connector/connectors/base_spec.rb
|
176
|
+
- spec/sonar_connector/connectors/dummy_connector_spec.rb
|
177
|
+
- spec/sonar_connector/connectors/seppuku_connector_spec.rb
|
178
|
+
- spec/sonar_connector/consumer_spec.rb
|
179
|
+
- spec/sonar_connector/controller_spec.rb
|
180
|
+
- spec/sonar_connector/emailer_spec.rb
|
181
|
+
- spec/sonar_connector/status_spec.rb
|
182
|
+
- spec/sonar_connector/utils_spec.rb
|
183
|
+
- spec/spec.opts
|
184
|
+
- spec/spec_helper.rb
|
185
|
+
has_rdoc: true
|
186
|
+
homepage: http://github.com/trampoline/sonar-connector
|
187
|
+
licenses: []
|
188
|
+
|
189
|
+
post_install_message:
|
190
|
+
rdoc_options: []
|
191
|
+
|
192
|
+
require_paths:
|
193
|
+
- lib
|
194
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
195
|
+
none: false
|
196
|
+
requirements:
|
197
|
+
- - ">="
|
198
|
+
- !ruby/object:Gem::Version
|
199
|
+
hash: 3
|
200
|
+
segments:
|
201
|
+
- 0
|
202
|
+
version: "0"
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
|
+
none: false
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
hash: 3
|
209
|
+
segments:
|
210
|
+
- 0
|
211
|
+
version: "0"
|
212
|
+
requirements: []
|
213
|
+
|
214
|
+
rubyforge_project:
|
215
|
+
rubygems_version: 1.6.2
|
216
|
+
signing_key:
|
217
|
+
specification_version: 3
|
218
|
+
summary: A behind-the-firewall connector for Trampoline SONAR
|
219
|
+
test_files:
|
220
|
+
- spec/sonar_connector/commands/command_spec.rb
|
221
|
+
- spec/sonar_connector/commands/commit_seppuku_command_spec.rb
|
222
|
+
- spec/sonar_connector/commands/increment_status_value_command_spec.rb
|
223
|
+
- spec/sonar_connector/commands/send_admin_email_command_spec.rb
|
224
|
+
- spec/sonar_connector/commands/update_disk_usage_command_spec.rb
|
225
|
+
- spec/sonar_connector/commands/update_status_command_spec.rb
|
226
|
+
- spec/sonar_connector/config_spec.rb
|
227
|
+
- spec/sonar_connector/connectors/base_spec.rb
|
228
|
+
- spec/sonar_connector/connectors/dummy_connector_spec.rb
|
229
|
+
- spec/sonar_connector/connectors/seppuku_connector_spec.rb
|
230
|
+
- spec/sonar_connector/consumer_spec.rb
|
231
|
+
- spec/sonar_connector/controller_spec.rb
|
232
|
+
- spec/sonar_connector/emailer_spec.rb
|
233
|
+
- spec/sonar_connector/status_spec.rb
|
234
|
+
- spec/sonar_connector/utils_spec.rb
|
235
|
+
- spec/spec_helper.rb
|