appsignal 0.11.1 → 0.11.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|