fluent-plugin-gcloud-pubsub-custom 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 08c5555e386df16b94ce1a8db279f952893b3f3b
4
- data.tar.gz: e6eee873e191628778e9793a4545baf4a9d90344
3
+ metadata.gz: 6537f709d3f3e8849ae455fad4ee15a5f8b36d36
4
+ data.tar.gz: 72ac72b492b01d4ac1301837f9faeaa185689f72
5
5
  SHA512:
6
- metadata.gz: eb8869520add948a27084fd46c58740455432f35bc29210efc77e4578901f5b10762c2b24a56eede4df04bfa54b57eaa210de5d022a11bcd5555e925939849aa
7
- data.tar.gz: 3d2ef099388aa1a0260061e3cc134d84c9326c29202414643a2fe3612ca27fed9697b763ddd2ead9c3f68aa3ef3adb85d55b1e00de77b1b6d79e035b16e452a7
6
+ metadata.gz: 21dfe776b5de4edfedc3cd71c47c050934db1b09ddb05f43a6d7c2fff0f7586e450bb669d7b5c9e5b7b5569dec176b6d1fed05f0aee12f3f01091c697f6cfe88
7
+ data.tar.gz: 0c388a5d3eaf2edd941c81ba76676fc21ca9950b12c3fd6229f8e6981d6affc68ca33dc26d76a151fa4e7e752fbac33ff48cb0b3843b04542b2dd90605ac52d3
@@ -1,5 +1,9 @@
1
1
  ## ChangeLog
2
2
 
3
+ - Release 0.3.0 - 2016/10/30
4
+ - Bump up google-cloud-pubsub to v0.21
5
+ - Input plugin
6
+ - Add multithreaded pulling feature
3
7
  - Release 0.2.0 - 2016/10/15
4
8
  - Input plugin
5
9
  - Add HTTP RPC feature
@@ -7,7 +7,7 @@ Gem::Specification.new do |gem|
7
7
  gem.license = "MIT"
8
8
  gem.homepage = "https://github.com/mia-0032/fluent-plugin-gcloud-pubsub-custom"
9
9
  gem.summary = gem.description
10
- gem.version = "0.2.0"
10
+ gem.version = "0.3.0"
11
11
  gem.authors = ["Yoshihiro MIYAI"]
12
12
  gem.email = "msparrow17@gmail.com"
13
13
  gem.has_rdoc = false
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.require_paths = ['lib']
18
18
 
19
19
  gem.add_runtime_dependency "fluentd", [">= 0.10.58", "< 2"]
20
- gem.add_runtime_dependency "google-cloud-pubsub", "~> 0.20.0"
20
+ gem.add_runtime_dependency "google-cloud-pubsub", "~> 0.21.0"
21
21
 
22
22
  gem.add_development_dependency "bundler"
23
23
  gem.add_development_dependency "rake"
@@ -1,4 +1,4 @@
1
- require 'google/cloud'
1
+ require 'google/cloud/pubsub'
2
2
 
3
3
  module Fluent
4
4
  module GcloudPubSub
@@ -6,7 +6,7 @@ module Fluent
6
6
 
7
7
  class Publisher
8
8
  def initialize(project, key, topic, autocreate_topic)
9
- pubsub = (Google::Cloud.new project, key).pubsub
9
+ pubsub = Google::Cloud::Pubsub.new project: project, keyfile: key
10
10
 
11
11
  @client = pubsub.topic topic, autocreate: autocreate_topic
12
12
  raise Fluent::GcloudPubSub::Error.new "topic:#{topic} does not exist." if @client.nil?
@@ -23,7 +23,7 @@ module Fluent
23
23
 
24
24
  class Subscriber
25
25
  def initialize(project, key, topic, subscription)
26
- pubsub = (Google::Cloud.new project, key).pubsub
26
+ pubsub = Google::Cloud::Pubsub.new project: project, keyfile: key
27
27
  topic = pubsub.topic topic
28
28
  @client = topic.subscription subscription
29
29
  raise Fluent::GcloudPubSub::Error.new "subscription:#{subscription} does not exist." if @client.nil?
@@ -18,6 +18,7 @@ module Fluent
18
18
  config_param :pull_interval, :float, default: 5.0
19
19
  config_param :max_messages, :integer, default: 100
20
20
  config_param :return_immediately, :bool, default: true
21
+ config_param :pull_threads, :integer, default: 1
21
22
  config_param :format, :string, default: 'json'
22
23
  # for HTTP RPC
23
24
  config_param :enable_rpc, :bool, default: false
@@ -94,7 +95,10 @@ module Fluent
94
95
  log.debug "connected subscription:#{@subscription} in project #{@project}"
95
96
 
96
97
  @stop_subscribing = false
97
- @subscribe_thread = Thread.new(&method(:subscribe))
98
+ @subscribe_threads = []
99
+ @pull_threads.times do
100
+ @subscribe_threads.push Thread.new(&method(:subscribe))
101
+ end
98
102
  end
99
103
 
100
104
  def shutdown
@@ -108,7 +112,7 @@ module Fluent
108
112
  @rpc_thread = nil
109
113
  end
110
114
  @stop_subscribing = true
111
- @subscribe_thread.join
115
+ @subscribe_threads.each(&:join)
112
116
  end
113
117
 
114
118
  def stop_pull
@@ -40,6 +40,7 @@ class GcloudPubSubInputTest < Test::Unit::TestCase
40
40
  max_messages 1000
41
41
  return_immediately true
42
42
  pull_interval 2
43
+ pull_threads 3
43
44
  format ltsv
44
45
  enable_rpc true
45
46
  rpc_bind 127.0.0.1
@@ -54,6 +55,7 @@ class GcloudPubSubInputTest < Test::Unit::TestCase
54
55
  assert_equal(2.0, d.instance.pull_interval)
55
56
  assert_equal(1000, d.instance.max_messages)
56
57
  assert_equal(true, d.instance.return_immediately)
58
+ assert_equal(3, d.instance.pull_threads)
57
59
  assert_equal('ltsv', d.instance.format)
58
60
  assert_equal(true, d.instance.enable_rpc)
59
61
  assert_equal('127.0.0.1', d.instance.rpc_bind)
@@ -65,6 +67,7 @@ class GcloudPubSubInputTest < Test::Unit::TestCase
65
67
  assert_equal(5.0, d.instance.pull_interval)
66
68
  assert_equal(100, d.instance.max_messages)
67
69
  assert_equal(true, d.instance.return_immediately)
70
+ assert_equal(1, d.instance.pull_threads)
68
71
  assert_equal('json', d.instance.format)
69
72
  assert_equal(false, d.instance.enable_rpc)
70
73
  assert_equal('0.0.0.0', d.instance.rpc_bind)
@@ -88,8 +91,7 @@ class GcloudPubSubInputTest < Test::Unit::TestCase
88
91
  @subscriber = mock!
89
92
  @topic_mock = mock!.subscription('subscription-test') { @subscriber }
90
93
  @pubsub_mock = mock!.topic('topic-test') { @topic_mock }
91
- @gcloud_mock = mock!.pubsub { @pubsub_mock }
92
- stub(Google::Cloud).new { @gcloud_mock }
94
+ stub(Google::Cloud::Pubsub).new { @pubsub_mock }
93
95
  end
94
96
 
95
97
  test 'empty' do
@@ -122,6 +124,24 @@ class GcloudPubSubInputTest < Test::Unit::TestCase
122
124
  end
123
125
  end
124
126
 
127
+ test 'multithread' do
128
+ messages = Array.new(1, DummyMessage.new)
129
+ @subscriber.pull(immediate: true, max: 100).twice { messages }
130
+ @subscriber.acknowledge(messages).twice
131
+
132
+ d = create_driver("#{CONFIG}\npull_threads 2")
133
+ d.run {
134
+ # d.run sleeps 0.5 sec
135
+ }
136
+ emits = d.emits
137
+
138
+ assert_equal(2, emits.length)
139
+ emits.each do |tag, time, record|
140
+ assert_equal("test", tag)
141
+ assert_equal({"foo" => "bar"}, record)
142
+ end
143
+ end
144
+
125
145
  test 'invalid messages' do
126
146
  class DummyInvalidMsgData
127
147
  def data
@@ -58,8 +58,7 @@ class GcloudPubSubOutputTest < Test::Unit::TestCase
58
58
  setup do
59
59
  @publisher = mock!
60
60
  @pubsub_mock = mock!
61
- @gcloud_mock = mock!.pubsub { @pubsub_mock }
62
- stub(Google::Cloud).new { @gcloud_mock }
61
+ stub(Google::Cloud::Pubsub).new { @pubsub_mock }
63
62
  end
64
63
 
65
64
  test '"autocreate_topic" is enabled' do
@@ -79,8 +78,7 @@ class GcloudPubSubOutputTest < Test::Unit::TestCase
79
78
  setup do
80
79
  @publisher = mock!
81
80
  @pubsub_mock = mock!.topic(anything, anything) { @publisher }
82
- @gcloud_mock = mock!.pubsub { @pubsub_mock }
83
- stub(Google::Cloud).new { @gcloud_mock }
81
+ stub(Google::Cloud::Pubsub).new { @pubsub_mock }
84
82
  end
85
83
 
86
84
  setup do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-gcloud-pubsub-custom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshihiro MIYAI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-18 00:00:00.000000000 Z
11
+ date: 2016-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.20.0
39
+ version: 0.21.0
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 0.20.0
46
+ version: 0.21.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
49
  requirement: !ruby/object:Gem::Requirement