plunk 0.0.5 → 0.0.6

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: 384ac77eadf37f80bedaf8f661047d33d45cb82f
4
- data.tar.gz: bf08baf12099add5dd94678de046e036e0b451ab
3
+ metadata.gz: c5efb7de164143cec1cad9a463333777a36d30e3
4
+ data.tar.gz: 4aca7635698f180d0510ddd8e89a78c5d71b75cf
5
5
  SHA512:
6
- metadata.gz: 1679121e3c9518e4c871f767835cb1ae02d04f5d209e7ace67ad3c934da0393114524a015c3714dda0db97b3f132b0c4b0430238ebbdc3d2e3952d65dfc3e1af
7
- data.tar.gz: 35184a93a49971e613e80d0711c56324a6163f3380038da9b34a26b6bb19184f97a88f2d90cc1d73f56baa5ec18c8eacf37f52bd1e190acdeae9585e9401926c
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.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)
@@ -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 *(rs)
26
- self.join(rs)
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
-
@@ -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(:query),
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.utc.to_datetime
57
+ end_time = Time.now
57
58
 
58
59
  Plunk::ResultSet.new(
59
- query_string: query,
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.5"
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
- it 'should parse last command with a search' do
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
@@ -0,0 +1,4 @@
1
+ require 'plunk/result_set'
2
+
3
+ describe Plunk::ResultSet do
4
+ end
@@ -1,10 +1,4 @@
1
+ require 'plunk/transformer'
1
2
 
2
- # after :each do
3
- # transformed = @transformer.apply(@parsed)
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.5
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