logster 1.3.4 → 1.4.0.pre

Sign up to get free protection for your applications and to get access to all the features.
@@ -198,28 +198,29 @@ class TestRedisStore < Minitest::Test
198
198
  end
199
199
 
200
200
  def test_search
201
- @store.report(Logger::INFO, "test", "A")
202
- @store.report(Logger::INFO, "test", "B")
201
+ @store.report(Logger::INFO, "test", "ABCDEFG")
202
+ @store.report(Logger::INFO, "test", "TUVWXYZ")
203
203
 
204
204
  messages = @store.latest
205
205
  assert_equal(2, messages.length)
206
206
 
207
- latest = @store.latest(search: "B")
207
+ latest = @store.latest(search: "TUVWXYZ")
208
208
 
209
209
  assert_equal(1, latest.length)
210
+ assert_equal("TUVWXYZ", latest[0].message)
210
211
  end
211
212
 
212
213
  def test_search_exclude_results
213
- @store.report(Logger::INFO, "test", "A")
214
- @store.report(Logger::INFO, "test", "B")
214
+ @store.report(Logger::INFO, "test", "ABCDEFG")
215
+ @store.report(Logger::INFO, "test", "TUVWXYZ")
215
216
 
216
217
  messages = @store.latest
217
218
  assert_equal(2, messages.length)
218
219
 
219
- latest = @store.latest(search: "-A")
220
+ latest = @store.latest(search: "-ABCD")
220
221
 
221
222
  assert_equal(1, latest.length)
222
- assert_equal("B", latest[0].message)
223
+ assert_equal("TUVWXYZ", latest[0].message)
223
224
  end
224
225
 
225
226
  def test_regex_search
@@ -234,6 +235,128 @@ class TestRedisStore < Minitest::Test
234
235
  assert_equal(1, latest.length)
235
236
  end
236
237
 
238
+ def test_env_search
239
+ @store.report(Logger::INFO, "test", "message ABCD", env: { cluster: "business5" })
240
+ @store.report(Logger::INFO, "test", "message WXYZ", env: { cluster: "business7" })
241
+
242
+ messages = @store.latest
243
+ assert_equal(2, messages.length)
244
+
245
+ latest = @store.latest(search: "business5")
246
+
247
+ assert_equal(1, latest.length)
248
+ assert_equal("message ABCD", latest[0].message)
249
+
250
+ latest = @store.latest(search: "-business5")
251
+
252
+ assert_equal(1, latest.length)
253
+ assert_equal("message WXYZ", latest[0].message)
254
+
255
+ latest = @store.latest(search: /business/)
256
+
257
+ assert_equal(2, latest.length)
258
+ assert_equal(["message ABCD", "message WXYZ"], latest.map(&:message).sort)
259
+ end
260
+
261
+ def test_array_env_search_preserve_env
262
+ m1_original_env = [{ cluster: "business5" }, { cluster: "standard3" }]
263
+ m2_original_env = [{ cluster: "business2" }, { cluster: "standard7" }]
264
+
265
+ @store.report(Logger::INFO, "test", "message ABCD", env: m1_original_env, count: 2)
266
+ @store.report(Logger::INFO, "test", "message WXYZ", env: m2_original_env, count: 2)
267
+
268
+ messages = @store.latest
269
+ assert_equal(2, messages.length)
270
+
271
+ m1_key = messages[0].key
272
+ m2_key = messages[1].key
273
+
274
+ messages = @store.latest(search: "business")
275
+ assert_equal(2, messages.size)
276
+
277
+ # any hashes that don't match should be stripped from the env
278
+ # array but only temporarily until it's sent to the client
279
+ # env array should remain untouched in redis memory
280
+ assert_equal(["business5"], messages[0].env.map { |env| env["cluster"]})
281
+ assert_equal(1, messages[0].count)
282
+ assert_equal(["business2"], messages[1].env.map { |env| env["cluster"]})
283
+ assert_equal(1, messages[1].count)
284
+
285
+ m1 = @store.get(m1_key)
286
+ m2 = @store.get(m2_key)
287
+ # original env should preserved in redis memory
288
+ assert_equal(["business5", "standard3"], m1.env.map { |env| env["cluster"] })
289
+ assert_equal(["business2", "standard7"], m2.env.map { |env| env["cluster"] })
290
+ end
291
+
292
+ def test_both_env_and_title_match_search
293
+ @store.report(Logger::INFO, "test", "message", env: [{ cluster: "business15" }])
294
+ @store.report(Logger::INFO, "test", "message2", env: { cluster: "business15" })
295
+
296
+ messages = @store.latest
297
+ assert_equal(2, messages.size)
298
+
299
+ messages = @store.latest(search: "-business15")
300
+ assert_equal(0, messages.size)
301
+ end
302
+
303
+ def test_data_kept_intact_on_report_when_env_matches_an_ignore_pattern
304
+ begin
305
+ Logster.config.allow_grouping = true
306
+ backtrace = caller
307
+ message = @store.report(Logger::WARN, "", "my error", env: { whatever: "something", backtrace: backtrace })
308
+
309
+ @store.ignore = [
310
+ Logster::IgnorePattern.new("business")
311
+ ]
312
+ message2 = @store.report(Logger::WARN, "", "my error", env: { cluster: "business17", backtrace: backtrace })
313
+
314
+ message = @store.get(message.key)
315
+ assert(Array === message.env)
316
+ assert_equal(2, message.env.size)
317
+ # message2 shouldn't vanish even if
318
+ # its env matches an ignore pattern
319
+ # however it should be merged with message1
320
+ assert_equal("business17", message.env[1]["cluster"])
321
+ ensure
322
+ # reset so it doesn't affect other tests
323
+ @store.ignore = nil
324
+ Logster.config.allow_grouping = false
325
+ end
326
+ end
327
+
328
+ def test_array_env_negative_search
329
+ @store.report(Logger::INFO, "test", "message ABCD", env: [{ cluster: "business5" }, { cluster: "standard3" }], count: 2)
330
+ @store.report(Logger::INFO, "test", "message WXYZ", env: [{ cluster: "business2" }, { cluster: "standard7" }], count: 2)
331
+
332
+ messages = @store.latest
333
+ assert_equal(2, messages.length)
334
+
335
+ messages = @store.latest(search: "-business")
336
+ assert_equal(2, messages.size)
337
+
338
+ assert_equal(["standard3"], messages[0].env.map { |env| env["cluster"]})
339
+ assert_equal(1, messages[0].count)
340
+ assert_equal(["standard7"], messages[1].env.map { |env| env["cluster"]})
341
+ assert_equal(1, messages[1].count)
342
+ end
343
+
344
+ def test_negative_search_MUST_not_match_title_in_order_to_include_message
345
+ @store.report(Logger::INFO, "test", "message ABCD", env: [{ cluster: "business5" }, { cluster: "standard3" }], count: 2)
346
+
347
+ messages = @store.latest(search: "-ABCD")
348
+ assert_equal(0, messages.size) # cause title has ABCD
349
+ end
350
+
351
+ def test_positive_search_looks_at_title_OR_env
352
+ @store.report(Logger::INFO, "test", "message", env: [{ cluster: "business5 ABCDEFG" }, { cluster: "standard3" }], count: 2)
353
+
354
+ messages = @store.latest(search: "ABCDEFG")
355
+ assert_equal(1, messages.size)
356
+ assert_equal(1, messages[0].env.size)
357
+ assert_equal("business5 ABCDEFG", messages[0].env[0]["cluster"])
358
+ end
359
+
237
360
  def test_backtrace
238
361
  @store.report(Logger::INFO, "test", "pattern_1")
239
362
  message = @store.latest(limit: 1).first
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 1.4.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - UI for viewing logs in Rack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-30 00:00:00.000000000 Z
11
+ date: 2019-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -162,6 +162,7 @@ files:
162
162
  - client-app/README.md
163
163
  - client-app/app/app.js
164
164
  - client-app/app/components/actions-menu.js
165
+ - client-app/app/components/env-tab.js
165
166
  - client-app/app/components/message-info.js
166
167
  - client-app/app/components/message-row.js
167
168
  - client-app/app/components/panel-resizer.js
@@ -185,6 +186,7 @@ files:
185
186
  - client-app/app/styles/app.css
186
187
  - client-app/app/templates/application.hbs
187
188
  - client-app/app/templates/components/actions-menu.hbs
189
+ - client-app/app/templates/components/env-tab.hbs
188
190
  - client-app/app/templates/components/message-info.hbs
189
191
  - client-app/app/templates/components/message-row.hbs
190
192
  - client-app/app/templates/components/panel-resizer.hbs
@@ -201,6 +203,7 @@ files:
201
203
  - client-app/testem.js
202
204
  - client-app/tests/index.html
203
205
  - client-app/tests/integration/components/actions-menu-test.js
206
+ - client-app/tests/integration/components/env-tab-test.js
204
207
  - client-app/tests/integration/components/message-info-test.js
205
208
  - client-app/tests/integration/components/message-row-test.js
206
209
  - client-app/tests/integration/components/panel-resizer-test.js
@@ -258,9 +261,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
258
261
  version: '0'
259
262
  required_rubygems_version: !ruby/object:Gem::Requirement
260
263
  requirements:
261
- - - ">="
264
+ - - ">"
262
265
  - !ruby/object:Gem::Version
263
- version: '0'
266
+ version: 1.3.1
264
267
  requirements: []
265
268
  rubygems_version: 3.0.1
266
269
  signing_key: