plunk 0.2.6 → 0.2.7

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: 1bc1207f69f06280c177f65cdce11a259502ac58
4
- data.tar.gz: 909ee371c459abed454a019ac37f46fd48c3bfd5
3
+ metadata.gz: 3408599e2af768132c73ca5baaee9e664a3a4e7d
4
+ data.tar.gz: ae781102e75198bbcc8645fd1ae16e6bcd5e00b2
5
5
  SHA512:
6
- metadata.gz: b45c80c41996d29e5391ab23368e27e50de2c00780d1d652d95adbf60c20ef471830821f3bfd4e8e0a1f8d12ff5041edb7b8d90782f80380e4a7633aa0fede4a
7
- data.tar.gz: 8a6d79f487a627265335408439504726f5293e7e1ec8f81e275da83110e8cf55ad0b80f35e0af25baba46c3cf6c63b2c09fcf8864a538e7e91f9a2b83eac5757
6
+ metadata.gz: 8c82d20b434eb7a3e37272ea66ed0f70476469e8ee1b6871676f0aca673a6e21152fc2d59e75b8856ca160ce15778f05458616e7299de5c50bc9f97594de011a
7
+ data.tar.gz: b457cc61a5efa0b7aa7b926a5f8fefe3accc6bc7036955ed604494c71d1709caa66fd1b131c6f58e0d0dde741a4f8b229ad28bf695a9a95b9022484e9016950e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- plunk (0.2.5)
4
+ plunk (0.2.6)
5
5
  activesupport
6
6
  elasticsearch
7
7
  json
data/lib/plunk/parser.rb CHANGED
@@ -48,7 +48,7 @@ module Plunk
48
48
  # possible right-hand side values
49
49
  rule(:wildcard) { match('[^=\s)(|]').repeat(1) }
50
50
  rule(:searchop) { match('[=]').as(:op) }
51
- rule(:query_value) { number | string | datetime | wildcard }
51
+ rule(:query_value) { string | wildcard | datetime | number }
52
52
 
53
53
  # boolean operators search
54
54
  rule(:concatop) { (str('OR') | str('AND')) >> space? }
data/plunk.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "plunk"
3
- s.version = "0.2.6"
3
+ s.version = "0.2.7"
4
4
  s.add_runtime_dependency "json"
5
5
  s.add_runtime_dependency "parslet"
6
6
  s.add_runtime_dependency "elasticsearch"
@@ -1,28 +1,60 @@
1
1
  require 'spec_helper'
2
+ require 'shared/time_stubs'
3
+ require 'shared/plunk_stubs'
2
4
 
3
5
  describe 'chained searches' do
4
- it 'should parse last 24h foo=bar baz=fez' do
5
- parsed = @parser.parse 'last 24h foo=bar baz=fez ham=delicious'
6
+ include_context "time stubs"
7
+ include_context "plunk stubs"
8
+
9
+ before :each do
10
+ @time = Time.parse("01/01/2010 10:00")
11
+ Time.any_instance.stub(:now).and_return(@time)
12
+ end
13
+
14
+ it 'should parse last 24h foo_type=bar baz="fez" host=27.224.123.110' do
15
+ parsed = @parser.parse 'last 24h foo_type=bar baz="fez" host=27.224.123.110'
16
+ result = @transformer.apply parsed
17
+ expect(result.query).to eq({query:{filtered:{query:{
18
+ query_string: {
19
+ query: 'foo_type:bar'
20
+ }},
21
+ filter: {
22
+ and: [{
23
+ range: {
24
+ :timestamp => {
25
+ gte: @time - 24.hours,
26
+ lte: @time
27
+ }
28
+ }},
29
+ {query_string: {
30
+ query: 'baz:fez'
31
+ }},
32
+ {query_string: {
33
+ query: 'host:27.224.123.110'
34
+ }}
35
+ ]}}}})
36
+ end
37
+
38
+ pending 'should parse last 24h (foo_type=bar AND baz="fez" AND host=27.224.123.110)' do
39
+ parsed = @parser.parse 'last 24h (foo_type=bar AND baz="fez" AND host=27.224.123.110)'
6
40
  result = @transformer.apply parsed
7
- puts "PARSED: #{parsed}"
8
- puts "RESULT_SET: #{result.inspect}"
9
41
  expect(result.query).to eq({query:{filtered:{query:{
10
42
  query_string: {
11
- query: 'foo:bar'
43
+ query: 'foo_type:bar'
12
44
  }},
13
45
  filter: {
14
46
  and: [{
15
47
  range: {
16
48
  :timestamp => {
17
49
  gte: 1.day.ago.utc.iso8601(3),
18
- lte: Time.now.utc.iso8601(3)
50
+ lte: @time
19
51
  }
20
52
  }},
21
53
  {query_string: {
22
54
  query: 'baz:fez'
23
55
  }},
24
56
  {query_string: {
25
- query: 'ham:delicious'
57
+ query: 'host:27.224.123.110'
26
58
  }}
27
59
  ]}}}})
28
60
  end
data/spec/last_spec.rb CHANGED
@@ -1,13 +1,18 @@
1
1
  require 'spec_helper'
2
+ require 'shared/time_stubs'
3
+ require 'shared/plunk_stubs'
2
4
 
3
5
  describe 'the last command' do
6
+ include_context "time stubs"
7
+ include_context "plunk stubs"
8
+
4
9
  it 'should parse last 24h' do
5
10
  result = @transformer.apply @parser.parse('last 24h')
6
11
  expect(result.query.to_s).to eq({query:{filtered:{query:{
7
12
  range: {
8
13
  Plunk.timestamp_field => {
9
- gte: 24.hours.ago.utc.to_datetime.iso8601(3),
10
- lte: Time.now.utc.to_datetime.iso8601(3)
14
+ gte: @time - 24.hours,
15
+ lte: @time
11
16
  }}}}}}.to_s)
12
17
  end
13
18
 
@@ -16,8 +21,8 @@ describe 'the last command' do
16
21
  expect(result.query.to_s).to eq({query:{filtered:{query:{
17
22
  range: {
18
23
  Plunk.timestamp_field => {
19
- gte: 24.days.ago.utc.to_datetime.iso8601(3),
20
- lte: Time.now.utc.to_datetime.iso8601(3)
24
+ gte: @time - 24.days,
25
+ lte: @time
21
26
  }}}}}}.to_s)
22
27
  end
23
28
 
@@ -26,8 +31,8 @@ describe 'the last command' do
26
31
  expect(result.query.to_s).to eq({query:{filtered:{query:{
27
32
  range: {
28
33
  Plunk.timestamp_field => {
29
- gte: 24.weeks.ago.utc.to_datetime.iso8601(3),
30
- lte: Time.now.utc.to_datetime.iso8601(3)
34
+ gte: @time - 24.weeks,
35
+ lte: @time
31
36
  }}}}}}.to_s)
32
37
  end
33
38
 
@@ -36,8 +41,8 @@ describe 'the last command' do
36
41
  expect(result.query.to_s).to eq({query:{filtered:{query:{
37
42
  range: {
38
43
  Plunk.timestamp_field => {
39
- gte: 24.seconds.ago.utc.to_datetime.iso8601(3),
40
- lte: Time.now.utc.to_datetime.iso8601(3)
44
+ gte: @time - 24.seconds,
45
+ lte: @time
41
46
  }}}}}}.to_s)
42
47
  end
43
48
 
@@ -46,8 +51,8 @@ describe 'the last command' do
46
51
  expect(result.query.to_s).to eq({query:{filtered:{query:{
47
52
  range: {
48
53
  Plunk.timestamp_field => {
49
- gte: 24.minutes.ago.utc.to_datetime.iso8601(3),
50
- lte: Time.now.utc.to_datetime.iso8601(3)
54
+ gte: @time - 24.minutes,
55
+ lte: @time
51
56
  }}}}}}.to_s)
52
57
  end
53
58
 
@@ -62,8 +67,8 @@ describe 'the last command' do
62
67
  and: [
63
68
  range: {
64
69
  Plunk.timestamp_field => {
65
- gte: 1.hour.ago.utc.to_datetime.iso8601(3),
66
- lte: Time.now.utc.to_datetime.iso8601(3)
70
+ gte: @time - 1.hour,
71
+ lte: @time
67
72
  }}]}}}}.to_s)
68
73
  end
69
74
  end
@@ -1,12 +1,17 @@
1
1
  require 'spec_helper'
2
+ require 'shared/time_stubs'
3
+ require 'shared/plunk_stubs'
2
4
 
3
5
  describe 'nested searches' do
6
+ include_context "time stubs"
7
+ include_context "plunk stubs"
8
+
4
9
  before :each do
5
10
  fake_results = {
6
11
  foo: 'bar',
7
12
  baz: 5,
8
13
  arr: [ 0, 1, 2, 3 ],
9
- :timestamp => Time.now.utc.iso8601(3)
14
+ :timestamp => @time
10
15
  }.to_json
11
16
  Plunk::ResultSet.any_instance.stub(:eval).and_return(fake_results)
12
17
  end
@@ -22,7 +27,7 @@ describe 'nested searches' do
22
27
  @parsed = @parser.parse 'tshark.len = ` 226 | tshark.frame.time_epoch,tshark.ip.src`'
23
28
  expect(@parsed[:field].to_s).to eq 'tshark.len'
24
29
  expect(@parsed[:op].to_s).to eq '='
25
- expect(@parsed[:value][:initial_query][:match].to_s).to eq '226 '
30
+ expect(@parsed[:value][:initial_query][:match].to_s).to eq '226'
26
31
  expect(@parsed[:value][:extractors].to_s).to eq 'tshark.frame.time_epoch,tshark.ip.src'
27
32
  end
28
33
 
@@ -0,0 +1,5 @@
1
+ shared_context "plunk stubs" do
2
+ before :each do
3
+ Plunk.any_instance.stub(:timestamp_field).and_return(:@timestamp)
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ shared_context "time stubs" do
2
+ before :each do
3
+ @time = Time.parse("01/01/2010 10:00")
4
+ Time.any_instance.stub(:now).and_return(@time)
5
+ end
6
+ 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.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ram Mehta
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-28 00:00:00.000000000 Z
12
+ date: 2014-01-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -113,6 +113,8 @@ files:
113
113
  - spec/shared/basic.rb
114
114
  - spec/shared/field_value.rb
115
115
  - spec/shared/last.rb
116
+ - spec/shared/plunk_stubs.rb
117
+ - spec/shared/time_stubs.rb
116
118
  - spec/spec_helper.rb
117
119
  homepage: https://github.com/elbii/plunk
118
120
  licenses: