oml4r 2.9.3 → 2.9.4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/oml4r.rb CHANGED
@@ -37,9 +37,9 @@ module OML4R
37
37
  @@logger = logger
38
38
  end
39
39
 
40
- class OML4RExeption < Exception; end
41
- class MissingArgumentException < OML4RExeption; end
42
- class ArgumentMismatchException < OML4RExeption; end
40
+ class OML4RException < Exception; end
41
+ class MissingArgumentException < OML4RException; end
42
+ class ArgumentMismatchException < OML4RException; end
43
43
  #
44
44
  # Measurement Point Class
45
45
  # Ruby applications using this module should sub-class this MPBase class
@@ -228,8 +228,14 @@ module OML4R
228
228
  # It will then connect to the OML server (if requested on the command line), and
229
229
  # send the initial instruction to setup the database and the tables for each MPs.
230
230
  #
231
- # - argv = the Array of command line arguments from the calling Ruby application
232
- # - & block = a block which defines the additional application-specific arguments
231
+ # param argv = the Array of command line arguments from the calling Ruby application
232
+ # param opts
233
+ # opts [String] :domain
234
+ # opts [String] :nodeID
235
+ # opts [String] :appName
236
+ # opts [Integer] :protocol
237
+ # opts [Proc] :afterParse
238
+ # param block = a block which defines the additional application-specific arguments
233
239
  #
234
240
  def self.init(argv, opts = {}, &block)
235
241
  OML4R#{VERSION_STRING} [#{COPYRIGHT}")
@@ -240,21 +246,21 @@ module OML4R
240
246
  OML4R.logger.warn "opts[:expID] and ENV['OML_EXP_ID'] are getting deprecated; please use opts[:domain] or ENV['OML_DOMAIN'] instead"
241
247
  opts[:domain] ||= d
242
248
  end
243
- domain ||= ENV['OML_DOMAIN'] || opts[:domain]
249
+ opts[:domain] = ENV['OML_DOMAIN'] || opts[:domain]
244
250
 
245
251
  # TODO: Same as above; here, though, :id might actually be the way to go; or
246
252
  # perhaps instId?
247
253
  #if opts[:id]
248
254
  # raise 'OML4R: :id is not a valid option. Do you mean :nodeID?'
249
255
  #end
250
- nodeID = ENV['OML_NAME'] || opts[:nodeID] || opts[:id] || ENV['OML_ID']
256
+ opts[:nodeID] = ENV['OML_NAME'] || opts[:nodeID] || opts[:id] || ENV['OML_ID']
251
257
  #
252
258
  # XXX: Same again; also, this is the responsibility of the developer, not the user
253
259
  #if opts[:app]
254
260
  # raise 'OML4R: :app is not a valid option. Do you mean :appName?'
255
261
  #end
256
- appName = opts[:appName] || opts[:app]
257
- protocol = opts[:protocol] = DEF_PROTOCOL
262
+ opts[:appName] ||= opts[:app]
263
+ opts[:protocol] ||= DEF_PROTOCOL
258
264
 
259
265
  if ENV['OML_URL'] || opts[:omlURL] || opts[:url]
260
266
  raise MissingArgumentException.new 'neither OML_URL, :omlURL nor :url are valid. Do you mean OML_COLLECT or :omlCollect?'
@@ -262,7 +268,7 @@ module OML4R
262
268
  if ENV['OML_SERVER'] || opts[:omlServer]
263
269
  OML4R.logger.warn "opts[:omlServer] and ENV['OML_SERVER'] are getting deprecated; please use opts[:collect] or ENV['OML_COLLECT'] instead"
264
270
  end
265
- omlCollectUri = ENV['OML_COLLECT'] || ENV['OML_SERVER'] || opts[:collect] || opts[:omlServer]
271
+ opts[:collect] = ENV['OML_COLLECT'] || ENV['OML_SERVER'] || opts[:collect] || opts[:omlServer]
266
272
  noop = opts[:noop] || false
267
273
 
268
274
  if argv
@@ -271,10 +277,10 @@ module OML4R
271
277
  # Include the definition of application's specific arguments
272
278
  yield(op) if block
273
279
  # Include the definition of OML specific arguments
274
- op.on("--oml-id id", "Name to identify this app instance [#{nodeID || 'undefined'}]") { |name| nodeID = name }
275
- op.on("--oml-domain domain", "Name of experimental domain [#{domain || 'undefined'}] *EXPERIMENTAL*") { |name| domain = name }
276
- op.on("--oml-collect uri", "URI of server to send measurements to") { |u| omlCollectUri = u }
277
- op.on("--oml-protocol p", "Protocol number [#{OML4R::DEF_PROTOCOL}]") { |l| protocol = l.to_i }
280
+ op.on("--oml-id id", "Name to identify this app instance [#{opts[:nodeID] || 'undefined'}]") { |name| opts[:nodeID] = name }
281
+ op.on("--oml-domain domain", "Name of experimental domain [#{opts[:domain] || 'undefined'}] *EXPERIMENTAL*") { |name| opts[:domain] = name }
282
+ op.on("--oml-collect uri", "URI of server to send measurements to") { |u| opts[:omlCollectUri] = u }
283
+ op.on("--oml-protocol p", "Protocol number [#{OML4R::DEF_PROTOCOL}]") { |l| opts[:protocol] = l.to_i }
278
284
  op.on("--oml-log-level l", "Log level used (info: 1 .. debug: 0)") { |l| OML4R.logger.level = l.to_i }
279
285
  op.on("--oml-noop", "Do not collect measurements") { noop = true }
280
286
  op.on("--oml-exp-id domain", "Obsolescent equivalent to --oml-domain domain") { |name|
@@ -282,12 +288,12 @@ module OML4R
282
288
  OML4R.logger.warn "Option --oml-exp-id is getting deprecated; please use '--oml-domain #{domain}' instead"
283
289
  }
284
290
  op.on("--oml-file localPath", "Obsolescent equivalent to --oml-collect file:localPath") { |name|
285
- omlCollectUri = "file:#{name}"
286
- OML4R.logger.warn "Option --oml-file is getting deprecated; please use '--oml-collect #{omlCollectUri}' instead"
291
+ opts[:omlCollectUri] = "file:#{name}"
292
+ OML4R.logger.warn "Option --oml-file is getting deprecated; please use '--oml-collect #{opts[:omlCollectUri]}' instead"
287
293
  }
288
294
  op.on("--oml-server uri", "Obsolescent equivalent to --oml-collect uri") {|u|
289
- omlCollectUri = u
290
- OML4R.logger.warn "Option --oml-server is getting deprecated; please use '--oml-collect #{omlCollectUri}' instead"
295
+ opts[:omlCollectUri] = "tcp:#{u}"
296
+ OML4R.logger.warn "Option --oml-server is getting deprecated; please use '--oml-collect #{opts[:omlCollectUri]}' instead"
291
297
  }
292
298
  op.on_tail("--oml-help", "Show this message") { $stderr.puts op; exit }
293
299
  # XXX: This should be set by the application writer, not the command line
@@ -296,46 +302,52 @@ module OML4R
296
302
  # Now parse the command line
297
303
  OML4R.logger.debug "ARGV: #{argv.inspect}"
298
304
  rest = op.parse(argv)
305
+ if opts[:afterParse]
306
+ # give the app a chance to fix missing parameters
307
+ opts[:afterParse].call(opts)
308
+ end
299
309
  return if noop
300
310
  end
301
311
 
302
- unless nodeID
312
+ unless opts[:nodeID]
303
313
  begin
304
314
  # Create a default nodeID by concatinating the local hostname with the process ID
305
315
  hostname = nil
306
316
  begin
307
- hostname = Socket.gethostbyname(Socket.gethostname)[0]
317
+ #hostname = Socket.gethostbyname(Socket.gethostname)[0]
318
+ hostname = Socket.gethostname
308
319
  rescue Exception
309
320
  begin
310
- hostname = `hostname`
321
+ hostname = (`hostname`).chop
311
322
  rescue Exception; end
312
323
  end
313
324
  if hostname
314
- nodeID = "#{hostname}-#{Process.pid}"
325
+ opts[:nodeID] = "#{hostname}-#{Process.pid}"
315
326
  end
316
327
  end
317
- unless nodeID
328
+ unless opts[:nodeID]
318
329
  raise MissingArgumentException.new 'OML4R: Missing values for parameter :nodeID (--oml-id)'
319
330
  end
320
331
  end
321
332
 
322
- unless domain && appName
333
+ unless opts[:domain] && opts[:appName]
323
334
  raise MissingArgumentException.new 'OML4R: Missing values for parameters :domain (--oml-domain), :nodeID (--oml-id), or :appName (in code)!'
324
335
  end
325
336
 
326
-
327
337
  unless opts[:create_default_channel] == false
328
338
  # Set a default collection URI if nothing has been specified
329
- unless omlCollectUri
330
- omlCollectUri = "file:#{appName}_#{nodeID}_#{domain}_#{Time.now.strftime("%Y-%m-%dt%H.%M.%S%z")}"
331
- OML4R.logger.info "Collection URI is #{omlCollectUri}"
339
+ unless opts[:omlCollectUri]
340
+ require 'time'
341
+ opts[:omlCollectUri] = "file:#{opts[:appName]}_#{Time.now.iso8601}"
342
+ #opts[:omlCollectUri] = "file:-"
343
+ OML4R.logger.info "Collection URI is #{opts[:omlCollectUri]}"
332
344
  end
333
- create_channel(:default, omlCollectUri)
345
+ create_channel(:default, opts[:omlCollectUri])
334
346
  end
335
347
 
336
348
  # Handle the defined Measurement Points
337
349
  startTime = Time.now
338
- Channel.init_all(domain, nodeID, appName, startTime, protocol)
350
+ Channel.init_all(opts[:domain], opts[:nodeID], opts[:appName], startTime, opts[:protocol])
339
351
  rest || []
340
352
  end
341
353
 
@@ -376,12 +388,6 @@ module OML4R
376
388
  return @@channels[key] = self.new(url, domain)
377
389
  end
378
390
 
379
- # def self._create(key, domain, url)
380
- # out = _connect(url)
381
- # @@channels[key] = self.new(url, domain, out)
382
- # end
383
-
384
-
385
391
  def self.[](name = :default, domain = :default)
386
392
  key = "#{name}:#{domain}"
387
393
  unless (@@channels.key?(key))
@@ -566,7 +572,7 @@ module OML4R
566
572
  loop do
567
573
  sleep 5
568
574
  begin
569
- @out = self.class._connect(@url)
575
+ @out = _connect(@url)
570
576
  @header_sent = false
571
577
  OML4R.logger.info "Reconnected to '#{@url}'"
572
578
  return _send(msg)
@@ -3,6 +3,13 @@
3
3
  # You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
4
4
  # By downloading or using this software you accept the terms and the liability disclaimer in the License.
5
5
  # ------------------
6
+ #
7
+ # = oml_outputter.rb
8
+ #
9
+ # == Description
10
+ #
11
+ # Log4r outputter which turn logging events into an OML stream
12
+ #
6
13
 
7
14
  require 'log4r/outputter/outputter'
8
15
  require 'oml4r'
@@ -23,7 +30,6 @@ module Log4r
23
30
  param :data
24
31
  end
25
32
 
26
-
27
33
  # Initialise an outputter which turns logging messages
28
34
  # into an OML stream
29
35
  #
data/lib/oml4r/version.rb CHANGED
@@ -5,7 +5,7 @@
5
5
  # ------------------
6
6
 
7
7
  module OML4R
8
- VERSION = "2.9.3"
8
+ VERSION = "2.9.4"
9
9
  VERSION_STRING = "OML4R Client V#{VERSION}"
10
10
  COPYRIGHT = "Copyright 2009-2013, NICTA"
11
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oml4r
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.3
4
+ version: 2.9.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-29 00:00:00.000000000 Z
12
+ date: 2013-08-30 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! '["Simple OML client library for Ruby"]'
15
15
  email: