strelka-newrelic 0.0.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.
@@ -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>