yarder 0.0.2 → 0.1.0

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.
@@ -72,6 +72,16 @@ class BufferedLoggerTest < ActiveSupport::TestCase
72
72
  assert @output.string.include?(@message)
73
73
  end
74
74
 
75
+ def test_env_should_have_data
76
+ assert_present @logger.env[:ruby]
77
+ assert_present @logger.env[:program]
78
+ assert_present @logger.env[:user]
79
+
80
+ assert_equal Dir.pwd, @logger.env[:pwd]
81
+ assert_equal 'test', @logger.env[:env].to_s
82
+ assert_equal Socket.gethostname, @logger.env[:host]
83
+ end
84
+
75
85
  def test_should_add_message_passed_as_block_when_using_shortcut
76
86
  @logger.level = Logger::INFO
77
87
  @logger.info {@message}
@@ -12,6 +12,7 @@ class LoggerTest < ActiveSupport::IntegrationCase
12
12
  setup do
13
13
  @output = StringIO.new
14
14
  Rails.logger = Yarder::TaggedLogging.new(MyLogger.new(@output))
15
+ Rails.logger.log_namespace = :app
15
16
  visit('/widgets')
16
17
  end
17
18
 
@@ -20,49 +21,73 @@ class LoggerTest < ActiveSupport::IntegrationCase
20
21
  end
21
22
 
22
23
  test 'fills in the client_ip' do
23
- assert_equal "127.0.0.1", entry['@fields']['client_ip']
24
+ assert_equal "127.0.0.1", entry['app']['rack']['client_ip']
24
25
  end
25
26
 
26
27
  test 'fills in the method' do
27
- assert_equal "GET", entry['@fields']['method']
28
+ assert_equal "GET", entry['app']['rack']['method']
28
29
  end
29
30
 
30
31
  test 'fills in the path' do
31
- assert_equal "/widgets", entry['@fields']['path']
32
+ assert_equal "/widgets", entry['app']['rack']['path']
33
+ end
34
+
35
+ test 'fills in the url' do
36
+ assert_equal "http://www.example.com/widgets", entry['app']['rack']['url']
32
37
  end
33
38
 
34
39
  test 'fills in the status' do
35
- assert_equal "/widgets", entry['@fields']['path']
40
+ assert_equal "/widgets", entry['app']['rack']['path']
36
41
  end
37
42
 
38
43
  test 'fills in the total_duration' do
39
- assert entry['@fields']['total_duration'].to_f >= 0, "total_duration was not a positive number"
44
+ assert entry['app']['duration']['total'].to_f > 0, "total duration was not a positive number"
40
45
  end
41
46
 
42
- test 'fills in the rendering_duration' do
43
- assert entry['@fields']['rendering_duration'].to_f >= 0, "rendering_duration was not a positive number"
47
+ test 'total_duration is greater than sql_duration' do
48
+ duration = entry['app']['duration']
49
+ assert duration['total'].to_f >= duration['sql'].to_f, "total duration is less than sql duration"
50
+ end
51
+
52
+ test 'total_duration is greater than controller_duration' do
53
+ duration = entry['app']['duration']
54
+ assert entry['app']['duration']['total'].to_f >= duration['controller'].to_f, "total_duration is less than controller_duration"
44
55
  end
45
56
 
46
57
  test 'fills in the sql_duration' do
47
- assert entry['@fields']['rendering_duration'].to_f >= 0, "sql_duration was not a positive number"
58
+ duration = entry['app']['duration']
59
+ assert duration['sql'].to_f >= 0, "sql_duration was not a positive number"
48
60
  end
49
61
 
50
62
  test 'fills in the method name tag' do
51
- assert_equal 32, entry['@fields']['uuid'].size
63
+ assert_equal 32, entry['app']['uuid'].size
52
64
  end
53
65
 
54
66
  test 'fills in the string tag' do
55
- assert_match "Hello", entry['@tags'].first
67
+ assert_match "Hello", entry['tags'].first
56
68
  end
57
69
 
58
70
  test 'fills in the proc tag' do
59
- assert_match "Proc", entry['@tags'].last
71
+ assert_match "Proc", entry['tags'].last
60
72
  end
61
73
 
62
- #TODO Add tests for view and SQL rendering summaries
74
+ test 'fills in the sql query' do
75
+ assert entry['app']['sql'].last['sql'], '"SELECT "widgets".* FROM "widgets"'
76
+ end
77
+
78
+ =begin TODO Add tests for view rendering
79
+ test 'fills in the rendering' do
80
+ assert_present entry['app']['rack']['rendering'] , "rendering is blank"
81
+ end
82
+
83
+ test 'fills in the rendering_duration' do
84
+ assert_present entry['app']['rack']['rendering_duration'] , "rendering_duration is blank"
85
+ assert Float(entry['app']['rack']['rendering_duration']) >= 0, "rendering_duration was not a positive number"
86
+ end
87
+ =end
63
88
 
64
89
  def entry
65
90
  JSON.parse(@output.string)
66
91
  end
67
92
 
68
- end
93
+ end
@@ -20,33 +20,33 @@ class TaggedLoggingTest < ActiveSupport::TestCase
20
20
 
21
21
  test 'fills in the severity' do
22
22
  @logger.info "Severity Test"
23
- assert_equal "INFO", JSON.parse(@output.string)['@fields']['severity']
23
+ assert_equal "INFO", JSON.parse(@output.string)['severity']
24
24
  end
25
25
 
26
26
  test "tagged once" do
27
27
  @logger.tagged("BCX") { @logger.info "Funky time" }
28
- assert_equal "BCX", JSON.parse(@output.string)['@tags'][0]
29
- assert_equal "Funky time", JSON.parse(@output.string)['@message']
28
+ assert_equal "BCX", JSON.parse(@output.string)['tags'][0]
29
+ assert_equal "Funky time", JSON.parse(@output.string)['message']
30
30
  end
31
31
 
32
32
  test "tagged twice" do
33
33
  @logger.tagged("BCX") { @logger.tagged("Jason") { @logger.info "Funky time" } }
34
- assert_equal "BCX", JSON.parse(@output.string)['@tags'][0]
35
- assert_equal "Jason", JSON.parse(@output.string)['@tags'][1]
34
+ assert_equal "BCX", JSON.parse(@output.string)['tags'][0]
35
+ assert_equal "Jason", JSON.parse(@output.string)['tags'][1]
36
36
  end
37
37
 
38
38
  test "tagged thrice at once" do
39
39
  @logger.tagged("BCX", "Jason", "New") { @logger.info "Funky time" }
40
- assert_equal "BCX", JSON.parse(@output.string)['@tags'][0]
41
- assert_equal "Jason", JSON.parse(@output.string)['@tags'][1]
42
- assert_equal "New", JSON.parse(@output.string)['@tags'][2]
40
+ assert_equal "BCX", JSON.parse(@output.string)['tags'][0]
41
+ assert_equal "Jason", JSON.parse(@output.string)['tags'][1]
42
+ assert_equal "New", JSON.parse(@output.string)['tags'][2]
43
43
  end
44
44
 
45
45
  test "tagged are flattened" do
46
46
  @logger.tagged("BCX", %w(Jason New)) { @logger.info "Funky time" }
47
- assert_equal "BCX", JSON.parse(@output.string)['@tags'][0]
48
- assert_equal "Jason", JSON.parse(@output.string)['@tags'][1]
49
- assert_equal "New", JSON.parse(@output.string)['@tags'][2]
47
+ assert_equal "BCX", JSON.parse(@output.string)['tags'][0]
48
+ assert_equal "Jason", JSON.parse(@output.string)['tags'][1]
49
+ assert_equal "New", JSON.parse(@output.string)['tags'][2]
50
50
  end
51
51
 
52
52
 
@@ -59,44 +59,44 @@ class TaggedLoggingTest < ActiveSupport::TestCase
59
59
  @logger.info 'c'
60
60
  assert_equal [], @logger.clear_tags!
61
61
  @logger.info 'd'
62
- # assert_equal "[A] [B] [C] a\n[A] [B] b\n[A] c\nd\n", JSON.parse(@output.string)['@tags']
62
+ # assert_equal "[A] [B] [C] a\n[A] [B] b\n[A] c\nd\n", JSON.parse(@output.string)['tags']
63
63
 
64
64
  first_log = JSON.parse(@output.string.split("\n")[0])
65
- assert_equal "A", first_log['@tags'][0]
66
- assert_equal "B", first_log['@tags'][1]
67
- assert_equal "C", first_log['@tags'][2]
68
- assert_equal "a", first_log['@message']
65
+ assert_equal "A", first_log['tags'][0]
66
+ assert_equal "B", first_log['tags'][1]
67
+ assert_equal "C", first_log['tags'][2]
68
+ assert_equal "a", first_log['message']
69
69
 
70
70
  second_log = JSON.parse(@output.string.split("\n")[1])
71
- assert_equal "A", second_log['@tags'][0]
72
- assert_equal "B", second_log['@tags'][1]
73
- assert_equal "b", second_log['@message']
71
+ assert_equal "A", second_log['tags'][0]
72
+ assert_equal "B", second_log['tags'][1]
73
+ assert_equal "b", second_log['message']
74
74
 
75
75
  third_log = JSON.parse(@output.string.split("\n")[2])
76
- assert_equal "A", third_log['@tags'][0]
77
- assert_equal "c", third_log['@message']
76
+ assert_equal "A", third_log['tags'][0]
77
+ assert_equal "c", third_log['message']
78
78
 
79
79
  fourth_log = JSON.parse(@output.string.split("\n")[3])
80
- assert fourth_log['@tags'].empty?
81
- assert_equal "d", fourth_log['@message']
80
+ assert fourth_log['tags'].empty?
81
+ assert_equal "d", fourth_log['message']
82
82
  end
83
83
 
84
84
 
85
85
 
86
86
  test "does not strip message content" do
87
87
  @logger.info " Hello"
88
- assert_equal " Hello", JSON.parse(@output.string)['@message']
88
+ assert_equal " Hello", JSON.parse(@output.string)['message']
89
89
  end
90
90
 
91
91
  test "provides access to the logger instance" do
92
92
  @logger.tagged("BCX") { |logger| logger.info "Funky time" }
93
- assert_equal "BCX", JSON.parse(@output.string)['@tags'][0]
94
- assert_equal "Funky time", JSON.parse(@output.string)['@message']
93
+ assert_equal "BCX", JSON.parse(@output.string)['tags'][0]
94
+ assert_equal "Funky time", JSON.parse(@output.string)['message']
95
95
  end
96
96
 
97
97
  test "tagged once with blank and nil" do
98
98
  @logger.tagged(nil, "", "New") { @logger.info "Funky time" }
99
- assert_equal "New", JSON.parse(@output.string)['@tags'].last
99
+ assert_equal "New", JSON.parse(@output.string)['tags'].first
100
100
  end
101
101
 
102
102
  test "keeps each tag in their own thread" do
@@ -109,13 +109,13 @@ class TaggedLoggingTest < ActiveSupport::TestCase
109
109
 
110
110
  # Sub-thread
111
111
  main_thread = JSON.parse(@output.string.split("\n").first)
112
- assert_equal "OMG", main_thread['@tags'][0]
113
- assert_equal "Cool story bro", main_thread['@message']
112
+ assert_equal "OMG", main_thread['tags'][0]
113
+ assert_equal "Cool story bro", main_thread['message']
114
114
 
115
115
  # Main thread
116
116
  main_thread = JSON.parse(@output.string.split("\n").last)
117
- assert_equal "BCX", main_thread['@tags'][0]
118
- assert_equal "Funky time", main_thread['@message']
117
+ assert_equal "BCX", main_thread['tags'][0]
118
+ assert_equal "Funky time", main_thread['message']
119
119
  end
120
120
 
121
121
  test "cleans up the taggings on flush" do
@@ -129,8 +129,8 @@ class TaggedLoggingTest < ActiveSupport::TestCase
129
129
  end
130
130
 
131
131
  first_log = JSON.parse(@output.string.split("\n").first)
132
- assert first_log['@tags'].empty?
133
- assert_equal "Cool story bro", first_log['@message']
132
+ assert first_log['tags'].empty?
133
+ assert_equal "Cool story bro", first_log['message']
134
134
  end
135
135
 
136
136
 
@@ -141,15 +141,13 @@ class TaggedLoggingTest < ActiveSupport::TestCase
141
141
  end
142
142
 
143
143
  first_log = JSON.parse(@output.string.split("\n").first)
144
- assert_equal "BCX", first_log['@tags'][0]
145
- assert_equal "Jason", first_log['@tags'][1]
146
- assert_equal "Funky time", first_log['@message']
144
+ assert_equal "BCX", first_log['tags'][0]
145
+ assert_equal "Jason", first_log['tags'][1]
146
+ assert_equal "Funky time", first_log['message']
147
147
 
148
148
  second_log = JSON.parse(@output.string.split("\n").last)
149
- assert_equal "BCX", second_log['@tags'][0]
150
- assert_equal "Junky time!", second_log['@message']
149
+ assert_equal "BCX", second_log['tags'][0]
150
+ assert_equal "Junky time!", second_log['message']
151
151
  end
152
152
 
153
153
  end
154
-
155
-
metadata CHANGED
@@ -1,86 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yarder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Jeffrey Jones
8
- autorequire:
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-11-07 00:00:00.000000000 Z
12
+ date: 2013-12-09 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rails
15
- requirement: !ruby/object:Gem::Requirement
16
+ version_requirements: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - ~>
18
19
  - !ruby/object:Gem::Version
19
20
  version: 3.2.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
21
+ none: false
22
+ requirement: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.2.0
27
+ none: false
28
+ prerelease: false
29
+ type: :runtime
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: logstash-event
29
- requirement: !ruby/object:Gem::Requirement
32
+ version_requirements: !ruby/object:Gem::Requirement
30
33
  requirements:
31
34
  - - ~>
32
35
  - !ruby/object:Gem::Version
33
- version: 1.1.5
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
36
+ version: 1.2.02
37
+ none: false
38
+ requirement: !ruby/object:Gem::Requirement
37
39
  requirements:
38
40
  - - ~>
39
41
  - !ruby/object:Gem::Version
40
- version: 1.1.5
42
+ version: 1.2.02
43
+ none: false
44
+ prerelease: false
45
+ type: :runtime
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: capybara
43
- requirement: !ruby/object:Gem::Requirement
48
+ version_requirements: !ruby/object:Gem::Requirement
44
49
  requirements:
45
50
  - - ~>
46
51
  - !ruby/object:Gem::Version
47
52
  version: 1.1.2
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirement: !ruby/object:Gem::Requirement
51
55
  requirements:
52
56
  - - ~>
53
57
  - !ruby/object:Gem::Version
54
58
  version: 1.1.2
55
- description: Replaces the default string based Ruby on Rails logging system with a
56
- JSON based one
59
+ none: false
60
+ prerelease: false
61
+ type: :development
62
+ description: Replaces the default string based Ruby on Rails logging system with a JSON based one
57
63
  email:
58
64
  - jjones@toppan-f.co.jp
59
65
  executables: []
60
66
  extensions: []
61
67
  extra_rdoc_files: []
62
68
  files:
69
+ - lib/yarder.rb
63
70
  - lib/tasks/yarder_tasks.rake
71
+ - lib/yarder/event.rb
72
+ - lib/yarder/logger.rb
73
+ - lib/yarder/railtie.rb
74
+ - lib/yarder/tagged_logging.rb
75
+ - lib/yarder/version.rb
64
76
  - lib/yarder/action_controller/log_subscriber.rb
65
77
  - lib/yarder/action_view/log_subscriber.rb
66
78
  - lib/yarder/active_record/log_subscriber.rb
67
79
  - lib/yarder/active_resource/log_subscriber.rb
68
80
  - lib/yarder/core_ext/object/blank.rb
69
- - lib/yarder/event.rb
70
- - lib/yarder/logger.rb
71
81
  - lib/yarder/rack/logger.rb
72
- - lib/yarder/railtie.rb
73
- - lib/yarder/tagged_logging.rb
74
- - lib/yarder/version.rb
75
- - lib/yarder.rb
76
82
  - MIT-LICENSE
77
83
  - Rakefile
78
84
  - README.md
85
+ - test/logger_test.rb
86
+ - test/tagged_logging_test.rb
87
+ - test/test_helper.rb
88
+ - test/yarder_test.rb
79
89
  - test/action_controller/log_subscriber_test.rb
80
90
  - test/action_view/log_subscriber_test.rb
81
91
  - test/active_record/log_subscriber_test.rb
82
92
  - test/active_resource/log_subscriber_test.rb
83
93
  - test/core_ext/blank_test.rb
94
+ - test/dummy/config.ru
95
+ - test/dummy/Rakefile
96
+ - test/dummy/README.rdoc
84
97
  - test/dummy/app/assets/javascripts/application.js
85
98
  - test/dummy/app/assets/javascripts/widgets.js
86
99
  - test/dummy/app/assets/stylesheets/application.css
@@ -106,6 +119,7 @@ files:
106
119
  - test/dummy/config/boot.rb
107
120
  - test/dummy/config/database.yml
108
121
  - test/dummy/config/environment.rb
122
+ - test/dummy/config/routes.rb
109
123
  - test/dummy/config/environments/development.rb
110
124
  - test/dummy/config/environments/production.rb
111
125
  - test/dummy/config/environments/test.rb
@@ -116,30 +130,21 @@ files:
116
130
  - test/dummy/config/initializers/session_store.rb
117
131
  - test/dummy/config/initializers/wrap_parameters.rb
118
132
  - test/dummy/config/locales/en.yml
119
- - test/dummy/config/routes.rb
120
- - test/dummy/config.ru
121
- - test/dummy/db/migrate/20120927084605_create_widgets.rb
122
133
  - test/dummy/db/schema.rb
134
+ - test/dummy/db/migrate/20120927084605_create_widgets.rb
123
135
  - test/dummy/log/test.log
124
136
  - test/dummy/public/404.html
125
137
  - test/dummy/public/422.html
126
138
  - test/dummy/public/500.html
127
139
  - test/dummy/public/favicon.ico
128
- - test/dummy/Rakefile
129
- - test/dummy/README.rdoc
130
140
  - test/dummy/script/rails
131
- - test/logger_test.rb
132
141
  - test/rack/logger_test.rb
133
142
  - test/support/fake_models.rb
134
143
  - test/support/integration_case.rb
135
144
  - test/support/multibyte_test_helpers.rb
136
- - test/tagged_logging_test.rb
137
- - test/test_helper.rb
138
- - test/yarder_test.rb
139
145
  homepage: https://github.com/rurounijones/yarder
140
146
  licenses: []
141
- metadata: {}
142
- post_install_message:
147
+ post_install_message:
143
148
  rdoc_options: []
144
149
  require_paths:
145
150
  - lib
@@ -147,24 +152,39 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
152
  requirements:
148
153
  - - '>='
149
154
  - !ruby/object:Gem::Version
155
+ segments:
156
+ - 0
150
157
  version: '0'
158
+ hash: 2
159
+ none: false
151
160
  required_rubygems_version: !ruby/object:Gem::Requirement
152
161
  requirements:
153
162
  - - '>='
154
163
  - !ruby/object:Gem::Version
164
+ segments:
165
+ - 0
155
166
  version: '0'
167
+ hash: 2
168
+ none: false
156
169
  requirements: []
157
- rubyforge_project:
158
- rubygems_version: 2.0.3
159
- signing_key:
160
- specification_version: 4
170
+ rubyforge_project:
171
+ rubygems_version: 1.8.24
172
+ signing_key:
173
+ specification_version: 3
161
174
  summary: JSON format based replacement for Ruby on Rails logging system
162
175
  test_files:
176
+ - test/logger_test.rb
177
+ - test/tagged_logging_test.rb
178
+ - test/test_helper.rb
179
+ - test/yarder_test.rb
163
180
  - test/action_controller/log_subscriber_test.rb
164
181
  - test/action_view/log_subscriber_test.rb
165
182
  - test/active_record/log_subscriber_test.rb
166
183
  - test/active_resource/log_subscriber_test.rb
167
184
  - test/core_ext/blank_test.rb
185
+ - test/dummy/config.ru
186
+ - test/dummy/Rakefile
187
+ - test/dummy/README.rdoc
168
188
  - test/dummy/app/assets/javascripts/application.js
169
189
  - test/dummy/app/assets/javascripts/widgets.js
170
190
  - test/dummy/app/assets/stylesheets/application.css
@@ -190,6 +210,7 @@ test_files:
190
210
  - test/dummy/config/boot.rb
191
211
  - test/dummy/config/database.yml
192
212
  - test/dummy/config/environment.rb
213
+ - test/dummy/config/routes.rb
193
214
  - test/dummy/config/environments/development.rb
194
215
  - test/dummy/config/environments/production.rb
195
216
  - test/dummy/config/environments/test.rb
@@ -200,23 +221,15 @@ test_files:
200
221
  - test/dummy/config/initializers/session_store.rb
201
222
  - test/dummy/config/initializers/wrap_parameters.rb
202
223
  - test/dummy/config/locales/en.yml
203
- - test/dummy/config/routes.rb
204
- - test/dummy/config.ru
205
- - test/dummy/db/migrate/20120927084605_create_widgets.rb
206
224
  - test/dummy/db/schema.rb
225
+ - test/dummy/db/migrate/20120927084605_create_widgets.rb
207
226
  - test/dummy/log/test.log
208
227
  - test/dummy/public/404.html
209
228
  - test/dummy/public/422.html
210
229
  - test/dummy/public/500.html
211
230
  - test/dummy/public/favicon.ico
212
- - test/dummy/Rakefile
213
- - test/dummy/README.rdoc
214
231
  - test/dummy/script/rails
215
- - test/logger_test.rb
216
232
  - test/rack/logger_test.rb
217
233
  - test/support/fake_models.rb
218
234
  - test/support/integration_case.rb
219
235
  - test/support/multibyte_test_helpers.rb
220
- - test/tagged_logging_test.rb
221
- - test/test_helper.rb
222
- - test/yarder_test.rb