ruby-druid 0.11.2 → 0.11.3
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 +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:
|