omf_ec 6.0.8.pre.5 → 6.1.0

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.
data/bin/omf_ec CHANGED
@@ -295,7 +295,7 @@ def setup_logging(global_options = {})
295
295
 
296
296
  if OmfEc.experiment.oml_uri
297
297
  require 'oml4r/logging/oml4r_appender'
298
- Logging.logger.root.add_appenders(Logging.appenders.oml4r('oml4r', :appName => 'omf_ec_log', :domain => "#{OmfEc.experiment.id}", :collect => "#{OmfEc.experiment.oml_uri}"))
298
+ Logging.logger.root.add_appenders(Logging.appenders.oml4r('oml4r', :appName => 'omf_ec', :domain => "#{OmfEc.experiment.id}", :collect => "#{OmfEc.experiment.oml_uri}"))
299
299
  end
300
300
 
301
301
  OmfCommon.load_logging_config(global_options[:log_config])
@@ -303,7 +303,6 @@ end
303
303
 
304
304
  def load_exp(exp_path, global_options = {} , options = {}, properties = {})
305
305
  begin
306
-
307
306
  if options[:inst_oml_uri] && options[:inst_oml_id] && options[:inst_oml_domain]
308
307
  require 'oml4r'
309
308
  instrument_ec = OML4R::init(nil, { collect: options[:inst_oml_uri], nodeID: options[:inst_oml_id], domain: options[:inst_oml_domain] , appName: File.basename($PROGRAM_NAME)} )
@@ -331,7 +330,7 @@ def load_exp(exp_path, global_options = {} , options = {}, properties = {})
331
330
  setup_logging(global_options)
332
331
 
333
332
  OmfCommon.comm.on_connected do |comm|
334
- info "OMF Experiment Controller #{OmfEc::VERSION}"
333
+ info "OMF Experiment Controller #{OmfEc::VERSION} - Start"
335
334
  info "Connected using #{comm.conn_info}"
336
335
  info "Execute: #{exp_path}"
337
336
  info "Properties: #{OmfEc.experiment.cmdline_properties}"
@@ -347,11 +346,16 @@ def load_exp(exp_path, global_options = {} , options = {}, properties = {})
347
346
  OmfCommon::Auth::CertificateStore.instance.register(ec_cert)
348
347
  end
349
348
 
349
+ OmfEc.experiment.log_metadata("ec_version", "#{OmfEc::VERSION}")
350
+ OmfEc.experiment.log_metadata("exp_path", exp_path)
351
+ OmfEc.experiment.log_metadata("ec_pid", "#{Process.pid}")
352
+
350
353
  begin
351
354
  include OmfEc::Backward::DefaultEvents
352
355
  load exp_path
353
356
  OmfEc::Experiment.start
354
357
  rescue => e
358
+ OmfEc.experiment.log_metadata("state", "error")
355
359
  error e.message
356
360
  error e.backtrace.join("\n")
357
361
  end
data/lib/omf_ec/dsl.rb CHANGED
@@ -124,8 +124,9 @@ module OmfEc
124
124
  # @param name of property
125
125
  # @param default_value for this property
126
126
  # @param description short text description of this property
127
+ # @param type of property
127
128
  #
128
- def def_property(name, default_value, description = nil)
129
+ def def_property(name, default_value, description = nil, type = nil)
129
130
  OmfEc.experiment.add_property(name, default_value, description)
130
131
  end
131
132
 
@@ -18,6 +18,16 @@ module OmfEc
18
18
  attr_accessor :name, :oml_uri, :app_definitions, :property, :cmdline_properties, :show_graph, :nodes
19
19
  attr_reader :groups, :sub_groups, :state
20
20
 
21
+ # MP only used for injecting metadata
22
+ class MetaData < OML4R::MPBase
23
+ name :meta_data
24
+
25
+ # TODO: Should we use the meta data functionality - not sure if it is working right now
26
+ param :domain, type: :string
27
+ param :key, type: :string
28
+ param :value, type: :string
29
+ end
30
+
21
31
  def initialize
22
32
  super
23
33
  @id = Time.now.utc.iso8601(3)
@@ -171,6 +181,11 @@ module OmfEc
171
181
  end
172
182
  end
173
183
 
184
+ def log_metadata(key, value, domain = 'sys')
185
+ #MetaData.inject_metadata(key.to_s, value.to_s)
186
+ MetaData.inject(domain.to_s, key.to_s, value.to_s)
187
+ end
188
+
174
189
  # Purely for backward compatibility
175
190
  class << self
176
191
  # Disconnect communicator, try to delete any XMPP affiliations
@@ -186,11 +201,15 @@ module OmfEc
186
201
  g.resources[type: 'wlan'].release unless g.net_ifs.find_all { |v| v.conf[:type] == 'wlan' }.empty?
187
202
  end
188
203
 
189
- OmfCommon.el.after(5) do
190
- OmfCommon.comm.disconnect
191
- OmfCommon.eventloop.stop
204
+ OmfCommon.el.after(4) do
205
+ info "OMF Experiment Controller #{OmfEc::VERSION} - Exit."
206
+ OmfCommon.el.after(1) do
207
+ OmfCommon.comm.disconnect
208
+ OmfCommon.eventloop.stop
209
+ end
192
210
  end
193
211
  end
212
+ OmfEc.experiment.log_metadata("state", "finished")
194
213
  end
195
214
 
196
215
  def disconnect
@@ -204,6 +223,7 @@ module OmfEc
204
223
 
205
224
  def start
206
225
  info "Experiment: #{OmfEc.experiment.id} starts"
226
+ OmfEc.experiment.log_metadata("state", "running")
207
227
 
208
228
  allGroups do |g|
209
229
  g.members.each do |key, value|
@@ -160,11 +160,16 @@ module OmfEc
160
160
  @value = value
161
161
  info "#{name} = #{value.inspect} (#{value.class})"
162
162
  @change_observers.each { |proc| proc.call(value) }
163
+ OmfEc.experiment.log_metadata(name, value, :prop)
163
164
  end
164
165
 
165
166
  # Implicit conversion to String (required for + operator)
166
167
  def to_str() @value.to_s end
167
168
 
169
+ # More convenient conversion
170
+ def to_f() @value.to_f end
171
+ def to_i() @value.to_i end
172
+
168
173
  # Explicit conversion to String
169
174
  alias_method :to_s, :to_str
170
175
 
@@ -70,6 +70,7 @@ module OmfEc::Graph
70
70
  end
71
71
 
72
72
  def _report
73
+ _report_meta
73
74
  info "REPORT:START: #{@name}"
74
75
  info "REPORT:TYPE: #{@gtype}"
75
76
  info "REPORT:POSTFIX: #{URI.encode(@postfix)}" if @postfix
@@ -86,6 +87,26 @@ module OmfEc::Graph
86
87
  info "REPORT:STOP"
87
88
  end
88
89
 
90
+ def _report_meta
91
+ h = {
92
+ type: @gtype,
93
+ mapping: @mapping,
94
+ caption: @caption
95
+ }
96
+ h[:postfix] = @postfix if @postfix
97
+ dss = h[:dss] = {}
98
+ @ms.each do |ctxt, a|
99
+ a.each do |ms|
100
+ dss[ctxt] = ms.sql
101
+ end
102
+ end
103
+ if @axis
104
+ h[:axis] = @axis
105
+ end
106
+ descr = h.to_json
107
+ OmfEc.experiment.log_metadata(@name, descr, :graph)
108
+ end
109
+
89
110
  protected
90
111
 
91
112
  def initialize(name)
data/omf_ec.gemspec CHANGED
@@ -1,5 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
+ $:.push File.expand_path("../../omf_common/lib", __FILE__)
3
4
  require "omf_ec/version"
4
5
 
5
6
  Gem::Specification.new do |s|
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omf_ec
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.8.pre.5
5
- prerelease: 6
4
+ version: 6.1.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - NICTA
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-05 00:00:00.000000000 Z
12
+ date: 2014-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -98,7 +98,7 @@ dependencies:
98
98
  requirements:
99
99
  - - '='
100
100
  - !ruby/object:Gem::Version
101
- version: 6.0.8.pre.5
101
+ version: 6.1.0
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,7 +106,7 @@ dependencies:
106
106
  requirements:
107
107
  - - '='
108
108
  - !ruby/object:Gem::Version
109
- version: 6.0.8.pre.5
109
+ version: 6.1.0
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: gli
112
112
  requirement: !ruby/object:Gem::Requirement
@@ -205,12 +205,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
205
  required_rubygems_version: !ruby/object:Gem::Requirement
206
206
  none: false
207
207
  requirements:
208
- - - ! '>'
208
+ - - ! '>='
209
209
  - !ruby/object:Gem::Version
210
- version: 1.3.1
210
+ version: '0'
211
211
  requirements: []
212
212
  rubyforge_project: omf_ec
213
- rubygems_version: 1.8.24
213
+ rubygems_version: 1.8.23
214
214
  signing_key:
215
215
  specification_version: 3
216
216
  summary: OMF experiment controller