sms-logparser 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Rakefile +10 -1
- data/lib/sms-logparser/cli.rb +4 -1
- data/lib/sms-logparser/version.rb +1 -1
- data/spec/logparser_spec.rb +54 -0
- data/spec/spec_helper.rb +71 -0
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51e05056b98cf58379c37b19df329c948e2b8656
|
4
|
+
data.tar.gz: bc696cef467afb68d9ee9b18e281ea8aa6b497b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86d201529f5ac57d50082fb992d815e1969ae2a8dac652c11a017b27b0f8410a107b694829d55b9d5a3118d6ee5dac82797ee9d64132d87bc7067006f51aa0ae
|
7
|
+
data.tar.gz: 808350b006292eae603d3a12a2274ff080640c65a65052e9b22f9797ad97ce222b548e6d0f6558f12dc707485ac9f148e6ee5be627b75290ede18ef67b6ee3b9
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
data/lib/sms-logparser/cli.rb
CHANGED
@@ -23,6 +23,7 @@ module SmsLogparser
|
|
23
23
|
option :api_base_path, :default => 'http://dev.simplex.tv/creator/rest'
|
24
24
|
option :simulate, :type => :boolean, :default => false
|
25
25
|
def parse
|
26
|
+
start_time = Time.now
|
26
27
|
count = 0
|
27
28
|
last_id = get_last_parse_id
|
28
29
|
begin
|
@@ -63,7 +64,9 @@ module SmsLogparser
|
|
63
64
|
last_id = result['ID']
|
64
65
|
end
|
65
66
|
write_parse_result(last_id, count) unless options[:simulate]
|
66
|
-
puts "
|
67
|
+
puts "Started: #{start_time.strftime('%d.%d.%Y %T')}"
|
68
|
+
puts "Runtime: #{(Time.now - start_time).round(2)}s"
|
69
|
+
puts "Matches: #{count}"
|
67
70
|
end
|
68
71
|
|
69
72
|
desc "last_runs", "List the last paser runs"
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SmsLogparser do
|
4
|
+
before do
|
5
|
+
TestHelper.create_test_db
|
6
|
+
TestHelper.create_sylog_db_table
|
7
|
+
end
|
8
|
+
|
9
|
+
after do
|
10
|
+
TestHelper.drop_test_db
|
11
|
+
end
|
12
|
+
|
13
|
+
it "can create the parser_runs database table" do
|
14
|
+
out, err = capture_io do
|
15
|
+
TestHelper.sms_logparser.create_parser_table
|
16
|
+
end
|
17
|
+
out.must_match /OK/
|
18
|
+
end
|
19
|
+
|
20
|
+
it "can parse a log database and find matches" do
|
21
|
+
TestHelper.seed_db(10)
|
22
|
+
parser = TestHelper.sms_logparser
|
23
|
+
parser.options[:api_base_path] = 'http://devnull-as-a-service.com/dev/null/'
|
24
|
+
out, err = capture_io do
|
25
|
+
TestHelper.sms_logparser.create_parser_table
|
26
|
+
parser.parse
|
27
|
+
end
|
28
|
+
out.must_match /.*Matches: 10$/
|
29
|
+
end
|
30
|
+
|
31
|
+
it "skips over already parsed logs" do
|
32
|
+
TestHelper.seed_db(1)
|
33
|
+
parser = TestHelper.sms_logparser
|
34
|
+
parser.options[:api_base_path] = 'http://devnull-as-a-service.com/dev/null/'
|
35
|
+
out, err = capture_io do
|
36
|
+
TestHelper.sms_logparser.create_parser_table
|
37
|
+
parser.parse
|
38
|
+
parser.parse
|
39
|
+
end
|
40
|
+
out.must_match /.*Matches: 0$/
|
41
|
+
end
|
42
|
+
|
43
|
+
it "list parser runs" do
|
44
|
+
TestHelper.seed_db(1)
|
45
|
+
parser = TestHelper.sms_logparser
|
46
|
+
parser.options[:api_base_path] = 'http://devnull-as-a-service.com/dev/null/'
|
47
|
+
out, err = capture_io do
|
48
|
+
TestHelper.sms_logparser.create_parser_table
|
49
|
+
parser.parse
|
50
|
+
parser.last_runs
|
51
|
+
end
|
52
|
+
assert_equal(err, "")
|
53
|
+
end
|
54
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'minitest/spec'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'minitest/pride'
|
4
|
+
|
5
|
+
require 'sms-logparser'
|
6
|
+
|
7
|
+
module TestHelper
|
8
|
+
|
9
|
+
@@mysql_db = 'syslog_test'
|
10
|
+
@@mysql_user = 'root'
|
11
|
+
@@sql_connection = nil
|
12
|
+
|
13
|
+
def self.sms_logparser(options = {:mysql_db => @@mysql_db, :mysql_user => @@mysql_user})
|
14
|
+
cli = SmsLogparser::Cli.new
|
15
|
+
cli.options = options
|
16
|
+
cli
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.client
|
20
|
+
@@sql_connection ||= Mysql2::Client.new(:host => 'localhost', :username => @@mysql_user)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.create_test_db
|
24
|
+
self.drop_test_db
|
25
|
+
self.client.query("CREATE DATABASE #{@@mysql_db}")
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.drop_test_db
|
29
|
+
self.client.query("DROP DATABASE IF EXISTS #{@@mysql_db}")
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.create_sylog_db_table
|
33
|
+
self.client.query(
|
34
|
+
"CREATE TABLE IF NOT EXISTS\
|
35
|
+
#{@@mysql_db}.SystemEvents(\
|
36
|
+
ID INT PRIMARY KEY AUTO_INCREMENT,\
|
37
|
+
FromHost varchar(128) DEFAULT '',\
|
38
|
+
Message varchar(256) DEFAULT ''
|
39
|
+
)"
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.insert_logs(host = "pcache", message = "", number_of_inserts = 1)
|
44
|
+
values = ''
|
45
|
+
number_of_inserts.times do
|
46
|
+
values += "('#{host}', '#{message}'), "
|
47
|
+
end
|
48
|
+
self.client.query(
|
49
|
+
"INSERT INTO #{@@mysql_db}.SystemEvents(FromHost, Message)\
|
50
|
+
VALUES #{values.chomp(', ')}"
|
51
|
+
)
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.seed_db(number_of_inserts = 10)
|
55
|
+
self.insert_logs(
|
56
|
+
"blahost",
|
57
|
+
"GET /boring/stuff/uninteresting - Firefox - 500 GET",
|
58
|
+
number_of_inserts
|
59
|
+
)
|
60
|
+
self.insert_logs(
|
61
|
+
"pcache",
|
62
|
+
'- - [25/Feb/2014:17:28:57 +0100] \"GET /content/2/719/54986/simvid_1.f4v HTTP/1.1\" 200 6741309 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:27.0) Gecko/20100101 Firefox/27.0\"',
|
63
|
+
number_of_inserts
|
64
|
+
)
|
65
|
+
self.insert_logs(
|
66
|
+
"pcache",
|
67
|
+
'- - [25/Feb/2014:17:28:57 +0100] \"GET /notcontent/2/719/54986/simvid_1.f4v HTTP/1.1\" 200 6741309 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:27.0) Gecko/20100101 Firefox/27.0\"',
|
68
|
+
number_of_inserts
|
69
|
+
)
|
70
|
+
end
|
71
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sms-logparser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- niwo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -98,6 +98,8 @@ files:
|
|
98
98
|
- lib/sms-logparser/cli.rb
|
99
99
|
- lib/sms-logparser/version.rb
|
100
100
|
- sms-logparser.gemspec
|
101
|
+
- spec/logparser_spec.rb
|
102
|
+
- spec/spec_helper.rb
|
101
103
|
homepage: https://github.com/swisstxt/sms-logparser
|
102
104
|
licenses:
|
103
105
|
- MIT
|
@@ -122,4 +124,6 @@ rubygems_version: 2.0.3
|
|
122
124
|
signing_key:
|
123
125
|
specification_version: 4
|
124
126
|
summary: SMS Logparser
|
125
|
-
test_files:
|
127
|
+
test_files:
|
128
|
+
- spec/logparser_spec.rb
|
129
|
+
- spec/spec_helper.rb
|