logstash-cli 0.0.7 → 0.0.8

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.
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: