plunk 0.0.5 → 0.0.6
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 +4 -4
- data/Gemfile.lock +5 -1
- data/lib/plunk/result_set.rb +3 -10
- data/lib/plunk/transformer.rb +4 -3
- data/plunk.gemspec +2 -1
- data/spec/parser_spec.rb +28 -1
- data/spec/result_set_spec.rb +4 -0
- data/spec/transformer_spec.rb +3 -9
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5efb7de164143cec1cad9a463333777a36d30e3
|
4
|
+
data.tar.gz: 4aca7635698f180d0510ddd8e89a78c5d71b75cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c411eb71aee6b4495c5939d9bb58e12d421b227a97d3ce2ac33fb5c939bacfe933f883879097ba526f8d02e027b146f7ee774ab53c797f2c695e8853a3f2151
|
7
|
+
data.tar.gz: 58a3d1155ae86ab62be314f16f9c013600c7704e9f67e75f7abf8b4ca69b15c352ee5226d55aa28d4bfdd054d21009f6776a4b39d4b1b9809a15773c987acbf7
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
plunk (0.0.
|
4
|
+
plunk (0.0.5)
|
5
|
+
active_support
|
5
6
|
json
|
6
7
|
parslet
|
7
8
|
rest-client
|
@@ -9,6 +10,9 @@ PATH
|
|
9
10
|
GEM
|
10
11
|
remote: https://rubygems.org/
|
11
12
|
specs:
|
13
|
+
active_support (3.0.0)
|
14
|
+
activesupport (= 3.0.0)
|
15
|
+
activesupport (3.0.0)
|
12
16
|
blankslate (2.1.2.4)
|
13
17
|
diff-lcs (1.2.5)
|
14
18
|
json (1.8.1)
|
data/lib/plunk/result_set.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require_relative 'elasticsearch'
|
2
|
-
|
3
1
|
class Plunk::ResultSet
|
4
2
|
attr_accessor :query
|
5
3
|
|
@@ -7,7 +5,7 @@ class Plunk::ResultSet
|
|
7
5
|
if opts
|
8
6
|
@query = { query: { }}
|
9
7
|
|
10
|
-
if opts[:query_string]
|
8
|
+
if @query_string = opts[:query_string]
|
11
9
|
@query[:query][:query_string] = { query: opts[:query_string] }
|
12
10
|
end
|
13
11
|
|
@@ -22,12 +20,8 @@ class Plunk::ResultSet
|
|
22
20
|
end
|
23
21
|
end
|
24
22
|
|
25
|
-
def
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
def join(rs)
|
30
|
-
Plunk::ResultSet.new("[ #{@query} * #{rs.query} ]")
|
23
|
+
def raw_query
|
24
|
+
@query_string
|
31
25
|
end
|
32
26
|
|
33
27
|
def eval(elasticsearch_recursor)
|
@@ -35,4 +29,3 @@ class Plunk::ResultSet
|
|
35
29
|
elasticsearch_recursor.search(@query.to_json)
|
36
30
|
end
|
37
31
|
end
|
38
|
-
|
data/lib/plunk/transformer.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'parslet'
|
2
|
+
require 'active_support/core_ext'
|
2
3
|
|
3
4
|
class Plunk::Transformer < Parslet::Transform
|
4
5
|
|
@@ -31,7 +32,7 @@ class Plunk::Transformer < Parslet::Transform
|
|
31
32
|
end
|
32
33
|
|
33
34
|
rule(
|
34
|
-
search: simple(:
|
35
|
+
search: simple(:result_set),
|
35
36
|
timerange: {
|
36
37
|
quantity: simple(:quantity),
|
37
38
|
quantifier: simple(:quantifier)
|
@@ -53,10 +54,10 @@ class Plunk::Transformer < Parslet::Transform
|
|
53
54
|
int_quantity.weeks.ago
|
54
55
|
end
|
55
56
|
|
56
|
-
end_time = Time.now
|
57
|
+
end_time = Time.now
|
57
58
|
|
58
59
|
Plunk::ResultSet.new(
|
59
|
-
query_string:
|
60
|
+
query_string: result_set.raw_query,
|
60
61
|
start_time: start_time,
|
61
62
|
end_time: end_time)
|
62
63
|
end
|
data/plunk.gemspec
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "plunk"
|
3
|
-
s.version = "0.0.
|
3
|
+
s.version = "0.0.6"
|
4
4
|
s.date = "2013-12-03"
|
5
5
|
s.add_runtime_dependency "json"
|
6
6
|
s.add_runtime_dependency "parslet"
|
7
7
|
s.add_runtime_dependency "rest-client"
|
8
|
+
s.add_runtime_dependency "active_support"
|
8
9
|
s.add_development_dependency "rspec"
|
9
10
|
s.summary = "Elasticsearch query language"
|
10
11
|
s.description = "Human-friendly query language for Elasticsearch"
|
data/spec/parser_spec.rb
CHANGED
@@ -15,6 +15,7 @@ end
|
|
15
15
|
describe Plunk::Parser do
|
16
16
|
before :all do
|
17
17
|
@parser = Plunk::ParserWrapper.new
|
18
|
+
@transformer = Plunk::Transformer.new
|
18
19
|
end
|
19
20
|
|
20
21
|
context 'single-query searches' do
|
@@ -56,13 +57,39 @@ describe Plunk::Parser do
|
|
56
57
|
end
|
57
58
|
|
58
59
|
context 'the last command' do
|
59
|
-
|
60
|
+
before :each do
|
60
61
|
@parsed = @parser.parse 'last 24w tshark.@src_ip = bar'
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should parse last command with a search' do
|
61
65
|
expect(@parsed[:timerange][:quantity].to_s).to eq '24'
|
62
66
|
expect(@parsed[:timerange][:quantifier].to_s).to eq 'w'
|
63
67
|
expect(@parsed[:search][:field].to_s).to eq 'tshark.@src_ip'
|
64
68
|
expect(@parsed[:search][:value].to_s).to eq 'bar'
|
65
69
|
end
|
70
|
+
|
71
|
+
context 'transformation' do
|
72
|
+
before :each do
|
73
|
+
@result_set = @transformer.apply(@parsed)
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should have the proper result set' do
|
77
|
+
@result_set.should be_a Plunk::ResultSet
|
78
|
+
@result_set.query.should be_present
|
79
|
+
|
80
|
+
query = { query: {
|
81
|
+
query_string: {
|
82
|
+
query: "tshark.@src_ip:bar"
|
83
|
+
},
|
84
|
+
range: {
|
85
|
+
'@timestamp' => {
|
86
|
+
gte: 24.weeks.ago,
|
87
|
+
lte: Time.now
|
88
|
+
}}}}
|
89
|
+
|
90
|
+
@result_set.query.to_json.should eq query.to_json
|
91
|
+
end
|
92
|
+
end
|
66
93
|
end
|
67
94
|
|
68
95
|
context 'chained searches' do
|
data/spec/result_set_spec.rb
CHANGED
data/spec/transformer_spec.rb
CHANGED
@@ -1,10 +1,4 @@
|
|
1
|
+
require 'plunk/transformer'
|
1
2
|
|
2
|
-
|
3
|
-
|
4
|
-
# if transformed.is_a? Array
|
5
|
-
# transformed.map(&:class).uniq.should =~ Array(ResultSet)
|
6
|
-
# else
|
7
|
-
# transformed.should be_a ResultSet
|
8
|
-
# end
|
9
|
-
# end
|
10
|
-
|
3
|
+
describe Plunk::Transformer do
|
4
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plunk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ram Mehta
|
@@ -53,6 +53,20 @@ dependencies:
|
|
53
53
|
- - '>='
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: active_support
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: rspec
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|