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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bbfc8b0c75a4548ae8c9f15f2a79aeeb54066e9e
4
- data.tar.gz: 7ab7890fcb50d47710d476e1de9078b8ebac901e
3
+ metadata.gz: 51e05056b98cf58379c37b19df329c948e2b8656
4
+ data.tar.gz: bc696cef467afb68d9ee9b18e281ea8aa6b497b5
5
5
  SHA512:
6
- metadata.gz: 4f17dbe07a0804b3a47a09855c8a3c9873dd8e0ff1453ff688752e3c67d77c407ece48a069ab192f9e5abb42ad59e7c566c8eedeab1a7eca8914abe30885371f
7
- data.tar.gz: c97f560d1f4ade101f0277b9f7d660f7218b933b00308274483f4610dde49692df6c2c7ac4735634ffc2cd9958c98cb22c597d6b4bb28824a9120a8e38310e87
6
+ metadata.gz: 86d201529f5ac57d50082fb992d815e1969ae2a8dac652c11a017b27b0f8410a107b694829d55b9d5a3118d6ee5dac82797ee9d64132d87bc7067006f51aa0ae
7
+ data.tar.gz: 808350b006292eae603d3a12a2274ff080640c65a65052e9b22f9797ad97ce222b548e6d0f6558f12dc707485ac9f148e6ee5be627b75290ede18ef67b6ee3b9
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in sms-logparser.gemspec
4
- gemspec
4
+ gemspec
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new(:test) do |test|
5
+ test.libs << 'spec'
6
+ test.test_files = FileList['spec/*_spec.rb']
7
+ end
8
+
9
+ desc "Run Tests"
10
+ task :default => :test
@@ -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 "Number of valid messages found: #{count}"
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"
@@ -1,3 +1,3 @@
1
1
  module SmsLogparser
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -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
@@ -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.3
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-02-28 00:00:00.000000000 Z
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