fluent-plugin-aws-sqs 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/Gemfile.lock +69 -0
- data/Rakefile +1 -1
- data/lib/fluent/plugin/{in_sqs.rb → in-sqs.rb} +19 -4
- data/lib/fluent/plugin/version.rb +1 -1
- data/tests/test_in-sqs.rb +80 -0
- metadata +4 -4
- data/spec/lib/fluent/plugin/in_sqs_spec.rb +0 -120
- data/spec/spec_helper.rb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50685c5260965737557cc07ca01975b2fcb055fbab68d2fc0a805242b1a15fac
|
4
|
+
data.tar.gz: 20ce27643d10fe6b80d9f6b48b885c256869e92cc1c8854683b9c3a6ec026a2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3a1971248f41a9ef47f3582b3ed786e91ec098c37cef776ab4f5508464256f4a297a5839c8fe49921a7e57385d567f77cb4facc64cc2a0bd1d66204f237edf0
|
7
|
+
data.tar.gz: f4d5d67dc5fdeb0c46841844bf5bbb4f59d700a7a86961ee2fca5f77a594482e140019a9bf7d5d1dc06aaa8d9fe2915d4672e40569de3f88d90e0eed796877a0
|
data/.gitignore
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
fluent-plugin-aws-sqs (1.0.1)
|
5
|
+
aws-sdk-sqs (>= 1.22.0)
|
6
|
+
fluentd (>= 0.14.0)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
aws-eventstream (1.0.3)
|
12
|
+
aws-partitions (1.215.0)
|
13
|
+
aws-sdk-core (3.68.0)
|
14
|
+
aws-eventstream (~> 1.0, >= 1.0.2)
|
15
|
+
aws-partitions (~> 1.0)
|
16
|
+
aws-sigv4 (~> 1.1)
|
17
|
+
jmespath (~> 1.0)
|
18
|
+
aws-sdk-sqs (1.22.0)
|
19
|
+
aws-sdk-core (~> 3, >= 3.61.1)
|
20
|
+
aws-sigv4 (~> 1.1)
|
21
|
+
aws-sigv4 (1.1.0)
|
22
|
+
aws-eventstream (~> 1.0, >= 1.0.2)
|
23
|
+
concurrent-ruby (1.1.5)
|
24
|
+
cool.io (1.5.4)
|
25
|
+
dig_rb (1.0.1)
|
26
|
+
fluentd (1.7.1)
|
27
|
+
cool.io (>= 1.4.5, < 2.0.0)
|
28
|
+
dig_rb (~> 1.0.0)
|
29
|
+
http_parser.rb (>= 0.5.1, < 0.7.0)
|
30
|
+
msgpack (>= 1.2.0, < 2.0.0)
|
31
|
+
serverengine (>= 2.0.4, < 3.0.0)
|
32
|
+
sigdump (~> 0.2.2)
|
33
|
+
strptime (>= 0.2.2, < 1.0.0)
|
34
|
+
tzinfo (~> 2.0)
|
35
|
+
tzinfo-data (~> 1.0)
|
36
|
+
yajl-ruby (~> 1.0)
|
37
|
+
http_parser.rb (0.6.0)
|
38
|
+
jmespath (1.4.0)
|
39
|
+
msgpack (1.3.1)
|
40
|
+
power_assert (1.1.5)
|
41
|
+
rake (12.3.3)
|
42
|
+
rr (1.2.1)
|
43
|
+
serverengine (2.1.1)
|
44
|
+
sigdump (~> 0.2.2)
|
45
|
+
sigdump (0.2.4)
|
46
|
+
strptime (0.2.3)
|
47
|
+
test-unit (3.3.3)
|
48
|
+
power_assert
|
49
|
+
test-unit-rr (1.0.5)
|
50
|
+
rr (>= 1.1.1)
|
51
|
+
test-unit (>= 2.5.2)
|
52
|
+
tzinfo (2.0.0)
|
53
|
+
concurrent-ruby (~> 1.0)
|
54
|
+
tzinfo-data (1.2019.3)
|
55
|
+
tzinfo (>= 1.0.0)
|
56
|
+
yajl-ruby (1.4.1)
|
57
|
+
|
58
|
+
PLATFORMS
|
59
|
+
ruby
|
60
|
+
|
61
|
+
DEPENDENCIES
|
62
|
+
bundler
|
63
|
+
fluent-plugin-aws-sqs!
|
64
|
+
rake (~> 12.0)
|
65
|
+
test-unit (>= 3.1.0)
|
66
|
+
test-unit-rr
|
67
|
+
|
68
|
+
BUNDLED WITH
|
69
|
+
1.17.3
|
data/Rakefile
CHANGED
@@ -10,10 +10,10 @@ module Fluent::Plugin
|
|
10
10
|
config_param :aws_key_id, :string, default: nil, secret: true
|
11
11
|
config_param :aws_sec_key, :string, default: nil, secret: true
|
12
12
|
config_param :tag, :string
|
13
|
-
config_param :region, :string, default: '
|
13
|
+
config_param :region, :string, default: 'eu-central-1'
|
14
14
|
config_param :sqs_url, :string, default: nil
|
15
15
|
config_param :receive_interval, :time, default: 0.1
|
16
|
-
config_param :max_number_of_messages, :integer, default:
|
16
|
+
config_param :max_number_of_messages, :integer, default: 100
|
17
17
|
config_param :wait_time_seconds, :integer, default: 10
|
18
18
|
config_param :visibility_timeout, :integer, default: nil
|
19
19
|
config_param :delete_message, :bool, default: false
|
@@ -22,6 +22,23 @@ module Fluent::Plugin
|
|
22
22
|
def configure(conf)
|
23
23
|
super
|
24
24
|
|
25
|
+
# configured "port" is referred by `@port` or instance method #port
|
26
|
+
if @aws_key_id == nil
|
27
|
+
raise Fluent::ConfigError, "aws_key_id configuration key is mandatory"
|
28
|
+
end
|
29
|
+
|
30
|
+
if @aws_sec_key == nil
|
31
|
+
raise Fluent::ConfigError, "aws_sec_key configuration key is mandatory"
|
32
|
+
end
|
33
|
+
|
34
|
+
if @tag == nil
|
35
|
+
raise Fluent::ConfigError, "tag configuration key is mandatory"
|
36
|
+
end
|
37
|
+
|
38
|
+
if @sqs_url == nil
|
39
|
+
raise Fluent::ConfigError, "sqs_url configuration key is mandatory"
|
40
|
+
end
|
41
|
+
|
25
42
|
Aws.config = {
|
26
43
|
access_key_id: @aws_key_id,
|
27
44
|
secret_access_key: @aws_sec_key,
|
@@ -64,8 +81,6 @@ module Fluent::Plugin
|
|
64
81
|
log.warn_backtrace ex.backtrace
|
65
82
|
end
|
66
83
|
|
67
|
-
private
|
68
|
-
|
69
84
|
def parse_message(message)
|
70
85
|
{
|
71
86
|
'body' => message.body.to_s,
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require "test-unit"
|
2
|
+
require "fluent/test"
|
3
|
+
require "fluent/test/driver/input"
|
4
|
+
require "fluent/test/helpers"
|
5
|
+
require "./lib/fluent/plugin/in-sqs.rb"
|
6
|
+
|
7
|
+
class InSqsTest < Test::Unit::TestCase
|
8
|
+
include Fluent::Test::Helpers
|
9
|
+
|
10
|
+
# default configuration for tests
|
11
|
+
DEFAULT_VALID_CONFIG = %[
|
12
|
+
aws_key_id test_aws_key_id
|
13
|
+
aws_sec_key test_aws_sec_key
|
14
|
+
tag test_tag
|
15
|
+
sqs_url http://sqs-url.com
|
16
|
+
]
|
17
|
+
|
18
|
+
setup do
|
19
|
+
Fluent::Test.setup # this is required to setup router and others
|
20
|
+
end
|
21
|
+
|
22
|
+
def create_driver(conf = DEFAULT_VALID_CONFIG)
|
23
|
+
Fluent::Test::Driver::Input.new(Fluent::Plugin::SQSInput).configure(conf)
|
24
|
+
end
|
25
|
+
|
26
|
+
sub_test_case 'configured with invalid configurations' do
|
27
|
+
test 'should reject because aws_key_id is missing' do
|
28
|
+
assert_raise Fluent::ConfigError do
|
29
|
+
create_driver(%[
|
30
|
+
aws_sec_key test_aws_sec_key
|
31
|
+
tag tag
|
32
|
+
sqs_url http://sqs-url.com
|
33
|
+
])
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
test 'should reject because aws_sec_key is missing' do
|
38
|
+
assert_raise Fluent::ConfigError do
|
39
|
+
create_driver(%[
|
40
|
+
aws_key_id test_aws_key_id
|
41
|
+
tag tag
|
42
|
+
sqs_url http://sqs-url.com
|
43
|
+
])
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
test 'should reject because tag is missing' do
|
48
|
+
assert_raise Fluent::ConfigError do
|
49
|
+
create_driver(%[
|
50
|
+
aws_sec_key test_aws_sec_key
|
51
|
+
aws_key_id test_aws_key_id
|
52
|
+
sqs_url http://sqs-url.com
|
53
|
+
])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
test 'should reject because sqs_url is missing' do
|
58
|
+
assert_raise Fluent::ConfigError do
|
59
|
+
create_driver(%[
|
60
|
+
aws_sec_key test_aws_sec_key
|
61
|
+
aws_key_id test_aws_key_id
|
62
|
+
tag test_tag
|
63
|
+
])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
test 'params are set correctly' do
|
68
|
+
d = create_driver
|
69
|
+
assert_equal "test_tag", d.instance.tag
|
70
|
+
assert_equal "test_aws_sec_key", d.instance.aws_sec_key
|
71
|
+
assert_equal "test_aws_key_id", d.instance.aws_key_id
|
72
|
+
assert_equal "eu-central-1", d.instance.region
|
73
|
+
assert_equal "http://sqs-url.com", d.instance.sqs_url
|
74
|
+
assert_equal 0.1, d.instance.receive_interval
|
75
|
+
assert_equal 100, d.instance.max_number_of_messages
|
76
|
+
assert_equal 10, d.instance.wait_time_seconds
|
77
|
+
end
|
78
|
+
end # end of configured with invalid configurations sub_test_case
|
79
|
+
|
80
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-aws-sqs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shai Moria
|
@@ -108,14 +108,14 @@ files:
|
|
108
108
|
- ".gitignore"
|
109
109
|
- ".gitlab-ci.yml"
|
110
110
|
- Gemfile
|
111
|
+
- Gemfile.lock
|
111
112
|
- README.md
|
112
113
|
- Rakefile
|
113
114
|
- VERSION
|
114
115
|
- fluent-plugin-aws-sqs.gemspec
|
115
|
-
- lib/fluent/plugin/
|
116
|
+
- lib/fluent/plugin/in-sqs.rb
|
116
117
|
- lib/fluent/plugin/version.rb
|
117
|
-
-
|
118
|
-
- spec/spec_helper.rb
|
118
|
+
- tests/test_in-sqs.rb
|
119
119
|
homepage: https://github.com/zooz/fluent-plugin-aws-sqs
|
120
120
|
licenses:
|
121
121
|
- Apache-2.0
|
@@ -1,120 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'fluent/plugin/in_sqs'
|
3
|
-
|
4
|
-
describe Fluent::Plugin::SQSInput do
|
5
|
-
let(:driver) do
|
6
|
-
Fluent::Test.setup
|
7
|
-
Fluent::Test::Driver::Input.new(Fluent::Plugin::SQSInput).configure(config)
|
8
|
-
end
|
9
|
-
subject { driver.instance }
|
10
|
-
|
11
|
-
describe '#configure' do
|
12
|
-
let(:config) do
|
13
|
-
%(
|
14
|
-
aws_key_id AWS_KEY_ID
|
15
|
-
aws_sec_key AWS_SEC_KEY
|
16
|
-
tag TAG
|
17
|
-
region REGION
|
18
|
-
sqs_url http://SQS_URL
|
19
|
-
receive_interval 1
|
20
|
-
max_number_of_messages 10
|
21
|
-
wait_time_seconds 10
|
22
|
-
visibility_timeout 1
|
23
|
-
delete_message true
|
24
|
-
stub_responses true
|
25
|
-
)
|
26
|
-
end
|
27
|
-
|
28
|
-
context 'fluentd input configuration settings' do
|
29
|
-
it { expect(subject.aws_key_id).to eq('AWS_KEY_ID') }
|
30
|
-
it { expect(subject.aws_sec_key).to eq('AWS_SEC_KEY') }
|
31
|
-
it { expect(subject.tag).to eq('TAG') }
|
32
|
-
it { expect(subject.region).to eq('REGION') }
|
33
|
-
it { expect(subject.sqs_url).to eq('http://SQS_URL') }
|
34
|
-
it { expect(subject.receive_interval).to eq(1) }
|
35
|
-
it { expect(subject.max_number_of_messages).to eq(10) }
|
36
|
-
it { expect(subject.wait_time_seconds).to eq(10) }
|
37
|
-
it { expect(subject.visibility_timeout).to eq(1) }
|
38
|
-
it { expect(subject.delete_message).to eq(true) }
|
39
|
-
it { expect(subject.stub_responses).to eq(true) }
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'AWS configuration settings' do
|
43
|
-
subject { Aws.config }
|
44
|
-
|
45
|
-
before { driver.instance }
|
46
|
-
|
47
|
-
it { expect(subject[:access_key_id]).to eq('AWS_KEY_ID') }
|
48
|
-
it { expect(subject[:secret_access_key]).to eq('AWS_SEC_KEY') }
|
49
|
-
it { expect(subject[:region]).to eq('REGION') }
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe '#run' do
|
54
|
-
let(:message_attributes) do
|
55
|
-
{
|
56
|
-
body: 'body',
|
57
|
-
receipt_handle: 'receipt_handle',
|
58
|
-
message_id: 'message_id',
|
59
|
-
md5_of_body: 'md5_of_body',
|
60
|
-
queue_url: 'queue_url',
|
61
|
-
attributes: { 'SenderId' => 'sender_id' }
|
62
|
-
}
|
63
|
-
end
|
64
|
-
let(:queue) { double(:queue, receive_messages: true) }
|
65
|
-
let(:message) { double(:message, **message_attributes.merge(delete: nil)) }
|
66
|
-
let(:messages) { [message] }
|
67
|
-
|
68
|
-
context 'with no delete messages param' do
|
69
|
-
let(:config) do
|
70
|
-
%(
|
71
|
-
tag TAG
|
72
|
-
max_number_of_messages 10
|
73
|
-
wait_time_seconds 10
|
74
|
-
visibility_timeout 1
|
75
|
-
delete_message false
|
76
|
-
)
|
77
|
-
end
|
78
|
-
|
79
|
-
before do
|
80
|
-
allow(subject).to receive(:queue) { queue }
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'parse through messages and emit it' do
|
84
|
-
expect(queue).to receive(:receive_messages)
|
85
|
-
.with(max_number_of_messages: 10, wait_time_seconds: 10, visibility_timeout: 1) { messages }
|
86
|
-
expect(subject).to receive(:parse_message).with(message) { message_attributes }
|
87
|
-
expect(message).not_to receive(:delete)
|
88
|
-
expect(subject.router).to receive(:emit).with('TAG', kind_of(Fluent::EventTime), message_attributes)
|
89
|
-
|
90
|
-
subject.run
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
context 'with no delete messages param' do
|
95
|
-
let(:config) do
|
96
|
-
%(
|
97
|
-
tag TAG
|
98
|
-
max_number_of_messages 10
|
99
|
-
wait_time_seconds 10
|
100
|
-
visibility_timeout 1
|
101
|
-
delete_message true
|
102
|
-
)
|
103
|
-
end
|
104
|
-
|
105
|
-
before do
|
106
|
-
allow(subject).to receive(:queue) { queue }
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'parse through messages and emit it' do
|
110
|
-
expect(queue).to receive(:receive_messages)
|
111
|
-
.with(max_number_of_messages: 10, wait_time_seconds: 10, visibility_timeout: 1) { messages }
|
112
|
-
expect(subject).to receive(:parse_message).with(message) { message_attributes }
|
113
|
-
expect(message).to receive(:delete)
|
114
|
-
expect(subject.router).to receive(:emit).with('TAG', kind_of(Fluent::EventTime), message_attributes)
|
115
|
-
|
116
|
-
subject.run
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
-
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
-
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
-
# loaded once.
|
5
|
-
#
|
6
|
-
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
-
RSpec.configure do |config|
|
8
|
-
config.run_all_when_everything_filtered = true
|
9
|
-
config.filter_run :focus
|
10
|
-
|
11
|
-
# Run specs in random order to surface order dependencies. If you find an
|
12
|
-
# order dependency and want to debug it, you can fix the order by providing
|
13
|
-
# the seed, which is printed after each run.
|
14
|
-
# --seed 1234
|
15
|
-
config.order = 'random'
|
16
|
-
|
17
|
-
require 'fluent/load'
|
18
|
-
require 'fluent/test'
|
19
|
-
require 'fluent/test/helpers'
|
20
|
-
require 'fluent/test/driver/output'
|
21
|
-
require 'fluent/test/driver/input'
|
22
|
-
|
23
|
-
require 'ostruct'
|
24
|
-
require 'pry'
|
25
|
-
require 'rr'
|
26
|
-
# prevent Test::Unit's AutoRunner from executing during RSpec's rake task
|
27
|
-
Test::Unit.run = true if defined?(Test::Unit) && Test::Unit.respond_to?(:run=)
|
28
|
-
end
|