appsignal 0.11.1 → 0.11.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/benchmark.rake +75 -0
- data/lib/appsignal/agent.rb +3 -2
- data/lib/appsignal/transaction/formatter.rb +2 -1
- data/lib/appsignal/version.rb +1 -1
- data/spec/lib/appsignal/agent_spec.rb +13 -0
- data/spec/lib/appsignal/transaction/formatter_spec.rb +14 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 690d32a5f831ef2de09053cbbc8c0a1168562934
|
4
|
+
data.tar.gz: f48dd5a3f29d4a1c274a45ade89ca40a45718885
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4001537ce6a8090f5f0c5793b04d494b1ecaee02a2ce46d7672e430cf3e3dc3efe4755865fc0e790c0ec1d7ac6f0e1180a950ddecaf74e68b5d58735fe1d7ff4
|
7
|
+
data.tar.gz: c57f68c79f10dd3cbdf9ab98028dd288dda2503f4412f15c3c0353f62cce606992672170368998e6ffde58d19099a7d37b4e0b9a45d3b57fea835f01acb8adfa
|
data/CHANGELOG.md
CHANGED
data/benchmark.rake
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'appsignal'
|
2
|
+
require 'benchmark'
|
3
|
+
|
4
|
+
class ::Appsignal::Event::ActiveRecordEvent
|
5
|
+
def connection_config; {:adapter => 'mysql'}; end
|
6
|
+
end
|
7
|
+
|
8
|
+
namespace :benchmark do
|
9
|
+
task :all => [:run_inactive, :run_active] do
|
10
|
+
end
|
11
|
+
|
12
|
+
task :run_inactive do
|
13
|
+
puts 'Running with appsignal off'
|
14
|
+
ENV['APPSIGNAL_PUSH_API_KEY'] = nil
|
15
|
+
subscriber = ActiveSupport::Notifications.subscribe do |*args|
|
16
|
+
# Add a subscriber so we can track the overhead of just appsignal
|
17
|
+
end
|
18
|
+
run_benchmark
|
19
|
+
ActiveSupport::Notifications.unsubscribe(subscriber)
|
20
|
+
end
|
21
|
+
|
22
|
+
task :run_active do
|
23
|
+
puts 'Running with appsignal on'
|
24
|
+
ENV['APPSIGNAL_PUSH_API_KEY'] = 'something'
|
25
|
+
run_benchmark
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def run_benchmark
|
30
|
+
total_objects = ObjectSpace.count_objects[:TOTAL]
|
31
|
+
puts "Initializing, currently #{total_objects} objects"
|
32
|
+
Appsignal.config = Appsignal::Config.new('', 'production')
|
33
|
+
Appsignal.start
|
34
|
+
puts "Appsignal #{Appsignal.active? ? 'active' : 'not active'}"
|
35
|
+
|
36
|
+
puts 'Running 10_000 normal transactions'
|
37
|
+
puts(Benchmark.measure do
|
38
|
+
10_000.times do |i|
|
39
|
+
Appsignal::Transaction.create("transaction_#{i}", {})
|
40
|
+
|
41
|
+
ActiveSupport::Notifications.instrument('sql.active_record', :sql => 'SELECT `users`.* FROM `users` WHERE `users`.`id` = ?')
|
42
|
+
10.times do
|
43
|
+
ActiveSupport::Notifications.instrument('sql.active_record', :sql => 'SELECT `todos`.* FROM `todos` WHERE `todos`.`id` = ?')
|
44
|
+
end
|
45
|
+
|
46
|
+
ActiveSupport::Notifications.instrument('render_template.action_view', :identifier => 'app/views/home/show.html.erb') do
|
47
|
+
5.times do
|
48
|
+
ActiveSupport::Notifications.instrument('render_partial.action_view', :identifier => 'app/views/home/_piece.html.erb') do
|
49
|
+
3.times do
|
50
|
+
ActiveSupport::Notifications.instrument('cache.read')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
ActiveSupport::Notifications.instrument(
|
57
|
+
'process_action.action_controller',
|
58
|
+
:controller => 'HomeController',
|
59
|
+
:action => 'show',
|
60
|
+
:params => {:id => 1}
|
61
|
+
)
|
62
|
+
|
63
|
+
Appsignal::Transaction.complete_current!
|
64
|
+
end
|
65
|
+
end)
|
66
|
+
|
67
|
+
if Appsignal.active?
|
68
|
+
puts "Running aggregator post_processed_queue! for #{Appsignal.agent.aggregator.queue.length} transactions"
|
69
|
+
puts(Benchmark.measure do
|
70
|
+
Appsignal.agent.aggregator.post_processed_queue!.to_json
|
71
|
+
end)
|
72
|
+
end
|
73
|
+
|
74
|
+
puts "Done, currently #{ObjectSpace.count_objects[:TOTAL] - total_objects} objects created"
|
75
|
+
end
|
data/lib/appsignal/agent.rb
CHANGED
@@ -4,7 +4,7 @@ module Appsignal
|
|
4
4
|
AGGREGATOR_LIMIT = 5 # Five minutes with a sleep time of 60 seconds
|
5
5
|
|
6
6
|
attr_accessor :aggregator, :thread, :master_pid, :pid, :active, :sleep_time,
|
7
|
-
:transmitter, :subscriber, :paused, :aggregator_queue
|
7
|
+
:transmitter, :subscriber, :paused, :aggregator_queue, :revision
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
return unless Appsignal.config.active?
|
@@ -31,7 +31,8 @@ module Appsignal
|
|
31
31
|
|
32
32
|
def start_thread
|
33
33
|
Appsignal.logger.debug('Starting agent thread')
|
34
|
-
@
|
34
|
+
@revision = ENV['APP_REVISION']
|
35
|
+
@thread = Thread.new do
|
35
36
|
begin
|
36
37
|
sleep(rand(sleep_time))
|
37
38
|
loop do
|
@@ -28,7 +28,8 @@ module Appsignal
|
|
28
28
|
:kind => kind,
|
29
29
|
:time => time,
|
30
30
|
:environment => sanitized_environment,
|
31
|
-
:session_data => sanitized_session_data
|
31
|
+
:session_data => sanitized_session_data,
|
32
|
+
:revision => Appsignal.agent.revision
|
32
33
|
},
|
33
34
|
:failed => exception?
|
34
35
|
}
|
data/lib/appsignal/version.rb
CHANGED
@@ -98,6 +98,19 @@ describe Appsignal::Agent do
|
|
98
98
|
sleep 1
|
99
99
|
end
|
100
100
|
end
|
101
|
+
|
102
|
+
context "with revision" do
|
103
|
+
around do |sample|
|
104
|
+
ENV['APP_REVISION'] = 'abc'
|
105
|
+
sample.run
|
106
|
+
ENV['APP_REVISION'] = nil
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should set the revision" do
|
110
|
+
subject.start_thread
|
111
|
+
expect( subject.revision ).to eql 'abc'
|
112
|
+
end
|
113
|
+
end
|
101
114
|
end
|
102
115
|
|
103
116
|
describe "#restart_thread" do
|
@@ -27,6 +27,7 @@ describe Appsignal::Transaction::Formatter do
|
|
27
27
|
:kind => "http_request",
|
28
28
|
:path => "/foo",
|
29
29
|
:session_data => {},
|
30
|
+
:revision => nil,
|
30
31
|
:time => 1389783600.0,
|
31
32
|
} }
|
32
33
|
its([:events]) { should be_nil }
|
@@ -44,6 +45,17 @@ describe Appsignal::Transaction::Formatter do
|
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
48
|
+
context "when the APP_REVISION environment variable is present" do
|
49
|
+
let(:transaction) { regular_transaction }
|
50
|
+
before do
|
51
|
+
Appsignal.agent.stub(:revision => 'foo')
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should store the APP_REVISION" do
|
55
|
+
subject.to_hash[:log_entry][:revision].should == 'foo'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
47
59
|
context "with an exception request" do
|
48
60
|
let(:transaction) { transaction_with_exception }
|
49
61
|
|
@@ -107,6 +119,7 @@ describe Appsignal::Transaction::Formatter do
|
|
107
119
|
:kind => "http_request",
|
108
120
|
:path => "/blog",
|
109
121
|
:session_data => {},
|
122
|
+
:revision => nil,
|
110
123
|
:time => 1389783600.0,
|
111
124
|
:db_runtime => 500,
|
112
125
|
:view_runtime => 500,
|
@@ -171,6 +184,7 @@ describe Appsignal::Transaction::Formatter do
|
|
171
184
|
:kind => "background_job",
|
172
185
|
:path => "/foo",
|
173
186
|
:session_data => {},
|
187
|
+
:revision => nil,
|
174
188
|
:time => 1389783600.0,
|
175
189
|
} }
|
176
190
|
its([:failed]) { should be_false }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appsignal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Beekman
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2015-01-12 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rack
|
@@ -129,6 +129,7 @@ files:
|
|
129
129
|
- README.md
|
130
130
|
- Rakefile
|
131
131
|
- appsignal.gemspec
|
132
|
+
- benchmark.rake
|
132
133
|
- bin/appsignal
|
133
134
|
- gemfiles/capistrano2.gemfile
|
134
135
|
- gemfiles/capistrano3.gemfile
|