logster 2.11.0 → 2.11.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/client-app/app/controllers/index.js +12 -8
- data/client-app/app/templates/index.hbs +1 -0
- data/client-app/package-lock.json +15767 -24169
- data/client-app/package.json +2 -1
- data/client-app/tests/unit/controllers/index-test.js +23 -5
- data/lib/logster/redis_store.rb +37 -36
- data/lib/logster/version.rb +1 -1
- metadata +2 -2
data/client-app/package.json
CHANGED
@@ -43,6 +43,7 @@
|
|
43
43
|
"ember-maybe-import-regenerator": "^0.1.6",
|
44
44
|
"ember-qunit": "^4.6.0",
|
45
45
|
"ember-resolver": "^7.0.0",
|
46
|
+
"ember-sinon-qunit": "^6.0.0",
|
46
47
|
"ember-source": "^3.15.0",
|
47
48
|
"eslint-plugin-ember": "^7.13.0",
|
48
49
|
"eslint-plugin-node": "^10.0.0",
|
@@ -57,6 +58,6 @@
|
|
57
58
|
"edition": "octane"
|
58
59
|
},
|
59
60
|
"dependencies": {
|
60
|
-
"moment": "~2.
|
61
|
+
"moment": "~2.29.2"
|
61
62
|
}
|
62
63
|
}
|
@@ -1,12 +1,30 @@
|
|
1
1
|
import { module, test } from 'qunit';
|
2
2
|
import { setupTest } from 'ember-qunit';
|
3
|
+
import { default as MessageCollection } from "client-app/models/message-collection";
|
4
|
+
import sinon from "sinon";
|
5
|
+
import * as utilities from "client-app/lib/utilities";
|
3
6
|
|
4
|
-
module('Unit | Controller | index', function(hooks) {
|
7
|
+
module('Unit | Controller | index', function (hooks) {
|
5
8
|
setupTest(hooks);
|
6
9
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
10
|
+
test('uses search param to filter results', function (assert) {
|
11
|
+
const controller = this.owner.lookup('controller:index');
|
12
|
+
const ajaxStub = sinon.stub(utilities, 'ajax')
|
13
|
+
const messages = MessageCollection.create();
|
14
|
+
const row1 = {"message": "error tomtom", "severity": 2, "key": "ce1f53b0cc"};
|
15
|
+
const row2 = {"message": "error steaky", "severity": 3, "key": "b083352825"};
|
16
|
+
|
17
|
+
messages.rows.addObjects([row1, row2]);
|
18
|
+
controller.set("model", messages)
|
19
|
+
|
20
|
+
assert.equal(controller.searchTerm, null, 'initial value is null');
|
21
|
+
assert.deepEqual(controller.model.rows, [row1, row2], 'all rows');
|
22
|
+
|
23
|
+
ajaxStub.callsFake(() => Promise.resolve({search: "tomtom", filter: [5], messages: []}));
|
24
|
+
controller.set("search", "tomtom");
|
25
|
+
|
26
|
+
assert.equal(controller.searchTerm, "tomtom", 'search sets search term');
|
27
|
+
assert.equal(ajaxStub.firstCall.args[0], "/messages.json", "get messages");
|
28
|
+
assert.deepEqual(ajaxStub.firstCall.args[1], {"data": {"filter": "5", "search": "tomtom"}}, "with correct terms");
|
11
29
|
});
|
12
30
|
});
|
data/lib/logster/redis_store.rb
CHANGED
@@ -27,10 +27,10 @@ module Logster
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
@redis.multi do
|
31
|
-
|
32
|
-
|
33
|
-
update_message(message, save_env: true)
|
30
|
+
@redis.multi do |pipeline|
|
31
|
+
pipeline.hset(grouping_key, message.grouping_key, message.key)
|
32
|
+
pipeline.rpush(list_key, message.key)
|
33
|
+
update_message(message, save_env: true, redis: pipeline)
|
34
34
|
end
|
35
35
|
|
36
36
|
trim
|
@@ -41,30 +41,30 @@ module Logster
|
|
41
41
|
|
42
42
|
def delete(msg)
|
43
43
|
groups = find_pattern_groups() { |pat| msg.message =~ pat }
|
44
|
-
@redis.multi do
|
44
|
+
@redis.multi do |pipeline|
|
45
45
|
groups.each do |group|
|
46
46
|
group.remove_message(msg)
|
47
|
-
save_pattern_group(group) if group.changed?
|
47
|
+
save_pattern_group(group, redis: pipeline) if group.changed?
|
48
48
|
end
|
49
|
-
|
50
|
-
delete_env(msg.key)
|
51
|
-
|
52
|
-
|
49
|
+
pipeline.hdel(hash_key, msg.key)
|
50
|
+
delete_env(msg.key, redis: pipeline)
|
51
|
+
pipeline.hdel(grouping_key, msg.grouping_key)
|
52
|
+
pipeline.lrem(list_key, -1, msg.key)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
def bulk_delete(message_keys, grouping_keys)
|
57
57
|
groups = find_pattern_groups(load_messages: true)
|
58
|
-
@redis.multi do
|
58
|
+
@redis.multi do |pipeline|
|
59
59
|
groups.each do |group|
|
60
60
|
group.messages = group.messages.reject { |m| message_keys.include?(m.key) }
|
61
|
-
save_pattern_group(group) if group.changed?
|
61
|
+
save_pattern_group(group, redis: pipeline) if group.changed?
|
62
62
|
end
|
63
|
-
|
64
|
-
|
63
|
+
pipeline.hdel(hash_key, message_keys)
|
64
|
+
pipeline.hdel(grouping_key, grouping_keys)
|
65
65
|
message_keys.each do |k|
|
66
|
-
|
67
|
-
delete_env(k)
|
66
|
+
pipeline.lrem(list_key, -1, k)
|
67
|
+
delete_env(k, redis: pipeline)
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
@@ -74,11 +74,11 @@ module Logster
|
|
74
74
|
exists = @redis.hexists(hash_key, message.key)
|
75
75
|
return false unless exists
|
76
76
|
|
77
|
-
@redis.multi do
|
78
|
-
|
79
|
-
push_env(message.key, message.env_buffer) if message.has_env_buffer?
|
80
|
-
|
81
|
-
|
77
|
+
@redis.multi do |pipeline|
|
78
|
+
pipeline.hset(hash_key, message.key, message.to_json(exclude_env: true))
|
79
|
+
push_env(message.key, message.env_buffer, redis: pipeline) if message.has_env_buffer?
|
80
|
+
pipeline.lrem(list_key, -1, message.key)
|
81
|
+
pipeline.rpush(list_key, message.key)
|
82
82
|
end
|
83
83
|
message.env_buffer = [] if message.has_env_buffer?
|
84
84
|
check_rate_limits(message.severity)
|
@@ -188,11 +188,12 @@ module Logster
|
|
188
188
|
.sort
|
189
189
|
.map(&:key)
|
190
190
|
|
191
|
-
@redis.pipelined do
|
191
|
+
@redis.pipelined do |pipeline|
|
192
192
|
sorted.each do |message_key|
|
193
|
-
|
193
|
+
pipeline.rpush(list_key, message_key)
|
194
194
|
end
|
195
195
|
end
|
196
|
+
|
196
197
|
find_pattern_groups(load_messages: true).each do |group|
|
197
198
|
group.messages = group.messages.select { |m| sorted.include?(m.key) }
|
198
199
|
save_pattern_group(group) if group.changed?
|
@@ -383,11 +384,11 @@ module Logster
|
|
383
384
|
jsons
|
384
385
|
end
|
385
386
|
|
386
|
-
def save_pattern_group(group)
|
387
|
+
def save_pattern_group(group, redis: @redis)
|
387
388
|
if group.messages_keys.size == 0
|
388
|
-
|
389
|
+
redis.hdel(pattern_groups_key, group.key)
|
389
390
|
else
|
390
|
-
|
391
|
+
redis.hset(pattern_groups_key, group.key, group.to_json)
|
391
392
|
end
|
392
393
|
end
|
393
394
|
|
@@ -429,13 +430,13 @@ module Logster
|
|
429
430
|
end
|
430
431
|
end
|
431
432
|
|
432
|
-
def update_message(message, save_env: false)
|
433
|
-
|
434
|
-
push_env(message.key, message.env) if save_env
|
433
|
+
def update_message(message, save_env: false, redis: @redis)
|
434
|
+
redis.hset(hash_key, message.key, message.to_json(exclude_env: true))
|
435
|
+
push_env(message.key, message.env, redis: redis) if save_env
|
435
436
|
if message.protected
|
436
|
-
|
437
|
+
redis.sadd(protected_key, message.key)
|
437
438
|
else
|
438
|
-
|
439
|
+
redis.srem(protected_key, message.key)
|
439
440
|
end
|
440
441
|
end
|
441
442
|
|
@@ -640,15 +641,15 @@ module Logster
|
|
640
641
|
rate_limiter
|
641
642
|
end
|
642
643
|
|
643
|
-
def push_env(message_key, env)
|
644
|
+
def push_env(message_key, env, redis: @redis)
|
644
645
|
prefixed = env_prefix(message_key)
|
645
646
|
env = [env] unless Array === env
|
646
|
-
|
647
|
-
|
647
|
+
redis.lpush(prefixed, env.map(&:to_json).reverse)
|
648
|
+
redis.ltrim(prefixed, 0, Logster.config.max_env_count_per_message - 1)
|
648
649
|
end
|
649
650
|
|
650
|
-
def delete_env(message_key)
|
651
|
-
|
651
|
+
def delete_env(message_key, redis: @redis)
|
652
|
+
redis.del(env_prefix(message_key))
|
652
653
|
end
|
653
654
|
|
654
655
|
def env_unprefix(key, with_namespace: false)
|
data/lib/logster/version.rb
CHANGED
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: 2.11.
|
4
|
+
version: 2.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Saffron
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|