logstash-filter-fix_protocol 0.1.1 → 0.1.2
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 454431f7e36a07d087e15a1b6c2f18ea274557de
|
4
|
+
data.tar.gz: 997359c4fab37712934c8252bf209039ee782b56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 841e0c9cbbfc740092d1f52a7d9aab62c54a94370d447d9109a73e179eb8a57fdd4e04d396caec903bf2f8a2f4d52155a24785fca77417501b6ea2bc98ffed17
|
7
|
+
data.tar.gz: 2b45940ea8d8100286a47f35317daca43a0d244a10e179835c2b3ecac71eb3855ee9bf2a1bc90f9d6820ff62ba185cb7120ce3f8b7d8c805ff6032da94f04c1d
|
data/README.md
CHANGED
@@ -23,11 +23,11 @@ $ /opt/logstash/bin/plugin install logstash-filter-fix_protocol
|
|
23
23
|
|
24
24
|
| Setting | Input type | Required | Default Value |
|
25
25
|
| ----------------------- | ----------------| ---------| ------------------ |
|
26
|
-
|
|
26
|
+
| fix_message | string/variable | Yes | "message" |
|
27
27
|
| data_dictionary_path | string | Yes | "/PATH/TO/YOUR/DD" |
|
28
28
|
| session_dictionary_path | string | No | nil |
|
29
29
|
|
30
|
-
**
|
30
|
+
**fix_message**
|
31
31
|
+ value type is a string
|
32
32
|
+ required
|
33
33
|
|
@@ -58,10 +58,10 @@ input {
|
|
58
58
|
}
|
59
59
|
filter {
|
60
60
|
grok {
|
61
|
-
match => ["message","%{TIMESTAMP_ISO8601:timestamp} %{GREEDYDATA:
|
61
|
+
match => ["message","%{TIMESTAMP_ISO8601:timestamp} %{GREEDYDATA:fix_session}: %{GREEDYDATA:fix_string}"]
|
62
62
|
}
|
63
63
|
fix_protocol {
|
64
|
-
|
64
|
+
fix_message => fix_string
|
65
65
|
session_dictionary_path => "/PATH/TO/FIX/5.0/SESSION/DICTIONARY/FIX.xml"
|
66
66
|
data_dictionary_path => "/PATH/TO/FIX/5.0/DATA/DICTIONARY/FIX.xml"
|
67
67
|
}
|
@@ -12,7 +12,7 @@ module LogStash
|
|
12
12
|
|
13
13
|
config_name "fix_protocol"
|
14
14
|
|
15
|
-
config :
|
15
|
+
config :fix_message, validate: :string, default: "message"
|
16
16
|
|
17
17
|
config :data_dictionary_path, validate: :string, default: "/PATH/TO/YOUR/DD"
|
18
18
|
config :session_dictionary_path, validate: :string, default: nil
|
@@ -34,22 +34,32 @@ module LogStash
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def filter(event)
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
37
|
+
message_string = event[config["fix_message"]]
|
38
|
+
|
39
|
+
if message_string
|
40
|
+
fix_message = nil
|
41
|
+
|
42
|
+
begin
|
43
|
+
fix_message = FixMessage.new(message_string, data_dictionary, session_dictionary)
|
44
|
+
rescue Java::Quickfix::InvalidMessage
|
45
|
+
event["tags"] = ["_fix_parse_failure"]
|
46
|
+
end
|
47
|
+
|
48
|
+
if fix_message
|
49
|
+
fix_hash = fix_message.to_hash
|
50
|
+
|
51
|
+
fix_hash.each do |key, value|
|
52
|
+
begin
|
53
|
+
event[key] = value
|
54
|
+
rescue NoMethodError => e
|
55
|
+
puts "********"
|
56
|
+
puts "WARNING: Could not correctly parse #{event["fix_message"]}"
|
57
|
+
puts JSON.pretty_generate(fix_hash)
|
58
|
+
puts "Message: #{e.message}"
|
59
|
+
puts "********"
|
60
|
+
ensure
|
61
|
+
next
|
62
|
+
end
|
53
63
|
end
|
54
64
|
end
|
55
65
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe LF::FixProtocol do
|
4
4
|
let(:fix_5_config) do
|
5
5
|
{
|
6
|
-
"
|
6
|
+
"fix_message" => "message",
|
7
7
|
"session_dictionary_path" => load_fixture("FIXT11.xml"),
|
8
8
|
"data_dictionary_path" => load_fixture("FIX50SP1.xml")
|
9
9
|
}
|
@@ -11,7 +11,7 @@ describe LF::FixProtocol do
|
|
11
11
|
|
12
12
|
let(:fix_4_config) do
|
13
13
|
{
|
14
|
-
"
|
14
|
+
"fix_message" => "message",
|
15
15
|
"data_dictionary_path" => load_fixture("FIX42.xml")
|
16
16
|
}
|
17
17
|
end
|
@@ -36,12 +36,23 @@ describe LF::FixProtocol do
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
context 'invalid message' do
|
40
|
+
config fix_4_configuration
|
41
|
+
|
42
|
+
invalid_msg = "8=invalid_stuff"
|
43
|
+
|
44
|
+
sample(invalid_msg) do
|
45
|
+
insist { subject["tags"] } == ["_fix_parse_failure"]
|
46
|
+
insist { subject["message"] } == invalid_msg
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
39
50
|
context 'an incoming execution report' do
|
40
51
|
config fix_4_configuration
|
41
52
|
|
42
53
|
execution = "8=FIXT.1.1\x0135=8\x0149=ITG\x0156=SILO\x01315=8\x016=100.25\x01410=50.25\x01424=23.45\x01411=Y\x0143=N\x0140=1\x015=N\x01"
|
43
54
|
|
44
|
-
sample(
|
55
|
+
sample(execution) do
|
45
56
|
filtered_event = subject
|
46
57
|
insist { filtered_event["BeginString"] } == "FIXT.1.1"
|
47
58
|
insist { filtered_event["MsgType"] } == "ExecutionReport"
|
@@ -57,7 +68,7 @@ describe LF::FixProtocol do
|
|
57
68
|
|
58
69
|
execution = "8=FIX.4.2\x019=240\x0135=8\x0134=6\x0149=DUMMY_INC\x0152=20150826-23:10:17.744\x0156=ANOTHER_INC\x0157=Firm_B\x011=Inst_B\x016=0\x0111=151012569\x0117=ITRZ1201508261_24\x0120=0\x0122=8\x0131=1010\x0132=5\x0137=ITRZ1201508261_12\x0138=5\x0139=2\x0140=2\x0141=best_buy\x0144=1011\x0154=1\x0155=ITRZ1\x0160=20150826-23:10:15.547\x01150=2\x01151=0\x0110=227\x01"
|
59
70
|
|
60
|
-
sample(
|
71
|
+
sample(execution) do
|
61
72
|
expect { subject }.to output.to_stdout
|
62
73
|
filtered_event = subject
|
63
74
|
insist { filtered_event["BeginString"] } == "FIX.4.2"
|
@@ -7,7 +7,7 @@ module FixConfiguration
|
|
7
7
|
<<-CONFIG
|
8
8
|
filter {
|
9
9
|
fix_protocol {
|
10
|
-
|
10
|
+
fix_message => message
|
11
11
|
session_dictionary_path => "#{ load_fixture("FIXT11.xml") }"
|
12
12
|
data_dictionary_path => "#{ load_fixture("FIX50SP1.xml") }"
|
13
13
|
}
|
@@ -19,7 +19,7 @@ module FixConfiguration
|
|
19
19
|
<<-CONFIG
|
20
20
|
filter {
|
21
21
|
fix_protocol {
|
22
|
-
|
22
|
+
fix_message => message
|
23
23
|
data_dictionary_path => "#{ load_fixture("FIX42.xml") }"
|
24
24
|
}
|
25
25
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-filter-fix_protocol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Connamara Systems
|
@@ -158,7 +158,7 @@ files:
|
|
158
158
|
- lib/logstash/filters/data_dictionary.rb
|
159
159
|
- lib/logstash/filters/fix_message.rb
|
160
160
|
- lib/logstash/filters/fix_protocol.rb
|
161
|
-
- logstash-filter-
|
161
|
+
- logstash-filter-fix_protocol.gemspec
|
162
162
|
- spec/filters/fix_message_spec.rb
|
163
163
|
- spec/filters/fix_protocol_spec.rb
|
164
164
|
- spec/fixtures/FIX42.xml
|