oml4r 2.10.4.20.g6503629 → 2.10.4.30.g89b8035

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cd8b6f5e465409927b5b77ac846b1d43d14a4b6c
4
+ data.tar.gz: 7ecd90004cbbe74cad0f59777f154848411f7f2a
5
+ SHA512:
6
+ metadata.gz: 8119deb446648db71725aa85043ee6e9cf5bda2c03b50599372d18edde524880cde856102f68cb8786a62d53598ff3f7ae149c758d436defe6b52d5046a240a9
7
+ data.tar.gz: 13552cdb60d6f98357bc2140cdad612634e7ee017b8d3c08bc2662e02d0c45d35f601987dcc9c81ec66674a96d137f224c24bdf3cd838335b23c72941fb56a89
data/bin/ntpq-oml2 CHANGED
@@ -30,9 +30,9 @@
30
30
  require 'rubygems'
31
31
  require 'oml4r'
32
32
 
33
- @@bin = "ntpq"
34
- @@binopt = "-p -n"
35
- @@appname = @@bin + "-oml2"
33
+ $bin = "ntpq"
34
+ $binopt = "-p -n"
35
+ $appname = $bin + "-oml2"
36
36
  # XXX: if when is expressed in days, we need to rescale it, see MP.cleanup
37
37
  @@regex = /^(?<rtype>\*|#|o|\+|x|.|-| )(?<remote>[^\s]+)\s+(?<refid>[^\s]+)\s+(?<stratum>\d+)\s+(?<type>l|u|m|b|-)\s+(?<when>\d+d?|-})\s+(?<poll>\d+)\s+(?<reach>\d+)\s+(?<delay>(\d|\.)+)\s+(?<offset>-?(\d|\.)+)\s+(?<jitter>(\d|\.)+)$/
38
38
 
@@ -40,7 +40,7 @@ require 'oml4r'
40
40
  # [rtype]remote, refid, st[ratum], t[ype], when, poll, reach, delay, offset, jitter [or dispersion]
41
41
  # [0] http://h30499.www3.hp.com/t5/System-Administration/Interpreting-NTPQ-output/m-p/3616540/highlight/true#M235154
42
42
  class MP < OML4R::MPBase
43
- name @@bin
43
+ name $bin
44
44
 
45
45
  param :rtype, :type => :string #
46
46
  # Character that may be before hostname:
@@ -109,14 +109,14 @@ class Wrapper
109
109
  @loop_interval = 0
110
110
 
111
111
  begin
112
- @leftover = OML4R::init(args, :appName => @@bin) do |argParser|
113
- argParser.banner = "Runs the system #{@@bin}#{(@@binopt.nil?)?"":" (#{@@binopt})"} and reports measurements via OML\n Use -h or --help for a list of options\n\n"
112
+ @leftover = OML4R::init(args, :appName => $bin) do |argParser|
113
+ argParser.banner = "Runs the system #{$bin}#{($binopt.nil?)?"":" (#{$binopt})"} and reports measurements via OML\n Use -h or --help for a list of options\n\n"
114
114
  argParser.on("-l","--loop-interval NUMBER","Interval between runs (seconds)"){ |interval| @loop_interval = interval.to_i()}
115
- argParser.on("-q","--[no]-quiet ","Don't show #{@@bin} output on the console"){ @verbose = false }
115
+ argParser.on("-q","--[no]-quiet ","Don't show #{$bin} output on the console"){ @verbose = false }
116
116
  end
117
117
 
118
118
  rescue OML4R::MissingArgumentException => ex
119
- OML4R.logger.warn "#{@@appname}: #{ex}"
119
+ OML4R.logger.warn "#{$appname}: #{ex}"
120
120
  end
121
121
 
122
122
  end
@@ -128,7 +128,7 @@ class Wrapper
128
128
  end
129
129
 
130
130
  def run()
131
- @binio = IO.popen("#{@@bin} #{@@binopt} #{(@leftover.nil?)?"":@leftover.join(' ')}")
131
+ @binio = IO.popen("#{$bin} #{$binopt} #{(@leftover.nil?)?"":@leftover.join(' ')}")
132
132
  while true
133
133
  row = @binio.readline
134
134
  puts row if @verbose
@@ -159,7 +159,7 @@ class Wrapper
159
159
  end #end of class
160
160
 
161
161
  begin
162
- OML4R.logger.info "#{@@appname} #{OML4R::VERSION}"
162
+ OML4R.logger.info "#{$appname} #{OML4R::VERSION}"
163
163
 
164
164
  app = Wrapper.new(ARGV)
165
165
 
@@ -191,7 +191,7 @@ rescue Interrupt
191
191
  rescue SystemExit
192
192
  OML4R.close
193
193
  rescue Exception => ex
194
- OML4R.logger.error "#{@@appname}: #{ex}"
194
+ OML4R.logger.error "#{$appname}: #{ex}"
195
195
  end
196
196
 
197
197
  # Local Variables:
data/bin/ping-oml2 CHANGED
@@ -32,12 +32,13 @@
32
32
  require 'rubygems'
33
33
  require 'oml4r'
34
34
 
35
- @@bin = "ping"
36
- @@appname = @@bin + "-oml2"
35
+ $bin = "ping"
36
+ $appname = $bin + "-oml2"
37
37
 
38
38
  class MPStat < OML4R::MPBase
39
- name @@bin
40
- param :dest_addr, :type => :string
39
+ name $bin
40
+ param :remote, :type => :string
41
+ param :seq, :type => :uint32
41
42
  param :ttl, :type => :uint32
42
43
  param :rtt, :type => :double
43
44
  param :rtt_unit, :type => :string
@@ -74,7 +75,7 @@ class PingWrapper
74
75
  @binio = nil
75
76
 
76
77
  begin
77
- leftover = OML4R::init(args, :appName => @@bin) do |argParser|
78
+ leftover = OML4R::init(args, :appName => $bin) do |argParser|
78
79
  argParser.banner = "Runs the system ping and reports measurements via OML\n Use -h or --help for a list of options\n\n"
79
80
  argParser.on("-a","--dest_addr ADDRESS","Address to ping (the -a switch is optional)") { |address| @addr = address.to_s() }
80
81
  argParser.on("-b","--broadcast","Allow pinging a broadcast address") { @broadcast ='-b' }
@@ -86,7 +87,7 @@ class PingWrapper
86
87
  end
87
88
 
88
89
  rescue OML4R::MissingArgumentException => ex
89
- OML4R.logger.warn "#{@@appname}: #{ex}"
90
+ OML4R.logger.warn "#{$appname}: #{ex}"
90
91
  leftover = []
91
92
  end
92
93
 
@@ -102,27 +103,35 @@ class PingWrapper
102
103
 
103
104
  def process_output(row)
104
105
  if not (parse =
105
- /^\d+ bytes from (.*):.*ttl=(\d+) time=([0-9.]+) ([a-zA-Z]+)/.match(row)
106
+ /^\d+ bytes from (.*):.*icmp_seq=(\d+) ttl=(\d+) time=([0-9.]+) ([a-zA-Z]+)/.match(row)
106
107
  ).nil? # One sample
107
- MPStat.inject(*parse[1..4])
108
+ MPStat.inject(*parse[1..5])
108
109
 
109
110
  elsif not (parse =
110
- /^(\d+).*transmitted, (\d+).*received, ([0-9.]+)%.*loss(, time ([0-9.]+) *([a-zA-Z]+))?/.match(row)
111
- ).nil? # Summary
111
+ /^PING .*\((?<dest_addr>[^\)]+)\) (?<packetsize>\d+)\((?<packetsize_total>\d+)\) bytes/.match(row)
112
+ ).nil? # First line
113
+
114
+ MPStat.inject_metadata('dest_addr',parse[:dest_addr])
115
+ MPStat.inject_metadata('packetsize_B',parse[:packetsize])
116
+ MPStat.inject_metadata('packetsize_total_B',parse[:packetsize_total])
117
+
118
+ elsif not (parse =
119
+ /^(\d+).*transmitted, (\d+).*received,.* ([0-9.]+)%.*loss(, time ([0-9.]+) *([a-zA-Z]+))?/.match(row)
120
+ ).nil? # Summary XXX: ignore duplicates in, e.g., "3 packets transmitted, 3 received, +171 duplicates, 0% packet loss, time 2003ms"
112
121
  # time (matches 5 & 6) is not printed by ping on OSX
113
122
  # match 4 is unused
114
123
  q = parse.to_a[1..3] + parse.to_a[5..6]
115
- MPSummary.inject(*q)
124
+ MPSummary.inject(*q)
116
125
 
117
126
  elsif not (parse =
118
127
  /min.*= ([0-9.]+)\/([0-9.]+)\/([0-9.]+)\/([0-9.]+) ([a-zA-Z]+)/.match(row)
119
128
  ).nil? # RTT statistics
120
- MPRTTStats.inject(*parse[1..5])
129
+ MPRTTStats.inject(*parse[1..5])
121
130
  end
122
131
  end
123
132
 
124
133
  def run()
125
- @binio = IO.popen("#{@@bin}#{@inet6} #{@numeric} #{@count} #{@interval} #{@broadcast} #{@addr}")
134
+ @binio = IO.popen("#{$bin}#{@inet6} #{@numeric} #{@count} #{@interval} #{@broadcast} #{@addr}")
126
135
  while true
127
136
  row = @binio.readline
128
137
  puts row if @verbose
@@ -148,7 +157,7 @@ class PingWrapper
148
157
  end #end of class
149
158
 
150
159
  begin
151
- OML4R.logger.info "#{@@appname} #{OML4R::VERSION}"
160
+ OML4R.logger.info "#{$appname} #{OML4R::VERSION}"
152
161
 
153
162
  app = PingWrapper.new(ARGV)
154
163
 
@@ -173,7 +182,7 @@ rescue Interrupt
173
182
  rescue SystemExit
174
183
  OML4R.close
175
184
  rescue Exception => ex
176
- OML4R.logger.error "#{@@appname}: #{ex}"
185
+ OML4R.logger.error "#{$appname}: #{ex}"
177
186
  end
178
187
 
179
188
  # Local Variables:
data/bin/signalgen ADDED
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Copyright (c) 2014 National ICT Australia Limited (NICTA).
4
+ # This software may be used and distributed solely under the terms of
5
+ # the MIT license (License). You should find a copy of the License in
6
+ # COPYING or at http://opensource.org/licenses/MIT. By downloading or
7
+ # using this software you accept the terms and the liability disclaimer
8
+ # in the License.
9
+ #
10
+ # ------------------
11
+ #
12
+ # = signalgen
13
+ #
14
+ # This is a simple OML4R example, which generates some signal values and
15
+ # sends them to an OML end-point (e.g. oml2 server)
16
+ #
17
+ require 'oml4r'
18
+
19
+ # Some default parameter values
20
+ APPNAME = 'signalgen'
21
+ DEF_ODOMAIN = 'foo'
22
+ DEF_OCOLLECT = 'file:-'
23
+ DEF_FREQ = 2.0 # Hz
24
+ DEF_INCREMENT = 15 # rad
25
+ DEF_SAMPLE = 500 # samples
26
+
27
+ # Define our Measurement Points
28
+ class SinMP < OML4R::MPBase
29
+ name :sin
30
+ param :label # default type is String
31
+ param :phase, :type => :int32
32
+ param :value, :type => :double
33
+ end
34
+
35
+ class CosMP < OML4R::MPBase
36
+ name :cos
37
+ param :label # default type is String
38
+ param :value, :type => :double
39
+ end
40
+
41
+ # Initialise the OML4R module for our application
42
+ # 'collect' could also be tcp:host:port
43
+ opts = {:appName => APPNAME, :domain => DEF_ODOMAIN, :collect => DEF_OCOLLECT}
44
+
45
+ begin
46
+ @freq = DEF_FREQ
47
+ @inc = DEF_INCREMENT
48
+ @sample = DEF_SAMPLE
49
+ OML4R::init(ARGV, opts) do |ap|
50
+ ap.banner = "A simple OML4R example, which generates some signal values."
51
+ ap.on("-f","--frequency F","Signal frequency [Hz]") { |f| @freq = f.to_f }
52
+ ap.on("-i","--increment A","Increment angle between samples [rad]") { |a| @inc = a.to_i }
53
+ ap.on("-n","--samples N","Number of samples to generate") { |n| @sample = n.to_i }
54
+ end
55
+ rescue OML4R::MissingArgumentException => mex
56
+ $stderr.puts mex
57
+ exit
58
+ end
59
+
60
+ # Record some metadata
61
+ puts "#{APPNAME} - Frequency: #{@freq} Hz - Increment: #{@inc} rad - Samples: #{@sample}"
62
+ SinMP.inject_metadata('frequency',@freq)
63
+ SinMP.inject_metadata('increment',@inc)
64
+ SinMP.inject_metadata('samples',@sample)
65
+
66
+ # Now collect and inject some measurements
67
+ @sample.times do |i|
68
+ sleep 1./@freq
69
+ angle = @inc * i
70
+ SinMP.inject("label_#{angle}", angle, Math.sin(angle))
71
+ CosMP.inject("label_#{angle}", Math.cos(angle))
72
+ end
73
+
74
+ # Don't forget to close when you are finished
75
+ OML4R::close()
data/lib/oml4r/version.rb CHANGED
@@ -6,6 +6,10 @@
6
6
 
7
7
  module OML4R
8
8
 
9
+ # NOTE: The version number is now derived automatically from Git tags. This
10
+ # file needs not be modified.
11
+ # To create a new release, use git tag -asm "DESC" v2.m.r (make sure the
12
+ # feature set corresponds to that of liboml2-2.m).
9
13
  def self.version_of(name)
10
14
  git_tag = `git describe --tags 2> /dev/null`.chomp
11
15
  git_root = `git rev-parse --show-toplevel 2> /dev/null`.chomp
data/omf/ping-oml2.rb CHANGED
@@ -9,12 +9,11 @@
9
9
  #
10
10
  defApplication('oml:app:ping', 'ping') do |a|
11
11
 
12
- a.version(2, 9, 0)
13
- a.shortDescription = "Wrapper around ping"
12
+ # a.version(2, 9, 0) # Deprecated in OMF6
14
13
  a.description = %{This application runs the system ping, parses its output and
15
14
  reports the measurements via OML
16
15
  }
17
- a.path = "/usr/local/bin/ping-oml2"
16
+ a.binary_path = "/usr/local/bin/ping-oml2"
18
17
 
19
18
  a.defProperty('dest_addr', 'Address to ping', nil,
20
19
  :type => :string)
@@ -28,7 +27,8 @@ reports the measurements via OML
28
27
  :type => :boolean)
29
28
 
30
29
  a.defMeasurement('ping') do |m|
31
- m.defMetric('dest_addr',:string)
30
+ m.defMetric('remote',:string)
31
+ m.defMetric('seq',:uint32)
32
32
  m.defMetric('ttl',:uint32)
33
33
  m.defMetric('rtt',:double)
34
34
  m.defMetric('rtt_unit',:string)
data/omf/signalgen.rb ADDED
@@ -0,0 +1,60 @@
1
+ # Copyright (c) 2014 National ICT Australia Limited (NICTA).
2
+ # This software may be used and distributed solely under the terms of
3
+ # the MIT license (License). You should find a copy of the License in
4
+ # COPYING or at http://opensource.org/licenses/MIT. By downloading or
5
+ # using this software you accept the terms and the liability disclaimer
6
+ # in the License.
7
+ #
8
+
9
+ defApplication('signalgen') do |a|
10
+ a.binary_path = "/usr/local/bin/signalgen"
11
+ a.description = "A simple signal generator reporting values into OML"
12
+
13
+ a.defProperty('frequency', 'Signal frequency [Hz]', '-f', :type => :numeric)
14
+ a.defProperty('increment', 'Increment angle between samples [rad]', '-i', :type => :numeric)
15
+ a.defProperty('samples', 'Number of samples to generate', '-n', :type => :numeric)
16
+
17
+ a.defMeasurement('sin') do |m|
18
+ m.defMetric('label', :string)
19
+ m.defMetric('phase', :int32)
20
+ m.defMetric('value', :double)
21
+ end
22
+
23
+ a.defMeasurement('cos') do |m|
24
+ m.defMetric('label', :string)
25
+ m.defMetric('value', :double)
26
+ end
27
+ end
28
+
29
+ # Example use with OMF v6:
30
+ #
31
+ # loadOEDL('https://raw.githubusercontent.com/mytestbed/oml4r/master/omf/signalgen.rb')
32
+ #
33
+ # defProperty('res1', "test1", "ID of a node")
34
+ #
35
+ # defGroup('Generator', property.res1) do |node|
36
+ # node.addApplication("signalgen") do |app|
37
+ # app.setProperty('samples', 10)
38
+ # app.measure('sin', samples: 1)
39
+ # end
40
+ # end
41
+ #
42
+ # onEvent(:ALL_UP_AND_INSTALLED) do
43
+ # info "Starting a remote signal generator"
44
+ # allGroups.startApplications
45
+ #
46
+ # after 30 do
47
+ # allGroups.stopApplications
48
+ # Experiment.done
49
+ # end
50
+ # end
51
+ #
52
+ # defGraph 'Sine' do |g|
53
+ # g.ms('sin').select {[ oml_ts_client.as(:ts), :value ]}
54
+ # g.caption "Generated Sine Signal"
55
+ # g.type 'line_chart3'
56
+ # g.mapping :x_axis => :ts, :y_axis => :value
57
+ # g.xaxis :legend => 'time [s]'
58
+ # g.yaxis :legend => 'Sine Signal', :ticks => {:format => 's'}
59
+ # end
60
+
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oml4r
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.10.4.20.g6503629
5
- prerelease: 10
4
+ version: 2.10.4.30.g89b8035
6
5
  platform: ruby
7
6
  authors:
8
7
  - NICTA
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-09-22 00:00:00.000000000 Z
11
+ date: 2014-10-09 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: This is a simple client library for OML which does not use liboml2 and
15
14
  its filters, but connects directly to the server using the +text+ protocol. User
@@ -27,6 +26,7 @@ executables:
27
26
  - oml4r-wlanconfig
28
27
  - oml4r-zabbix
29
28
  - ping-oml2
29
+ - signalgen
30
30
  - test_types
31
31
  extensions: []
32
32
  extra_rdoc_files: []
@@ -46,6 +46,7 @@ files:
46
46
  - bin/oml4r-wlanconfig
47
47
  - bin/oml4r-zabbix
48
48
  - bin/ping-oml2
49
+ - bin/signalgen
49
50
  - bin/test_types
50
51
  - examples/oml4r-logging.rb
51
52
  - examples/oml4r-multiple-channel-example.rb
@@ -64,30 +65,30 @@ files:
64
65
  - omf/README
65
66
  - omf/ntpq-oml2.rb
66
67
  - omf/ping-oml2.rb
68
+ - omf/signalgen.rb
67
69
  - oml4r.gemspec
68
70
  homepage: http://oml.mytestbed.net
69
71
  licenses:
70
72
  - MIT
73
+ metadata: {}
71
74
  post_install_message:
72
75
  rdoc_options: []
73
76
  require_paths:
74
77
  - lib
75
78
  required_ruby_version: !ruby/object:Gem::Requirement
76
- none: false
77
79
  requirements:
78
- - - ! '>='
80
+ - - '>='
79
81
  - !ruby/object:Gem::Version
80
82
  version: '1.9'
81
83
  required_rubygems_version: !ruby/object:Gem::Requirement
82
- none: false
83
84
  requirements:
84
- - - ! '>'
85
+ - - '>'
85
86
  - !ruby/object:Gem::Version
86
87
  version: 1.3.1
87
88
  requirements: []
88
89
  rubyforge_project:
89
- rubygems_version: 1.8.23
90
+ rubygems_version: 2.2.1
90
91
  signing_key:
91
- specification_version: 3
92
+ specification_version: 4
92
93
  summary: Simple OML client library and applications for Ruby
93
94
  test_files: []