ruby-druid 0.11.2 → 0.11.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +7 -0
- data/lib/druid/data_source.rb +9 -5
- data/lib/druid/version.rb +1 -1
- data/spec/lib/data_source_spec.rb +15 -1
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 50802fa6fd17c18928330f89aa8a9e8aa1b552c9
|
4
|
+
data.tar.gz: 52827d8bb44dc95de2335f9792ab79f211ed0ad0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9606e256ba1341ba5de30371eb5a65307506131be89ebff99cbc21e2546f5e692a8487b89ad8d410e8491cfc2980dec00a79476400e1091a8cf92247726ab0c2
|
7
|
+
data.tar.gz: 82a3948ec8332ff637ba32b0a981fb07fdce8efc7e44c5d59a5c37ca70d5cd27d406988bb8c74071936ac28ec3a3cbfeef07a5453cad2825796413e35db5c1f0
|
data/README.md
CHANGED
@@ -276,6 +276,13 @@ Druid::Query::Builder.new.filter{dimension => 1, dimension1 =>2, dimension2 => 3
|
|
276
276
|
Druid::Query::Builder.new.filter{dimension.eq(1) & dimension1.eq(2) & dimension2.eq(3)}
|
277
277
|
```
|
278
278
|
|
279
|
+
## Instrumentation
|
280
|
+
|
281
|
+
Provides a single event `post.druid`. Payload:
|
282
|
+
|
283
|
+
- `data_source`
|
284
|
+
- `query`
|
285
|
+
|
279
286
|
## Contributing
|
280
287
|
|
281
288
|
1. Fork it
|
data/lib/druid/data_source.rb
CHANGED
@@ -59,12 +59,16 @@ module Druid
|
|
59
59
|
query.dataSource = name
|
60
60
|
|
61
61
|
req = Net::HTTP::Post.new(uri.path, { 'Content-Type' => 'application/json' })
|
62
|
-
|
62
|
+
query_as_json = query.as_json
|
63
|
+
req.body = MultiJson.dump(query_as_json)
|
63
64
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
|
66
|
+
response = ActiveSupport::Notifications.instrument('post.druid', data_source: name, query: query_as_json) do
|
67
|
+
Net::HTTP.new(uri.host, uri.port).start do |http|
|
68
|
+
http.open_timeout = 10 # if druid is down fail fast
|
69
|
+
http.read_timeout = nil # we wait until druid is finished
|
70
|
+
http.request(req)
|
71
|
+
end
|
68
72
|
end
|
69
73
|
|
70
74
|
if response.code != '200'
|
data/lib/druid/version.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
describe Druid::DataSource do
|
2
2
|
|
3
3
|
context '#post' do
|
4
|
-
|
4
|
+
context 'if the request is succesful' do
|
5
|
+
before do
|
5
6
|
# MRI
|
6
7
|
stub_request(:post, "http://www.example.com/druid/v2").
|
7
8
|
with(:body => "{\"context\":{\"queryId\":null},\"queryType\":\"timeseries\",\"intervals\":[\"2013-04-04T00:00:00+00:00/2013-04-04T00:00:00+00:00\"],\"granularity\":\"all\",\"dataSource\":\"test\"}",
|
@@ -12,12 +13,25 @@ describe Druid::DataSource do
|
|
12
13
|
with(:body => "{\"context\":{\"queryId\":null},\"granularity\":\"all\",\"intervals\":[\"2013-04-04T00:00:00+00:00/2013-04-04T00:00:00+00:00\"],\"queryType\":\"timeseries\",\"dataSource\":\"test\"}",
|
13
14
|
:headers => { 'Accept' => '*/*', 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type' => 'application/json', 'User-Agent' => 'Ruby' }).
|
14
15
|
to_return(:status => 200, :body => '[]', :headers => {})
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'parses response on 200' do
|
15
19
|
ds = Druid::DataSource.new('test/test', 'http://www.example.com/druid/v2')
|
16
20
|
query = Druid::Query::Builder.new.interval('2013-04-04', '2013-04-04').granularity(:all).query
|
17
21
|
query.context.queryId = nil
|
18
22
|
expect(ds.post(query)).to be_empty
|
19
23
|
end
|
20
24
|
|
25
|
+
it 'instruments requests' do
|
26
|
+
expect(ActiveSupport::Notifications).to receive(:instrument).with('post.druid', data_source: 'test', query: instance_of(Hash)).and_call_original
|
27
|
+
|
28
|
+
ds = Druid::DataSource.new('test/test', 'http://www.example.com/druid/v2')
|
29
|
+
query = Druid::Query::Builder.new.interval('2013-04-04', '2013-04-04').granularity(:all).query
|
30
|
+
query.context.queryId = nil
|
31
|
+
ds.post(query)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
21
35
|
it 'raises on request failure' do
|
22
36
|
stub_request(:post, 'http://www.example.com/druid/v2')
|
23
37
|
.with(
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-druid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ruby Druid Community
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -165,7 +165,7 @@ dependencies:
|
|
165
165
|
description: |2
|
166
166
|
ruby-druid is a Ruby client for Druid. It includes a Squeel-like query DSL
|
167
167
|
and generates a JSON query that can be sent to Druid directly.
|
168
|
-
email:
|
168
|
+
email:
|
169
169
|
executables: []
|
170
170
|
extensions: []
|
171
171
|
extra_rdoc_files: []
|
@@ -195,7 +195,7 @@ homepage: https://github.com/ruby-druid/ruby-druid
|
|
195
195
|
licenses:
|
196
196
|
- MIT
|
197
197
|
metadata: {}
|
198
|
-
post_install_message:
|
198
|
+
post_install_message:
|
199
199
|
rdoc_options: []
|
200
200
|
require_paths:
|
201
201
|
- lib
|
@@ -210,8 +210,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
210
|
- !ruby/object:Gem::Version
|
211
211
|
version: '0'
|
212
212
|
requirements: []
|
213
|
-
|
214
|
-
|
213
|
+
rubyforge_project:
|
214
|
+
rubygems_version: 2.6.11
|
215
|
+
signing_key:
|
215
216
|
specification_version: 4
|
216
217
|
summary: A Ruby client for Druid
|
217
218
|
test_files:
|