logstash-cli 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -4,6 +4,7 @@ gem "logstash-cli", :path => "."
4
4
 
5
5
  group :test do
6
6
  gem "rake"
7
+ gem "rspec"
7
8
  end
8
9
 
9
10
  gemspec
@@ -1,34 +1,37 @@
1
- require 'date'
2
-
1
+ require 'time'
3
2
  require 'yajl/json_gem'
4
3
 
5
4
  module Grep
6
5
 
7
6
  def self.indexes_from_interval(from, to)
8
- (from.to_date..to.to_date).sort.map do |date|
9
- date.to_s.gsub('-', '.')
7
+ ret = []
8
+ while from <= to
9
+ ret << from.strftime("%F").gsub('-', '.')
10
+ from += 86400
10
11
  end
12
+ ret
11
13
  end
12
14
 
13
15
  # Very naive time range description parsing.
14
16
  def self.parse_time_range(desc)
15
- /(?<value>\d+)\s*(?<units>\w*)/ =~ desc
17
+ /(\d+)\s*(\w*)/ =~ desc
18
+ value, units = $1, $2
16
19
  value = value.to_i
17
20
  start = case units.to_s.downcase
18
21
  when 'm', 'min', 'mins', 'minute', 'minutes'
19
- DateTime.now - (value/(60*24.0))
22
+ Time.now - value*60
20
23
  when 'h', 'hr', 'hrs', 'hour', 'hours'
21
- DateTime.now - (value/24.0)
24
+ Time.now - value*3600
22
25
  when 'd', 'day', 'days'
23
- DateTime.now - value
26
+ Time.now - value*86400
24
27
  when 'w', 'wk', 'wks', 'week', 'weeks'
25
- DateTime.now - (7.0*value)
28
+ Time.now - 7.0*value*86400
26
29
  when 'y', 'yr', 'yrs', 'year', 'years'
27
- DateTime.now - (365.0*value)
30
+ Time.now - 365.0*value*86400
28
31
  else
29
32
  raise ArgumentError
30
33
  end
31
- [start, DateTime.now]
34
+ [start, Time.now]
32
35
  end
33
36
 
34
37
  def _grep(pattern,options)
@@ -38,12 +41,14 @@ module Grep
38
41
  fields = options[:fields].split(',')
39
42
 
40
43
  begin
41
- if options[:last].nil?
42
- from_time = DateTime.parse(options[:from])
43
- to_time = DateTime.parse(options[:to])
44
- else
45
- from_time, to_time = Grep.parse_time_range(options[:last])
46
- end
44
+ from_time, to_time = if options[:from] && options[:to]
45
+ [ Time.parse(options[:from]),
46
+ Time.parse(options[:to]) ]
47
+ elsif options[:from] && ! options[:to]
48
+ [Time.parse(options[:from]), Time.now]
49
+ elsif options[:last]
50
+ Grep.parse_time_range(options[:last])
51
+ end
47
52
  rescue ArgumentError
48
53
  $stderr.puts "Something went wrong while parsing the date range."
49
54
  exit -1
@@ -56,8 +61,8 @@ module Grep
56
61
  $stderr.puts "Searching #{es_url}[#{index_range.first}..#{index_range.last}] - #{pattern}"
57
62
 
58
63
  # Reformat time interval to match logstash's internal timestamp'
59
- from = from_time.to_time.utc.strftime('%FT%T')
60
- to = to_time.to_time.utc.strftime('%FT%T')
64
+ from = from_time.strftime('%FT%T')
65
+ to = to_time.strftime('%FT%T')
61
66
 
62
67
  # Total of results to show
63
68
  total_result_size = options[:size]
@@ -1,3 +1,3 @@
1
1
  module LogstashCli
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -1,53 +1,55 @@
1
- require_relative '../../spec_helper.rb'
2
- require_relative '../../../lib/logstash-cli/command/grep.rb'
1
+ require 'spec_helper'
2
+ require 'logstash-cli/command/grep'
3
3
 
4
4
  describe Grep do
5
5
  it "determines index range needed for a given date range" do
6
- Grep.indexes_from_interval(DateTime.now, DateTime.now).should == [DateTime.now.to_date.to_s.gsub('-', '.')]
6
+ from = 1358832972
7
+ to = 1359005772
8
+ Grep.indexes_from_interval(Time.at(from), Time.at(to)).should == ["2013.01.21", "2013.01.22", "2013.01.23"]
7
9
  end
8
10
 
9
11
  it "calculates time range required to search last X minutes" do
10
12
  # The to_i removes fractions seconds. Unsure on the best way to test this.
11
- diff = 10*(1/60.0*24.0)
12
- Grep.parse_time_range("10m").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
13
- Grep.parse_time_range("10mins").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
14
- Grep.parse_time_range("10 min").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
15
- Grep.parse_time_range("10 minute").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
16
- Grep.parse_time_range("10 minutes").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
13
+ diff = 10*60
14
+ Grep.parse_time_range("10m").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
15
+ Grep.parse_time_range("10mins").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
16
+ Grep.parse_time_range("10 min").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
17
+ Grep.parse_time_range("10 minute").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
18
+ Grep.parse_time_range("10 minutes").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
17
19
  end
18
20
 
19
21
  it "calculates time range required to search last X hours" do
20
- diff = 10*(1/24.0)
21
- Grep.parse_time_range("10h").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
22
- Grep.parse_time_range("10hr").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
23
- Grep.parse_time_range("10hrs").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
24
- Grep.parse_time_range("10 hour").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
25
- Grep.parse_time_range("10 hours").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
22
+ diff = 10*60*60
23
+ Grep.parse_time_range("10h").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
24
+ Grep.parse_time_range("10hr").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
25
+ Grep.parse_time_range("10hrs").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
26
+ Grep.parse_time_range("10 hour").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
27
+ Grep.parse_time_range("10 hours").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
26
28
  end
27
29
 
28
30
  it "calculates time range required to search last X days" do
29
- diff = 10
30
- Grep.parse_time_range("10d").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
31
- Grep.parse_time_range("10days").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
32
- Grep.parse_time_range("10 day").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
31
+ diff = 10*86400
32
+ Grep.parse_time_range("10d").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
33
+ Grep.parse_time_range("10days").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
34
+ Grep.parse_time_range("10 day").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
33
35
  end
34
36
 
35
37
  it "calculates time range required to search last X weeks" do
36
- diff = 10*7
37
- Grep.parse_time_range("10w").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
38
- Grep.parse_time_range("10wk").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
39
- Grep.parse_time_range("10 wks").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
40
- Grep.parse_time_range("10 week").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
41
- Grep.parse_time_range("10 weeks").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
38
+ diff = 10*7*86400
39
+ Grep.parse_time_range("10w").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
40
+ Grep.parse_time_range("10wk").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
41
+ Grep.parse_time_range("10 wks").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
42
+ Grep.parse_time_range("10 week").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
43
+ Grep.parse_time_range("10 weeks").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
42
44
  end
43
45
 
44
46
  it "calculates time range required to search last X years" do
45
- diff = 10*365
46
- Grep.parse_time_range("10y").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
47
- Grep.parse_time_range("10 yr").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
48
- Grep.parse_time_range("10 yrs").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
49
- Grep.parse_time_range("10 year").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
50
- Grep.parse_time_range("10 years").map{|t| t.to_time.to_i}.should == [DateTime.now - diff, DateTime.now].map{|t| t.to_time.to_i}
47
+ diff = 10*365*86400
48
+ Grep.parse_time_range("10y").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
49
+ Grep.parse_time_range("10 yr").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
50
+ Grep.parse_time_range("10 yrs").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
51
+ Grep.parse_time_range("10 year").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
52
+ Grep.parse_time_range("10 years").map{|t| t.to_i}.should == [Time.now - diff, Time.now].map{|t| t.to_i}
51
53
  end
52
54
 
53
55
  it "raises an ArgumentError if it can't cacluate the time range" do
data/spec/spec_helper.rb CHANGED
@@ -0,0 +1,3 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.expand_path("../lib", __FILE__))
3
+ $:.unshift(File.dirname(__FILE__))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-06 00:00:00.000000000 Z
12
+ date: 2013-03-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: tire
@@ -177,7 +177,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
177
  version: '0'
178
178
  segments:
179
179
  - 0
180
- hash: 3090991630995914937
180
+ hash: -800876866884960970
181
181
  required_rubygems_version: !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements: