strelka-newrelic 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,169 @@
1
+ # -*- ruby -*-
2
+ # vim: set nosta noet ts=4 sw=4:
3
+ # encoding: utf-8
4
+
5
+ BEGIN {
6
+ require 'pathname'
7
+ basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
8
+
9
+ srcdir = basedir.parent
10
+ strelkadir = srcdir + 'Strelka/lib'
11
+
12
+ nradir = basedir.parent.parent + 'newrelic/ruby_agent/lib'
13
+
14
+ $LOAD_PATH.unshift( strelkadir.to_s ) unless $LOAD_PATH.include?( strelkadir.to_s )
15
+ $LOAD_PATH.unshift( nradir.to_s ) unless $LOAD_PATH.include?( nradir.to_s )
16
+ $LOAD_PATH.unshift( basedir ) unless $LOAD_PATH.include?( basedir )
17
+ }
18
+
19
+ require 'rspec'
20
+
21
+ require 'strelka'
22
+ require 'strelka/plugins'
23
+ require 'strelka/app/newrelic'
24
+
25
+ require 'mongrel2/testing'
26
+ require 'strelka/testing'
27
+ require 'strelka/behavior/plugin'
28
+ require 'loggability/spechelpers'
29
+
30
+ ### Mock with RSpec
31
+ RSpec.configure do |c|
32
+ c.mock_with( :rspec )
33
+
34
+ c.include( Loggability::SpecHelpers )
35
+ c.include( Mongrel2::SpecHelpers )
36
+ c.include( Strelka::Testing )
37
+
38
+ include Mongrel2::Constants
39
+ end
40
+
41
+
42
+ #####################################################################
43
+ ### C O N T E X T S
44
+ #####################################################################
45
+
46
+ describe Strelka::App::NewRelic do
47
+
48
+ # 0mq socket specifications for Handlers
49
+ TEST_SEND_SPEC = 'tcp://127.0.0.1:9998'
50
+ TEST_RECV_SPEC = 'tcp://127.0.0.1:9997'
51
+
52
+
53
+ before( :all ) do
54
+ setup_logging()
55
+
56
+ @request_factory = Mongrel2::RequestFactory.new( route: '' )
57
+
58
+ @nr_config = {
59
+ :beacon => 'beacon',
60
+ :disable_mobile_headers => false,
61
+ :browser_key => 'browserKey',
62
+ :application_id => '5, 6', # collector can return multiple appids
63
+ :'rum.enabled' => true,
64
+ :episodes_file => 'this_is_my_file',
65
+ :'rum.jsonp' => true,
66
+ :license_key => 'a' * 40,
67
+ :log_level => :debug,
68
+ }
69
+ NewRelic::Agent.config.apply_config( @nr_config )
70
+ end
71
+
72
+ after( :all ) do
73
+ NewRelic::Agent.shutdown
74
+ reset_logging()
75
+ end
76
+
77
+
78
+ it_should_behave_like( "A Strelka::App Plugin" )
79
+
80
+
81
+ describe "included in an App" do
82
+
83
+ before( :each ) do
84
+ @app = Class.new( Strelka::App ) do
85
+ def self::name; "TestApp"; end
86
+
87
+ plugin :newrelic
88
+ def initialize( appid='nr-test', sspec=TEST_SEND_SPEC, rspec=TEST_RECV_SPEC )
89
+ super
90
+ end
91
+ def set_signal_handlers; end
92
+ def start_accepting_requests; end
93
+ def restore_signal_handlers; end
94
+ end
95
+ end
96
+
97
+
98
+ it "starts the NewRelic agent when the app starts" do
99
+ NewRelic::Agent.should_receive( :manual_start )
100
+ @app.new.run
101
+ end
102
+
103
+ context "that has routing" do
104
+
105
+ before( :each ) do
106
+ @app.instance_eval do
107
+ plugin :parameters
108
+ param :sku, :integer
109
+
110
+ plugin :routing
111
+
112
+ get '/foo' do |request|
113
+ self.log.debug "Agent logger: %p" % [ NewRelic::Agent.logger ]
114
+ NewRelic::Agent.logger.debug "DEBUG"
115
+ NewRelic::Agent.logger.info "INFO"
116
+ NewRelic::Agent.browser_timing_header
117
+ res = request.response
118
+ res.status = HTTP::OK
119
+ return res
120
+ end
121
+
122
+ post '/foo/:sku' do |request|
123
+ res = request.response
124
+ res.status = HTTP::OK
125
+ return res
126
+ end
127
+ end
128
+
129
+ # logdevice = Loggability[ NewRelic ]
130
+ # logger = NewRelic::Agent::AgentLogger.new(NewRelic::Agent.config, '', logdevice )
131
+ # NewRelic::Agent.logger = logger
132
+
133
+ end
134
+
135
+ after( :each ) do
136
+ NewRelic::Agent.agent.stats_engine.reset_stats
137
+ end
138
+
139
+
140
+ it "records a trace for requests to simple routes" do
141
+ request = @request_factory.get( '/foo' )
142
+ response = @app.new.start_newrelic_agent.handle( request )
143
+ response.status.should == HTTP::OK
144
+
145
+ engine = NewRelic::Agent.agent.stats_engine
146
+ engine.metrics.should include(
147
+ "HttpDispatcher",
148
+ "Controller/Strelka/TestApp/GET_foo",
149
+ "Apdex",
150
+ "Apdex/Strelka/TestApp/GET_foo"
151
+ )
152
+ end
153
+
154
+ it "adds browser timing javascript header and footer to the response notes" do
155
+ request = @request_factory.get( '/foo' )
156
+ response = @app.new.start_newrelic_agent.handle( request )
157
+
158
+ response.notes[:rum_header].should =~ /NREUMQ/
159
+ response.notes[:rum_footer].should =~ /NREUMQ/
160
+ end
161
+
162
+ end
163
+
164
+
165
+ end
166
+
167
+
168
+ end
169
+
metadata ADDED
@@ -0,0 +1,191 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: strelka-newrelic
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Michael Granger
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - !binary |-
12
+ LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURiRENDQWxTZ0F3SUJB
13
+ Z0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREErTVF3d0NnWURWUVFEREFOblpX
14
+ UXgKR1RBWEJnb0praWFKay9Jc1pBRVpGZ2xHWVdWeWFXVk5WVVF4RXpBUkJn
15
+ b0praWFKay9Jc1pBRVpGZ052Y21jdwpIaGNOTVRNd01qSTNNVFkwT0RVNFdo
16
+ Y05NVFF3TWpJM01UWTBPRFU0V2pBK01Rd3dDZ1lEVlFRRERBTm5aV1F4CkdU
17
+ QVhCZ29Ka2lhSmsvSXNaQUVaRmdsR1lXVnlhV1ZOVlVReEV6QVJCZ29Ka2lh
18
+ SmsvSXNaQUVaRmdOdmNtY3cKZ2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJ
19
+ QkR3QXdnZ0VLQW9JQkFRRGI5Mm1reVl3dUdCZzFvUnh0MnRrSAorVW8zTEFz
20
+ YUwvQVBCZlNMenk4bzMrQjNBVUhLQ2pNVWFWZUJvWmRXdE1IQjc1WDNWUWx2
21
+ WGZaTXlCeGo1OVZvCmNEdGhyM3pkYW80SG55cnpBSVFmN0JPNVk4S0J3VkQr
22
+ eXlYQ0QvTjY1VFR3cXNRbk8zaWU3VTUvOXV0MXJuTnIKT2tPekFzY013a2ZR
23
+ eEJrWER6anZBV2E2VUY0YzVjOWtSL1Q3OWlBMjFrRHg5K2JVTWVudFU1OWFD
24
+ SnRVY2J4YQo3a2NLSmhQRVlzazRPZHhSOXEyZHBoTk1GRFFzSWRSTzhyeXdY
25
+ NUZSSHZjYitxblhDMTdSdnhMSHRPanlzUHRwCkVXc1lvWk14eUNESnBVcWJ3
26
+ b2VpTSt0QUhvejJBQk12M0FoaWUzUWViNitNWk5BdE1tYVdmQngzZGcydSsv
27
+ V04KQWdNQkFBR2pkVEJ6TUFrR0ExVWRFd1FDTUFBd0N3WURWUjBQQkFRREFn
28
+ U3dNQjBHQTFVZERnUVdCQlNaMGhDVgpxb0hyMTIyZkdLZWxxZmZ6RVFCaHN6
29
+ QWNCZ05WSFJFRUZUQVRnUkZuWldSQVJtRmxjbWxsVFZWRUxtOXlaekFjCkJn
30
+ TlZIUklFRlRBVGdSRm5aV1JBUm1GbGNtbGxUVlZFTG05eVp6QU5CZ2txaGtp
31
+ Rzl3MEJBUVVGQUFPQ0FRRUEKVmxjZnlxNkd3eUU4aTBRdUZQQ2VWT3dKYW5l
32
+ U3Zjd3gzMTZEQXBqeTkvdHQyWUQySG9tTGJ0cFh0amk1UVhvcgpPTjZvbG40
33
+ dFdCSUIzS2xicjNzenE1b1IzUmMxRDAyU2FCVGFseFNuZHA0TTZVa1c5aFJG
34
+ dTVqbjk4cERCNGZxCjVsOHdNTVUwWGRtcXgxVll2eXNWQWpWRlZDL1c0Tk52
35
+ bG1nKzJtRWdTVlpQNUs2VGM5cURoM2VNUUlub1l3NmgKdDFZQTZSc1VKSHA1
36
+ dkdReWhQMXgzNFlwTEFhbHk4aWNibnMvOFBxT2Y3T3NuOXp0bWc4Yk9NSkNl
37
+ YjMyZVFMago2bUtDd2pwZWd5dEUwb2lmWGZGOGs3NUE5MTA1Y0JuTmlNWk9l
38
+ MXRYaXFZYy9leENnV3ZiZ2d1cnpET2NSa1p1Ci9ZU3VzYWlEWEhLVTJPM0Fr
39
+ YzNodEE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
40
+ date: 2013-04-01 00:00:00.000000000 Z
41
+ dependencies:
42
+ - !ruby/object:Gem::Dependency
43
+ name: strelka
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '0.3'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '0.3'
56
+ - !ruby/object:Gem::Dependency
57
+ name: newrelic_rpm
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '3.5'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '3.5'
70
+ - !ruby/object:Gem::Dependency
71
+ name: hoe-mercurial
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 1.4.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: 1.4.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: hoe-highline
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ version: 0.1.0
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ~>
96
+ - !ruby/object:Gem::Version
97
+ version: 0.1.0
98
+ - !ruby/object:Gem::Dependency
99
+ name: rdoc
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ version: '3.10'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ~>
110
+ - !ruby/object:Gem::Version
111
+ version: '3.10'
112
+ - !ruby/object:Gem::Dependency
113
+ name: hoe-deveiate
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ~>
117
+ - !ruby/object:Gem::Version
118
+ version: '0.2'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '0.2'
126
+ - !ruby/object:Gem::Dependency
127
+ name: hoe
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: '3.5'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: '3.5'
140
+ description: ! 'Strelka-NewRelic is a Strelka plugin for monitoring a Strelka application
141
+ with
142
+
143
+ NewRelic''s application performance management service.'
144
+ email:
145
+ - ged@FaerieMUD.org
146
+ executables: []
147
+ extensions: []
148
+ extra_rdoc_files:
149
+ - History.rdoc
150
+ - Manifest.txt
151
+ - README.rdoc
152
+ files:
153
+ - ChangeLog
154
+ - History.rdoc
155
+ - Manifest.txt
156
+ - README.rdoc
157
+ - Rakefile
158
+ - lib/strelka/app/newrelic.rb
159
+ - newrelic.yml
160
+ - spec/strelka/app/newrelic_spec.rb
161
+ - .gemtest
162
+ homepage: http://deveiate.org/projects/strelka/newrelic.html
163
+ licenses:
164
+ - BSD
165
+ metadata: {}
166
+ post_install_message:
167
+ rdoc_options:
168
+ - -f
169
+ - fivefish
170
+ - -t
171
+ - Strelka New Relic Analysis
172
+ require_paths:
173
+ - lib
174
+ required_ruby_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ! '>='
177
+ - !ruby/object:Gem::Version
178
+ version: 1.9.2
179
+ required_rubygems_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ! '>='
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ requirements: []
185
+ rubyforge_project: strelka-newrelic
186
+ rubygems_version: 2.0.3
187
+ signing_key:
188
+ specification_version: 4
189
+ summary: Strelka-NewRelic is a Strelka plugin for monitoring a Strelka application
190
+ with NewRelic's application performance management service.
191
+ test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ ���;�pgHӀl��]�r�lCG�? '�[.��n��-/6;��%�2,{ak���.%�_�)aMwrL�f�뇋Ѭ��2m ������g�������Q̡��W=��\��}ȃ)̍-�Go˦�����Uep=���:H`f��U|�eyJ}��2���I��E}uA�"x�!���\�.� ���|�A�:��[B��@Şi����[켶�}�c>4��HҾS�j�Z�(Ay��L�ۺ�>�@�4�QɓjF��ђU>