fluent-plugin-github-activities 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +40 -5
- data/fluent-plugin-github-activities.gemspec +3 -2
- data/lib/fluent/plugin/github-activities.rb +5 -3
- data/lib/fluent/plugin/github-activities/crawler.rb +260 -249
- data/lib/fluent/plugin/github-activities/users_manager.rb +45 -65
- data/lib/fluent/plugin/in_github-activities.rb +96 -78
- data/test/fixture/piroor-events.json +47 -0
- data/test/fixture/users.txt +2 -0
- data/test/plugin/test_in_github_activity.rb +85 -0
- data/test/run-test.rb +1 -0
- data/test/test_crawler.rb +132 -109
- metadata +26 -7
- data/lib/fluent/plugin/github-activities/safe_file_writer.rb +0 -46
data/test/run-test.rb
CHANGED
data/test/test_crawler.rb
CHANGED
@@ -20,26 +20,49 @@
|
|
20
20
|
require "json"
|
21
21
|
|
22
22
|
require "fluent/plugin/github-activities"
|
23
|
+
require "fluent/test"
|
23
24
|
|
24
25
|
class CrawlerTest < Test::Unit::TestCase
|
26
|
+
class DummyStorage
|
27
|
+
def initialize
|
28
|
+
@store = {}
|
29
|
+
end
|
30
|
+
|
31
|
+
def get(key)
|
32
|
+
@store[key]
|
33
|
+
end
|
34
|
+
|
35
|
+
def put(key, value)
|
36
|
+
@store[key] = value
|
37
|
+
end
|
38
|
+
|
39
|
+
def save
|
40
|
+
end
|
41
|
+
|
42
|
+
def load
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
25
46
|
def setup
|
26
47
|
@emitted_records = []
|
27
48
|
|
28
|
-
@crawler = ::Fluent::GithubActivities::Crawler.new(crawler_options)
|
49
|
+
@crawler = ::Fluent::Plugin::GithubActivities::Crawler.new(crawler_options)
|
29
50
|
@crawler.on_emit = lambda do |tag, record|
|
30
|
-
@emitted_records << { :
|
31
|
-
:
|
51
|
+
@emitted_records << { tag: tag,
|
52
|
+
record: record }
|
32
53
|
end
|
33
54
|
@crawler.request_queue.clear
|
34
55
|
end
|
35
56
|
|
36
57
|
def crawler_options
|
37
58
|
{
|
38
|
-
:
|
39
|
-
:
|
40
|
-
:
|
59
|
+
include_commits_from_pull_request: false,
|
60
|
+
include_foreign_commits: false,
|
61
|
+
watching_users: [
|
41
62
|
'piroor',
|
42
63
|
],
|
64
|
+
log: $log,
|
65
|
+
pos_storage: DummyStorage.new
|
43
66
|
}
|
44
67
|
end
|
45
68
|
|
@@ -68,19 +91,19 @@ class CrawlerTest < Test::Unit::TestCase
|
|
68
91
|
end
|
69
92
|
|
70
93
|
REQUEST_PATTERNS = {
|
71
|
-
:
|
72
|
-
:
|
73
|
-
:
|
74
|
-
:
|
75
|
-
:
|
94
|
+
user_events: {
|
95
|
+
request: { type: :events,
|
96
|
+
user: "username" },
|
97
|
+
uri: "https://api.github.com/users/username/events/public",
|
98
|
+
headers: {},
|
76
99
|
},
|
77
|
-
:
|
78
|
-
:
|
79
|
-
:
|
80
|
-
:
|
81
|
-
:
|
82
|
-
:
|
83
|
-
:
|
100
|
+
user_events_with_previous_request: {
|
101
|
+
request: { type: :events,
|
102
|
+
user: "username",
|
103
|
+
previous_entity_tag: "aaaaa",
|
104
|
+
process_after: 29 },
|
105
|
+
uri: "https://api.github.com/users/username/events/public",
|
106
|
+
headers: {
|
84
107
|
"If-None-Match" => "aaaaa",
|
85
108
|
},
|
86
109
|
},
|
@@ -102,10 +125,10 @@ class CrawlerTest < Test::Unit::TestCase
|
|
102
125
|
def test_without_previous_response
|
103
126
|
now = Time.now
|
104
127
|
@crawler.reserve_user_events("username",
|
105
|
-
:
|
128
|
+
now: now)
|
106
129
|
expected_request = {
|
107
|
-
:
|
108
|
-
:
|
130
|
+
type: :events,
|
131
|
+
user: "username",
|
109
132
|
}
|
110
133
|
assert_equal([expected_request],
|
111
134
|
@crawler.request_queue)
|
@@ -114,16 +137,16 @@ class CrawlerTest < Test::Unit::TestCase
|
|
114
137
|
def test_with_previous_response
|
115
138
|
now = Time.now
|
116
139
|
@crawler.reserve_user_events("username",
|
117
|
-
:
|
118
|
-
:
|
140
|
+
now: now,
|
141
|
+
previous_response: {
|
119
142
|
"ETag" => "aaaaa",
|
120
143
|
"X-Poll-Interval" => 60,
|
121
144
|
})
|
122
145
|
expected_request = {
|
123
|
-
:
|
124
|
-
:
|
125
|
-
:
|
126
|
-
:
|
146
|
+
type: :events,
|
147
|
+
user: "username",
|
148
|
+
previous_entity_tag: "aaaaa",
|
149
|
+
process_after: now.to_i + 60,
|
127
150
|
}
|
128
151
|
assert_equal([expected_request],
|
129
152
|
@crawler.request_queue)
|
@@ -139,15 +162,15 @@ class CrawlerTest < Test::Unit::TestCase
|
|
139
162
|
}
|
140
163
|
@crawler.process_user_event("username", event)
|
141
164
|
expected = {
|
142
|
-
:
|
143
|
-
:
|
144
|
-
{ :
|
145
|
-
:
|
165
|
+
request_queue: [],
|
166
|
+
emitted_records: [
|
167
|
+
{ tag: "test",
|
168
|
+
record: fill_extra_fields(event) },
|
146
169
|
],
|
147
170
|
}
|
148
171
|
assert_equal(expected,
|
149
|
-
{ :
|
150
|
-
:
|
172
|
+
{ request_queue: @crawler.request_queue,
|
173
|
+
emitted_records: @emitted_records })
|
151
174
|
end
|
152
175
|
end
|
153
176
|
|
@@ -160,15 +183,15 @@ class CrawlerTest < Test::Unit::TestCase
|
|
160
183
|
}
|
161
184
|
@crawler.process_user_events("username", [event])
|
162
185
|
expected = {
|
163
|
-
:
|
164
|
-
:
|
165
|
-
{ :
|
166
|
-
:
|
186
|
+
request_queue: [],
|
187
|
+
emitted_records: [
|
188
|
+
{ tag: "test",
|
189
|
+
record: fill_extra_fields(event) },
|
167
190
|
],
|
168
191
|
}
|
169
192
|
assert_equal(expected,
|
170
|
-
{ :
|
171
|
-
:
|
193
|
+
{ request_queue: @crawler.request_queue,
|
194
|
+
emitted_records: @emitted_records })
|
172
195
|
end
|
173
196
|
end
|
174
197
|
|
@@ -186,18 +209,18 @@ class CrawlerTest < Test::Unit::TestCase
|
|
186
209
|
|
187
210
|
expected_push = fill_extra_fields(expected_push)
|
188
211
|
expected = {
|
189
|
-
:
|
190
|
-
{ :
|
191
|
-
:
|
192
|
-
:
|
193
|
-
:
|
212
|
+
request_queue: [
|
213
|
+
{ type: ::Fluent::Plugin::GithubActivities::TYPE_COMMIT,
|
214
|
+
uri: "#{base}/8e90721ff5d89f52b5b3adf0b86db01f03dc5588",
|
215
|
+
sha: "8e90721ff5d89f52b5b3adf0b86db01f03dc5588",
|
216
|
+
push: expected_push },
|
194
217
|
],
|
195
|
-
:
|
218
|
+
emitted_records: [
|
196
219
|
],
|
197
220
|
}
|
198
221
|
assert_equal(expected,
|
199
|
-
{ :
|
200
|
-
:
|
222
|
+
{ request_queue: @crawler.request_queue,
|
223
|
+
emitted_records: @emitted_records })
|
201
224
|
end
|
202
225
|
|
203
226
|
def test_multiple_commits
|
@@ -213,34 +236,34 @@ class CrawlerTest < Test::Unit::TestCase
|
|
213
236
|
|
214
237
|
expected_push = fill_extra_fields(expected_push)
|
215
238
|
expected = {
|
216
|
-
:
|
217
|
-
{ :
|
218
|
-
:
|
219
|
-
:
|
220
|
-
:
|
221
|
-
{ :
|
222
|
-
:
|
223
|
-
:
|
224
|
-
:
|
225
|
-
{ :
|
226
|
-
:
|
227
|
-
:
|
228
|
-
:
|
229
|
-
{ :
|
230
|
-
:
|
231
|
-
:
|
232
|
-
:
|
233
|
-
{ :
|
234
|
-
:
|
235
|
-
:
|
236
|
-
:
|
239
|
+
request_queue: [
|
240
|
+
{ type: ::Fluent::Plugin::GithubActivities::TYPE_COMMIT,
|
241
|
+
uri: "#{base}/c908f319c7b6d5c5a69c8b675bde40dd990ee364",
|
242
|
+
sha: "c908f319c7b6d5c5a69c8b675bde40dd990ee364",
|
243
|
+
push: expected_push },
|
244
|
+
{ type: ::Fluent::Plugin::GithubActivities::TYPE_COMMIT,
|
245
|
+
uri: "#{base}/8ce6de7582376187e17e233dbae13575311a8c0b",
|
246
|
+
sha: "8ce6de7582376187e17e233dbae13575311a8c0b",
|
247
|
+
push: expected_push },
|
248
|
+
{ type: ::Fluent::Plugin::GithubActivities::TYPE_COMMIT,
|
249
|
+
uri: "#{base}/c85e33bace040b7b42983e14d2b11a491d102072",
|
250
|
+
sha: "c85e33bace040b7b42983e14d2b11a491d102072",
|
251
|
+
push: expected_push },
|
252
|
+
{ type: ::Fluent::Plugin::GithubActivities::TYPE_COMMIT,
|
253
|
+
uri: "#{base}/63e085b7607a3043cfbf9a866561807fbdda8a10",
|
254
|
+
sha: "63e085b7607a3043cfbf9a866561807fbdda8a10",
|
255
|
+
push: expected_push },
|
256
|
+
{ type: ::Fluent::Plugin::GithubActivities::TYPE_COMMIT,
|
257
|
+
uri: "#{base}/8e90721ff5d89f52b5b3adf0b86db01f03dc5588",
|
258
|
+
sha: "8e90721ff5d89f52b5b3adf0b86db01f03dc5588",
|
259
|
+
push: expected_push },
|
237
260
|
],
|
238
|
-
:
|
261
|
+
emitted_records: [
|
239
262
|
],
|
240
263
|
}
|
241
264
|
assert_equal(expected,
|
242
|
-
{ :
|
243
|
-
:
|
265
|
+
{ request_queue: @crawler.request_queue,
|
266
|
+
emitted_records: @emitted_records })
|
244
267
|
end
|
245
268
|
end
|
246
269
|
|
@@ -249,15 +272,15 @@ class CrawlerTest < Test::Unit::TestCase
|
|
249
272
|
event = JSON.parse(fixture_data("issues-event.json"))
|
250
273
|
@crawler.process_user_event("user", event)
|
251
274
|
expected = {
|
252
|
-
:
|
253
|
-
:
|
254
|
-
{ :
|
255
|
-
:
|
275
|
+
request_queue: [],
|
276
|
+
emitted_records: [
|
277
|
+
{ tag: "issue-open",
|
278
|
+
record: fill_extra_fields(event) }
|
256
279
|
],
|
257
280
|
}
|
258
281
|
assert_equal(expected,
|
259
|
-
{ :
|
260
|
-
:
|
282
|
+
{ request_queue: @crawler.request_queue,
|
283
|
+
emitted_records: @emitted_records })
|
261
284
|
end
|
262
285
|
end
|
263
286
|
|
@@ -266,15 +289,15 @@ class CrawlerTest < Test::Unit::TestCase
|
|
266
289
|
event = JSON.parse(fixture_data("issue-comment-event.json"))
|
267
290
|
@crawler.process_user_event("user", event)
|
268
291
|
expected = {
|
269
|
-
:
|
270
|
-
:
|
271
|
-
{ :
|
272
|
-
:
|
292
|
+
request_queue: [],
|
293
|
+
emitted_records: [
|
294
|
+
{ tag: "issue-comment",
|
295
|
+
record: fill_extra_fields(event) }
|
273
296
|
],
|
274
297
|
}
|
275
298
|
assert_equal(expected,
|
276
|
-
{ :
|
277
|
-
:
|
299
|
+
{ request_queue: @crawler.request_queue,
|
300
|
+
emitted_records: @emitted_records })
|
278
301
|
end
|
279
302
|
end
|
280
303
|
|
@@ -283,15 +306,15 @@ class CrawlerTest < Test::Unit::TestCase
|
|
283
306
|
event = JSON.parse(fixture_data("commit-comment-event.json"))
|
284
307
|
@crawler.process_user_event("user", event)
|
285
308
|
expected = {
|
286
|
-
:
|
287
|
-
:
|
288
|
-
{ :
|
289
|
-
:
|
309
|
+
request_queue: [],
|
310
|
+
emitted_records: [
|
311
|
+
{ tag: "commit-comment",
|
312
|
+
record: fill_extra_fields(event) }
|
290
313
|
],
|
291
314
|
}
|
292
315
|
assert_equal(expected,
|
293
|
-
{ :
|
294
|
-
:
|
316
|
+
{ request_queue: @crawler.request_queue,
|
317
|
+
emitted_records: @emitted_records })
|
295
318
|
end
|
296
319
|
end
|
297
320
|
|
@@ -300,15 +323,15 @@ class CrawlerTest < Test::Unit::TestCase
|
|
300
323
|
event = JSON.parse(fixture_data("fork-event.json"))
|
301
324
|
@crawler.process_user_event("user", event)
|
302
325
|
expected = {
|
303
|
-
:
|
304
|
-
:
|
305
|
-
{ :
|
306
|
-
:
|
326
|
+
request_queue: [],
|
327
|
+
emitted_records: [
|
328
|
+
{ tag: "fork",
|
329
|
+
record: fill_extra_fields(event) }
|
307
330
|
],
|
308
331
|
}
|
309
332
|
assert_equal(expected,
|
310
|
-
{ :
|
311
|
-
:
|
333
|
+
{ request_queue: @crawler.request_queue,
|
334
|
+
emitted_records: @emitted_records })
|
312
335
|
end
|
313
336
|
end
|
314
337
|
|
@@ -317,15 +340,15 @@ class CrawlerTest < Test::Unit::TestCase
|
|
317
340
|
event = JSON.parse(fixture_data("pull-request-event.json"))
|
318
341
|
@crawler.process_user_event("user", event)
|
319
342
|
expected = {
|
320
|
-
:
|
321
|
-
:
|
322
|
-
{ :
|
323
|
-
:
|
343
|
+
request_queue: [],
|
344
|
+
emitted_records: [
|
345
|
+
{ tag: "pull-request",
|
346
|
+
record: fill_extra_fields(event) }
|
324
347
|
],
|
325
348
|
}
|
326
349
|
assert_equal(expected,
|
327
|
-
{ :
|
328
|
-
:
|
350
|
+
{ request_queue: @crawler.request_queue,
|
351
|
+
emitted_records: @emitted_records })
|
329
352
|
end
|
330
353
|
end
|
331
354
|
|
@@ -347,17 +370,17 @@ class CrawlerTest < Test::Unit::TestCase
|
|
347
370
|
expected_push = fill_extra_fields(expected_push)
|
348
371
|
|
349
372
|
expected = {
|
350
|
-
:
|
351
|
-
:
|
352
|
-
{ :
|
353
|
-
:
|
354
|
-
{ :
|
355
|
-
:
|
373
|
+
request_queue: [],
|
374
|
+
emitted_records: [
|
375
|
+
{ tag: "commit",
|
376
|
+
record: expected_commit },
|
377
|
+
{ tag: "push",
|
378
|
+
record: expected_push }
|
356
379
|
],
|
357
380
|
}
|
358
381
|
assert_equal(expected,
|
359
|
-
{ :
|
360
|
-
:
|
382
|
+
{ request_queue: @crawler.request_queue,
|
383
|
+
emitted_records: @emitted_records })
|
361
384
|
end
|
362
385
|
end
|
363
386
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-github-activities
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YUKI Hiroshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -16,20 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.14.13
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: '2'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.14.13
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: '2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rake
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,6 +100,20 @@ dependencies:
|
|
100
100
|
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: webmock
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
103
117
|
description: This provides ability to crawl public activities of users.
|
104
118
|
email:
|
105
119
|
- yuki@clear-code.com
|
@@ -112,7 +126,6 @@ files:
|
|
112
126
|
- fluent-plugin-github-activities.gemspec
|
113
127
|
- lib/fluent/plugin/github-activities.rb
|
114
128
|
- lib/fluent/plugin/github-activities/crawler.rb
|
115
|
-
- lib/fluent/plugin/github-activities/safe_file_writer.rb
|
116
129
|
- lib/fluent/plugin/github-activities/users_manager.rb
|
117
130
|
- lib/fluent/plugin/in_github-activities.rb
|
118
131
|
- test/fixture.rb
|
@@ -124,11 +137,14 @@ files:
|
|
124
137
|
- test/fixture/issue-comment-event.json
|
125
138
|
- test/fixture/issues-event.json
|
126
139
|
- test/fixture/line-note-event.json
|
140
|
+
- test/fixture/piroor-events.json
|
127
141
|
- test/fixture/pull-request-accepted-event.json
|
128
142
|
- test/fixture/pull-request-comment-event.json
|
129
143
|
- test/fixture/pull-request-event.json
|
130
144
|
- test/fixture/push-event-multiple-commits.json
|
131
145
|
- test/fixture/push-event.json
|
146
|
+
- test/fixture/users.txt
|
147
|
+
- test/plugin/test_in_github_activity.rb
|
132
148
|
- test/run-test.rb
|
133
149
|
- test/test_crawler.rb
|
134
150
|
homepage: https://github.com/clear-code/fluent-plugin-github-activities
|
@@ -164,11 +180,14 @@ test_files:
|
|
164
180
|
- test/fixture/issue-comment-event.json
|
165
181
|
- test/fixture/commit.json
|
166
182
|
- test/fixture/push-event-multiple-commits.json
|
183
|
+
- test/fixture/users.txt
|
167
184
|
- test/fixture/branch-event.json
|
185
|
+
- test/fixture/piroor-events.json
|
168
186
|
- test/fixture/push-event.json
|
169
187
|
- test/fixture/fork-event.json
|
170
188
|
- test/fixture/issues-event.json
|
171
189
|
- test/fixture/accept-pull-request-event.json
|
172
190
|
- test/run-test.rb
|
173
191
|
- test/fixture.rb
|
192
|
+
- test/plugin/test_in_github_activity.rb
|
174
193
|
- test/test_crawler.rb
|