indy 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/indy.gemspec +8 -5
- data/lib/indy/indy.rb +56 -17
- data/performance/large.log +10000 -10000
- data/performance/profile_spec.rb +22 -2
- data/spec/indy_spec.rb +14 -2
- data/spec/time_spec.rb +13 -15
- metadata +7 -7
data/performance/profile_spec.rb
CHANGED
@@ -23,8 +23,28 @@ describe "Search Performance" do
|
|
23
23
|
@indy.like(:message => 'filesystem')
|
24
24
|
end
|
25
25
|
|
26
|
-
it "should profile code using #
|
27
|
-
@indy.after(:time => "12-
|
26
|
+
it "should profile code using #after()" do
|
27
|
+
@indy.after(:time => "29-12-2010 12:11:32").for(:all)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
context "with a 10000 line log file" do
|
35
|
+
|
36
|
+
large_file = "#{File.dirname(__FILE__)}/large.log"
|
37
|
+
before(:all) do
|
38
|
+
@indy = Indy.new(
|
39
|
+
:source => large_file,
|
40
|
+
:pattern => [/^\[([^\|]+)\|([^\]]+)\] (.*)$/,:severity, :time, :message],
|
41
|
+
:time_format => '%d-%m-%Y %H:%M:%S')
|
42
|
+
end
|
43
|
+
|
44
|
+
profile :file => STDOUT, :printer => :flat, :min_percent => 1 do
|
45
|
+
|
46
|
+
it "should profile code using #after() and an explicit @time_format" do
|
47
|
+
@indy.after(:time => "29-12-2010 12:11:32").for(:all)
|
28
48
|
end
|
29
49
|
|
30
50
|
end
|
data/spec/indy_spec.rb
CHANGED
@@ -82,6 +82,18 @@ describe Indy do
|
|
82
82
|
Indy.search(:cmd => "ls").source.should_not be_nil
|
83
83
|
end
|
84
84
|
|
85
|
+
it "the instance should raise an exception when passed an invalid source: Fixnum" do
|
86
|
+
lambda{ Indy.search(9) }.should raise_error Indy::InvalidSource
|
87
|
+
end
|
88
|
+
|
89
|
+
it "the instance should raise an exception when passed an invalid source: nil" do
|
90
|
+
lambda{ Indy.search(nil) }.should raise_error Indy::InvalidSource
|
91
|
+
end
|
92
|
+
|
93
|
+
it "the instance should raise an exception when the arity is incorrect" do
|
94
|
+
lambda{ Indy.search( ) }.should raise_error Indy::InvalidSource
|
95
|
+
end
|
96
|
+
|
85
97
|
context "for a String" do
|
86
98
|
|
87
99
|
let(:log_file) { "#{File.dirname(__FILE__)}/data.log" }
|
@@ -151,7 +163,7 @@ describe Indy do
|
|
151
163
|
context "bad data" do
|
152
164
|
|
153
165
|
before(:each) do
|
154
|
-
log = "2000-09-07 14:07:41 INFO MyApp - Entering APPLICATION.\n \n2000-09-07 14:07:41 INFO MyApp
|
166
|
+
log = "2000-09-07 14:07:41 INFO MyApp - Entering APPLICATION.\n \n2000-09-07 14:07:41 INFO MyApp - Entering APPLICATION.\n bad \n2000-09-07 14:07:41 INFO MyApp - Entering APPLICATION.\n\n"
|
155
167
|
@indy = Indy.search(log)
|
156
168
|
end
|
157
169
|
|
@@ -164,7 +176,7 @@ describe Indy do
|
|
164
176
|
context "instance" do
|
165
177
|
|
166
178
|
before(:each) do
|
167
|
-
log = "2000-09-07 14:07:41 INFO MyApp - Entering APPLICATION.\n2000-09-07 14:07:41 INFO MyApp Entering APPLICATION.\n2000-09-07 14:07:41 INFO MyApp - Entering APPLICATION."
|
179
|
+
log = "2000-09-07 14:07:41 INFO MyApp - Entering APPLICATION.\n2000-09-07 14:07:41 INFO MyApp - Entering APPLICATION.\n2000-09-07 14:07:41 INFO MyApp - Entering APPLICATION."
|
168
180
|
@indy = Indy.search(log)
|
169
181
|
end
|
170
182
|
|
data/spec/time_spec.rb
CHANGED
@@ -10,7 +10,7 @@ describe Indy do
|
|
10
10
|
|
11
11
|
it "should parse a standard date" do
|
12
12
|
line_hash = {:time => "2000-09-07 14:07:41", :message => "Entering APPLICATION"}
|
13
|
-
@indy.send(:parse_date, line_hash).class.should ==
|
13
|
+
@indy.send(:parse_date, line_hash).class.should == Time
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should parse dates when log includes non-conforming data" do
|
@@ -118,8 +118,7 @@ describe Indy do
|
|
118
118
|
end
|
119
119
|
|
120
120
|
it "using around should find the correct entries" do
|
121
|
-
|
122
|
-
@indy.for(:all).count.should == 3
|
121
|
+
@indy.around(:time => '2000-09-07 14:11:00', :span => 2).for(:all).count.should == 2
|
123
122
|
end
|
124
123
|
|
125
124
|
it "using after and inclusive should find the correct entries" do
|
@@ -140,7 +139,7 @@ describe Indy do
|
|
140
139
|
].join("\n") )
|
141
140
|
end
|
142
141
|
|
143
|
-
it "should find the correct entries" do
|
142
|
+
it "should find the correct entries (Bug: https://github.com/burtlo/Indy/issues#issue/3)" do
|
144
143
|
@indy.after(:time => '2000-09-07 14:07:42').for(:all).length.should == 3
|
145
144
|
@indy.before(:time => '2000-09-07 14:07:43').for(:all).length.should == 2
|
146
145
|
end
|
@@ -156,7 +155,7 @@ describe Indy do
|
|
156
155
|
|
157
156
|
it "should parse a non-standard date" do
|
158
157
|
line_hash = {:time => "2000/09/07", :message => "Entering APPLICATION"}
|
159
|
-
@indy.send(:parse_date, line_hash).class.should ==
|
158
|
+
@indy.send(:parse_date, line_hash).class.should == Time
|
160
159
|
end
|
161
160
|
|
162
161
|
end
|
@@ -168,9 +167,11 @@ describe Indy do
|
|
168
167
|
@indy = Indy.new(:time_format => '%m-%d-%Y', :source => "1-13-2002 message\n1-14-2002 another message\n1-15-2002 another message", :pattern => [pattern, :time, :message])
|
169
168
|
end
|
170
169
|
|
171
|
-
it "should parse a US style date when given a time format" do
|
170
|
+
it "should parse a US style date when given a time format by using DateTime" do
|
172
171
|
line_hash = {:time => '1-13-2002', :message => 'message'}
|
173
|
-
@indy.send(:parse_date, line_hash)
|
172
|
+
time = @indy.send(:parse_date, line_hash)
|
173
|
+
time.class.should == DateTime
|
174
|
+
time.day.should == 13
|
174
175
|
end
|
175
176
|
|
176
177
|
it "should accept standard time format searches even while using an explicit log time format" do
|
@@ -187,24 +188,21 @@ describe Indy do
|
|
187
188
|
"2000-09-07 14:08:41 INFO MyApp - Exiting APPLICATION.",
|
188
189
|
"2000-09-07 14:10:55 INFO MyApp - Exiting APPLICATION."].join("\n")
|
189
190
|
@search_result = Indy.search(log_string).for(:application => 'MyApp')
|
190
|
-
@time_search_result = Indy.search(log_string).before(:time => "
|
191
|
+
@time_search_result = Indy.search(log_string).before(:time => "2020-09-07").for(:application => 'MyApp')
|
191
192
|
end
|
192
193
|
|
193
194
|
it "should not exist as an attribute when unless performing a time search" do
|
194
195
|
@search_result.first._time.class.should == NilClass
|
195
|
-
@time_search_result.first._time.class.should ==
|
196
|
+
@time_search_result.first._time.class.should == Time
|
196
197
|
end
|
197
198
|
|
198
199
|
it "should be accurate" do
|
199
|
-
@time_search_result.first._time.to_s.should == "
|
200
|
+
@time_search_result.first._time.to_s.should == "Thu Sep 07 14:07:41 -0700 2000"
|
200
201
|
end
|
201
202
|
|
202
203
|
it "should allow for time range calculations" do
|
203
|
-
|
204
|
-
|
205
|
-
hours.should == 0
|
206
|
-
minutes.should == 3
|
207
|
-
seconds.should == 14
|
204
|
+
seconds = @time_search_result.last._time - @time_search_result.first._time
|
205
|
+
seconds.should == 194
|
208
206
|
end
|
209
207
|
|
210
208
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: indy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 17
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 5
|
10
|
+
version: 0.1.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Franklin Webber
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-01-
|
19
|
+
date: 2011-01-21 00:00:00 -08:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -221,7 +221,7 @@ has_rdoc: true
|
|
221
221
|
homepage: http://github.com/burtlo/Indy
|
222
222
|
licenses:
|
223
223
|
- MIT
|
224
|
-
post_install_message: "\n [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>]\n\n Thank you for installing Indy 0.1.
|
224
|
+
post_install_message: "\n [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>]\n\n Thank you for installing Indy 0.1.5 / 2011-01-21.\n\n Changes:\n \n * Searching with time scopes (#after, #within, #before) are much faster\n * Dates used in time scopes are limited to 1901 - 2038\n * The Windows platform limits dates further to 1969 - 2038\n * Explicit format string for time forces the old (slower) time scoping code\n * However, this removes the harsh limits on date values\n \n\n [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>] [<>]\n\n "
|
225
225
|
rdoc_options:
|
226
226
|
- --charset=UTF-8
|
227
227
|
require_paths:
|
@@ -249,7 +249,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
249
249
|
requirements: []
|
250
250
|
|
251
251
|
rubyforge_project:
|
252
|
-
rubygems_version: 1.
|
252
|
+
rubygems_version: 1.4.2
|
253
253
|
signing_key:
|
254
254
|
specification_version: 3
|
255
255
|
summary: Log Search Library
|