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 +1 -0
- data/lib/logstash-cli/command/grep.rb +24 -19
- data/lib/logstash-cli/version.rb +1 -1
- data/spec/logstash-cli/command/grep_spec.rb +33 -31
- data/spec/spec_helper.rb +3 -0
- metadata +3 -3
data/Gemfile
CHANGED
@@ -1,34 +1,37 @@
|
|
1
|
-
require '
|
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
|
-
|
9
|
-
|
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
|
-
/(
|
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
|
-
|
22
|
+
Time.now - value*60
|
20
23
|
when 'h', 'hr', 'hrs', 'hour', 'hours'
|
21
|
-
|
24
|
+
Time.now - value*3600
|
22
25
|
when 'd', 'day', 'days'
|
23
|
-
|
26
|
+
Time.now - value*86400
|
24
27
|
when 'w', 'wk', 'wks', 'week', 'weeks'
|
25
|
-
|
28
|
+
Time.now - 7.0*value*86400
|
26
29
|
when 'y', 'yr', 'yrs', 'year', 'years'
|
27
|
-
|
30
|
+
Time.now - 365.0*value*86400
|
28
31
|
else
|
29
32
|
raise ArgumentError
|
30
33
|
end
|
31
|
-
[start,
|
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[:
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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.
|
60
|
-
to = to_time.
|
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]
|
data/lib/logstash-cli/version.rb
CHANGED
@@ -1,53 +1,55 @@
|
|
1
|
-
|
2
|
-
|
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
|
-
|
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*
|
12
|
-
Grep.parse_time_range("10m").map{|t| t.
|
13
|
-
Grep.parse_time_range("10mins").map{|t| t.
|
14
|
-
Grep.parse_time_range("10 min").map{|t| t.
|
15
|
-
Grep.parse_time_range("10 minute").map{|t| t.
|
16
|
-
Grep.parse_time_range("10 minutes").map{|t| t.
|
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*
|
21
|
-
Grep.parse_time_range("10h").map{|t| t.
|
22
|
-
Grep.parse_time_range("10hr").map{|t| t.
|
23
|
-
Grep.parse_time_range("10hrs").map{|t| t.
|
24
|
-
Grep.parse_time_range("10 hour").map{|t| t.
|
25
|
-
Grep.parse_time_range("10 hours").map{|t| t.
|
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.
|
31
|
-
Grep.parse_time_range("10days").map{|t| t.
|
32
|
-
Grep.parse_time_range("10 day").map{|t| t.
|
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.
|
38
|
-
Grep.parse_time_range("10wk").map{|t| t.
|
39
|
-
Grep.parse_time_range("10 wks").map{|t| t.
|
40
|
-
Grep.parse_time_range("10 week").map{|t| t.
|
41
|
-
Grep.parse_time_range("10 weeks").map{|t| t.
|
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.
|
47
|
-
Grep.parse_time_range("10 yr").map{|t| t.
|
48
|
-
Grep.parse_time_range("10 yrs").map{|t| t.
|
49
|
-
Grep.parse_time_range("10 year").map{|t| t.
|
50
|
-
Grep.parse_time_range("10 years").map{|t| t.
|
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
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.
|
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:
|
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:
|
180
|
+
hash: -800876866884960970
|
181
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
182
|
none: false
|
183
183
|
requirements:
|