sms-logparser 0.12.1 → 0.12.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8392eba52e67bfc44639dc8b2e916ca9497335e2
4
- data.tar.gz: 3409ba5f83db6a33334d58bbd2ccb1f00e1165ae
3
+ metadata.gz: f0b45a865df500739a1bea384895fbee8fbad15c
4
+ data.tar.gz: 41b69f59f7d1d691a66e7c0b2cced2ad16e4ec66
5
5
  SHA512:
6
- metadata.gz: b3350474625d5cc675cfb18b5e4243ce81e6912ef123df9a86d9d7bef67a59b831926678288684e683b58043b29314ee7ff9a8794566319ece8f2f6045f12148
7
- data.tar.gz: ac650bc8109cede2eb992035c94e0ae6936633e21cb3d408ece3c1a9a00962204bcf0e0a18a41208c1aa759bff075344a42a3bdf59e5d28b060a904531215dd5
6
+ metadata.gz: 39d0e9abc5cb3777f2b222196b94387ede340817fcf52b58999bc9c93175ae20f156b384940ada9946703799883ed20fb4c3a2f6eb792a7f830cb2f04571eb5f
7
+ data.tar.gz: 8c3efb728d6c670cdcac62bf9cecbf022d65a2f1dc9e12528dde9aa89e77a0cbcfa6e3ee4e8d416606edf00f5bbcecedab0aad51059bea24d41be265420f369c
@@ -13,7 +13,6 @@ module SmsLogparser
13
13
  @data_cache = {}
14
14
  end
15
15
 
16
-
17
16
  def send(data)
18
17
  requests = build_urls(data)
19
18
  return requests if @options[:simulate]
@@ -36,11 +35,11 @@ module SmsLogparser
36
35
  requests
37
36
  end
38
37
 
39
- def send_from_queue(data_sets)
38
+ def send_sets(data_sets, concurrency=4)
40
39
  queue = Queue.new
41
40
  semaphore = Mutex.new
42
41
  data_sets.each {|set| queue << set }
43
- threads = 4.times.map do
42
+ threads = concurrency.times.map do
44
43
  Thread.new do
45
44
  while !queue.empty?
46
45
  begin
@@ -33,10 +33,14 @@ module SmsLogparser
33
33
  option :limit, type: :numeric, aliases: %w(-L), desc: "Limit the number of entries to query"
34
34
  option :accepted_api_responses, type: :array, aliases: %w(-r),
35
35
  desc: "API HTTP responses which are accepted (Default: only accept 200)."
36
+ option :cache, type: :boolean, desc: "Accumulate and cache results and send totals"
37
+ option :concurrency, type: :numeric, default: 4,
38
+ desc: "How many threads to use in parallel when sending cached results"
36
39
  def parse
37
40
  start_message = "Parser started"
38
41
  start_message += options[:simulate] ? " in simulation mode." : "."
39
42
  logger.info(start_message)
43
+ cache = DataCache.new if options[:cache]
40
44
  mysql = Mysql.new(options)
41
45
  if !options[:simulate] && mysql.parser_running?
42
46
  logger.warn("Exit. Another instance of the parser is already running.")
@@ -55,83 +59,23 @@ module SmsLogparser
55
59
  entries.each do |entry|
56
60
  Parser.extract_data_from_msg(entry['Message']) do |data|
57
61
  if data
58
- requests = api.send(data)
59
- state[:match_count] += 1
60
- verbose_parser_output(entry['ID'], data, requests)
62
+ if options[:cache]
63
+ cache.add(data)
64
+ logger.debug {"Cached data: #{data}"}
65
+ else
66
+ requests = api.send(data)
67
+ verbose_parser_output(entry['ID'], data, requests)
68
+ end
61
69
  state[:last_event_id] = entry['ID']
62
- end
63
- end
64
- end
65
- end
66
- rescue SystemExit, Interrupt
67
- logger.error("Received an interrupt. Stopping the parser run.")
68
- state[:status] = STATUS[:interrupted] if state
69
- rescue => e
70
- logger.error "Aborting the parser run."
71
- logger.error e
72
- state[:status] = STATUS[:api_error] if state
73
- else
74
- state[:status] = STATUS[:ok]
75
- ensure
76
- begin
77
- if mysql && state
78
- state[:run_time] = (Time.now - state[:started_at]).round(2)
79
- if state[:id]
80
- mysql.write_parse_result(state) unless options[:simulate]
81
- end
82
- log_parse_results(state)
83
- SmsLogparser::Loggster.instance.close
84
- end
85
- rescue => e
86
- logger.fatal e
87
- end
88
- end
89
-
90
- desc "cached_pase", "Check the database for pcache logs and put them into the cache"
91
- option :api_base_url, aliases: %w(-a),
92
- desc: "Base path of the SMS API (Default: http://localhost:8080/creator/rest/)"
93
- option :api_key, aliases: %w(-k), desc: "SMS API Key"
94
- option :simulate, type: :boolean, aliases: %w(-s),
95
- desc: "Dry run without submitting any data"
96
- option :verbose, type: :boolean, aliases: %w(-v), desc: "Verbose output"
97
- option :limit, type: :numeric, aliases: %w(-L), desc: "Limit the number of entries to query"
98
- option :accepted_api_responses, type: :array, aliases: %w(-r),
99
- desc: "API HTTP responses which are accepted (Default: only accept 200)."
100
- def cached_parse
101
- start_message = "Parser started"
102
- start_message += options[:simulate] ? " in simulation mode." : "."
103
- logger.info(start_message)
104
- mysql = Mysql.new(options)
105
- if !options[:simulate] && mysql.parser_running?
106
- logger.warn("Exit. Another instance of the parser is already running.")
107
- exit!
108
- end
109
- state = {
110
- last_event_id: mysql.get_last_parse_id,
111
- match_count: 0,
112
- status: STATUS[:running],
113
- started_at: Time.now,
114
- run_time: 0.0
115
- }
116
- state = mysql.start_run(state) unless options[:simulate]
117
- cache = DataCache.new
118
- mysql = Mysql.new(options)
119
- say "Getting entries from database..."
120
- mysql.get_entries(last_id: state[:last_event_id], limit: options[:limit]) do |entries|
121
- entries.each do |entry|
122
- Parser.extract_data_from_msg(entry['Message']) do |data|
123
- if data
124
- cache.add(data)
125
- logger.debug {"Cached data: #{data}"}
126
70
  state[:match_count] += 1
127
- state[:last_event_id] = entry['ID']
128
71
  end
129
72
  end
130
73
  end
131
74
  end
132
- api = Api.new(options)
133
- api.send_from_queue(cache.data_sets) do |url, response|
134
- say "#{url} (#{response})"
75
+ if options[:cache]
76
+ api.send_sets(cache.data_sets, options[:concurrency]) do |url, response|
77
+ logger.info { "POST #{url} (#{response})" }
78
+ end
135
79
  end
136
80
  rescue SystemExit, Interrupt
137
81
  logger.error("Received an interrupt. Stopping the parser run.")
@@ -155,7 +99,6 @@ module SmsLogparser
155
99
  rescue => e
156
100
  logger.fatal e
157
101
  end
158
-
159
102
  end
160
103
 
161
104
  desc "history", "List the last paser runs"
@@ -108,7 +108,7 @@ module SmsLogparser
108
108
  def select_entries(last_id, max_id)
109
109
  query = %Q{
110
110
  SELECT ID, Message FROM SystemEvents
111
- WHERE ID BETWEEN #{last_id} AND #{max_id}
111
+ WHERE ID BETWEEN #{last_id + 1} AND #{max_id}
112
112
  ORDER BY ID ASC
113
113
  LIMIT #{@query_limit};
114
114
  }.gsub(/\s+/, " ").strip
@@ -1,3 +1,3 @@
1
1
  module SmsLogparser
2
- VERSION = "0.12.1"
2
+ VERSION = "0.12.2"
3
3
  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.12.1
4
+ version: 0.12.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - niwo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-15 00:00:00.000000000 Z
11
+ date: 2014-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler