sms-logparser 0.6.0 → 0.6.1

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: ac7a2c7bd9b90b797a3ee9a0200117c47139f54b
4
- data.tar.gz: 88b67958f0fd4b641414a028b329be5bbd50e0da
3
+ metadata.gz: 763fefca222c68deeee291c3afefc4b86a9b5291
4
+ data.tar.gz: 6b369ebcb0beda9c45045118c3891d69f4930a71
5
5
  SHA512:
6
- metadata.gz: 8e2fca495d375a1edf97a182552bdb38b15001929dacc3ae777c70a8a33ec377ced9c481d6b636acdb75aab90e6fe3384ee981b92841835fc2c78ad9b369b665
7
- data.tar.gz: 40f73533a55aa2deb3e2f76a1fda30037e375e179cee86401df26b7551c0027b12c289dae30043419b691e117b507eaab8464dd44f33061b601b1e0be1721522
6
+ metadata.gz: 06b1e2e3b4e55770625e8af0053243d1b48eda441432b3e8eb5d397d9b39dab759f53a9d66d32248be16b817da5d97d8550e46126fd0c3bc73570c964ad2f0d1
7
+ data.tar.gz: 659e7def844b3b476acaa607469c76e3f3d4c7ca2157b05c44e68c847088e7affb945aef3e9737bb538100b7e16ff24a90ad552035c350e26d6f9ba6d37858fb
@@ -2,10 +2,7 @@ module SmsLogparser
2
2
  class Cli < Thor
3
3
  require 'yaml'
4
4
 
5
- STATUS = {
6
- :ok => 0,
7
- :api_error => 1
8
- }
5
+ STATUS = {ok: 0, api_error: 1}
9
6
 
10
7
  class_option :config,
11
8
  default: File.join(Dir.home, '.sms-logparser.yml'),
@@ -56,51 +53,37 @@ module SmsLogparser
56
53
  default: false
57
54
  def parse
58
55
  say "Starting the parser...", :green
59
- start_time = Time.now
60
- count = 0
61
- begin
62
- mysql = Mysql.new(options)
63
- api = Api.new(options)
64
- last_id = mysql.get_last_parse_id
65
- status = STATUS[:ok]
66
- begin
67
- mysql.get_entries(last_id: last_id, limit: options[:limit]) do |entries|
68
- entries.each do |entry|
69
- if data = Parser.extract_data_from_msg(entry['Message'])
70
- uris = api.send(data)
71
- last_id = entry['ID']
72
- count += 1
73
- if options[:verbose]
74
- verbose_parser_output(data, uris, entry)
75
- end
76
- end
77
- end
56
+ mysql = Mysql.new(options)
57
+ state = {
58
+ last_event_id: mysql.get_last_parse_id,
59
+ match_count: 0,
60
+ status: STATUS[:ok],
61
+ run_at: Time.now,
62
+ run_time: 0.0
63
+ }
64
+ api = Api.new(options)
65
+ mysql.get_entries(last_id: state[:last_event_id], limit: options[:limit]) do |entries|
66
+ entries.each do |entry|
67
+ if data = Parser.extract_data_from_msg(entry['Message'])
68
+ uris = api.send(data)
69
+ state[:last_event_id] = entry['ID']
70
+ state[:match_count] += 1
71
+ verbose_parser_output(data, uris, entry) if options[:verbose]
78
72
  end
79
- rescue => e
80
- say "Error: #{e.message}", :red
81
- say "Aborting parser run...", :red
82
- status = STATUS[:api_error]
83
- ensure
84
- mysql.write_parse_result(
85
- last_event_id: last_id,
86
- match_count: count,
87
- status: status,
88
- run_at: start_time,
89
- run_time: (Time.now - start_time).round(2)
90
- ) unless options[:simulate]
91
73
  end
92
- say "Started:\t", :cyan
93
- say start_time.strftime('%d.%d.%Y %T')
94
- say "Runtime:\t", :cyan
95
- say "#{(Time.now - start_time).round(2)}s"
96
- say "Status:\t\t", :cyan
97
- say STATUS.key(status).upcase
98
- action = options[:simulate] ? "found" : "sent"
99
- say("Events #{action}:\t", :cyan)
100
- say count
74
+ end
75
+ rescue => e
76
+ say "Error: #{e.message}", :red
77
+ say "Aborting parser run...", :red
78
+ state[:status] = STATUS[:api_error]
79
+ ensure
80
+ begin
81
+ state[:run_time] = (Time.now - state[:run_at]).round(2)
82
+ mysql.write_parse_result(state) unless options[:simulate]
83
+ print_parse_results(state)
101
84
  rescue => e
102
85
  say "Error: #{e.message}", :red
103
- say e.backtrace; :yellow
86
+ say(e.backtrace.join("\n"), :yellow) if options[:debug]
104
87
  end
105
88
  end
106
89
 
@@ -111,26 +94,25 @@ module SmsLogparser
111
94
  aliases: %w(-n),
112
95
  desc: "Number of results to display"
113
96
  def history
114
- begin
115
- runs = Mysql.new(options).last_runs(options[:results])
116
- if runs.size > 0
117
- table = [%w(run_at run_time match_count last_event_id status)]
118
- runs.to_a.reverse.each do |run|
119
- table << [
120
- run['run_at'],
121
- "#{run['run_time']}s",
122
- run['match_count'],
123
- run['last_event_id'],
124
- STATUS.key(run['status']).upcase
125
- ]
126
- end
127
- print_table table
128
- else
129
- say "No parser runs found in the database."
97
+ runs = Mysql.new(options).last_runs(options[:results])
98
+ if runs && runs.size > 0
99
+ table = [%w(run_at count last_id status run_time)]
100
+ runs.to_a.reverse.each do |run|
101
+ table << [
102
+ run['run_at'].strftime('%d.%d.%Y %T'),
103
+ run['match_count'],
104
+ run['last_event_id'],
105
+ STATUS.key(run['status']).upcase,
106
+ "#{run['run_time']}s"
107
+ ]
130
108
  end
131
- rescue => e
132
- say "Error: #{e.message}", :red
109
+ print_table table
110
+ else
111
+ say "No parser runs found in the database."
133
112
  end
113
+ rescue => e
114
+ say "Error: #{e.message}", :red
115
+ exit 1
134
116
  end
135
117
 
136
118
  desc "setup", "Create the parser table to track the last logs parsed"
@@ -140,16 +122,15 @@ module SmsLogparser
140
122
  aliases: %w(-f),
141
123
  desc: "Drop an existing table if it exists"
142
124
  def setup
143
- begin
144
- case Mysql.new(options).create_parser_table(options[:force])
145
- when 0
146
- say "OK, table created.", :green
147
- when 1
148
- say "Table already exists.", :yellow
149
- end
150
- rescue => e
151
- say "Error: #{e.message}", :red
125
+ case Mysql.new(options).create_parser_table(options[:force])
126
+ when 0
127
+ say "OK, table created.", :green
128
+ when 1
129
+ say "Table already exists.", :yellow
152
130
  end
131
+ rescue => e
132
+ say "Error: #{e.message}", :red
133
+ exit 1
153
134
  end
154
135
 
155
136
  no_commands do
@@ -165,6 +146,18 @@ module SmsLogparser
165
146
  puts
166
147
  end
167
148
 
149
+ def print_parse_results(res)
150
+ say "Started:\t", :cyan
151
+ say res[:run_at].strftime('%d.%d.%Y %T')
152
+ say "Runtime:\t", :cyan
153
+ say "#{res[:run_time]}s"
154
+ say "Status:\t\t", :cyan
155
+ say STATUS.key(res[:status]).upcase
156
+ action = options[:simulate] ? "found" : "sent"
157
+ say("Events #{action}:\t", :cyan)
158
+ say res[:match_count]
159
+ end
160
+
168
161
  def options
169
162
  original_options = super
170
163
  filename = original_options[:config] || File.join(Dir.home, '.sms-logparser.yml')
@@ -19,7 +19,7 @@ module SmsLogparser
19
19
 
20
20
  def last_runs(results = 10)
21
21
  runs = client.query(
22
- "SELECT * FROM sms_logparser_runs ORDER BY id DESC LIMIT #{results}"
22
+ "SELECT * FROM sms_logparser_runs ORDER BY id DESC LIMIT #{results || 10}"
23
23
  )
24
24
  end
25
25
 
@@ -1,3 +1,3 @@
1
1
  module SmsLogparser
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_development_dependency 'bundler', '~> 1.3'
24
24
  spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'webmock'
25
26
 
26
27
  spec.add_dependency 'thor', '~> 0.19.1'
27
28
  spec.add_dependency 'mysql2'
data/spec/api_spec.rb CHANGED
@@ -5,7 +5,7 @@ describe SmsLogparser::Api do
5
5
  before do
6
6
  @api = SmsLogparser::Api.new(
7
7
  simulate: true,
8
- api_base_path: "http://myapi.com/rest/"
8
+ api_base_url: "http://localhost/creator/rest/"
9
9
  )
10
10
  end
11
11
 
data/spec/cli_spec.rb CHANGED
@@ -4,6 +4,9 @@ describe SmsLogparser::Cli do
4
4
  before do
5
5
  TestHelper.create_test_db
6
6
  TestHelper.create_sylog_db_table
7
+ stub_request(:post, /.*locahost.*/).
8
+ with(headers: {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
9
+ to_return(status: 200, body: "stubbed response", headers: {})
7
10
  end
8
11
 
9
12
  after do
@@ -11,8 +14,10 @@ describe SmsLogparser::Cli do
11
14
  end
12
15
 
13
16
  it "can create the parser_runs database table" do
17
+ parser = TestHelper.sms_logparser
18
+ parser.options[:force] = true
14
19
  out, err = capture_io do
15
- TestHelper.sms_logparser.setup
20
+ parser.setup
16
21
  end
17
22
  out.must_match /OK.*/
18
23
  end
@@ -21,8 +26,9 @@ describe SmsLogparser::Cli do
21
26
  TestHelper.seed_db(10)
22
27
  parser = TestHelper.sms_logparser
23
28
  parser.options[:simulate] = true
29
+ #parser.options[:api_base_url] = "http://localhost/creator/rest/"
24
30
  out, err = capture_io do
25
- TestHelper.sms_logparser.setup
31
+ parser.setup
26
32
  parser.parse
27
33
  end
28
34
  out.must_match /\s+10$/
@@ -44,8 +50,10 @@ describe SmsLogparser::Cli do
44
50
  TestHelper.seed_db(1)
45
51
  parser = TestHelper.sms_logparser
46
52
  parser.options[:simulate] = true
53
+ parser.options[:force] = true
54
+
47
55
  out, err = capture_io do
48
- TestHelper.sms_logparser.setup
56
+ parser.setup
49
57
  parser.parse
50
58
  parser.history
51
59
  end
data/spec/spec_helper.rb CHANGED
@@ -2,6 +2,9 @@ require 'minitest/spec'
2
2
  require 'minitest/autorun'
3
3
  require 'minitest/pride'
4
4
 
5
+ require 'webmock/minitest'
6
+ WebMock.disable_net_connect!(allow_localhost: true)
7
+
5
8
  require 'sms-logparser'
6
9
 
7
10
  module TestHelper
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sms-logparser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - niwo
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: webmock
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: thor
43
57
  requirement: !ruby/object:Gem::Requirement