omf_rc 6.0.0.pre.6 → 6.0.0.pre.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,35 +1,33 @@
1
1
  require 'test_helper'
2
- require 'omf_rc/resource_proxy/generic_application'
2
+ require 'omf_rc/resource_proxy/application'
3
3
 
4
-
5
-
6
- describe OmfRc::ResourceProxy::GenericApplication do
4
+ describe OmfRc::ResourceProxy::Application do
7
5
 
8
6
  before do
9
- @app_test = OmfRc::ResourceFactory.new(:generic_application, { hrn: 'an_application' })
7
+ @app_test = OmfRc::ResourceFactory.new(:application, { hrn: 'an_application' })
10
8
  @app_test.comm = MiniTest::Mock.new
11
9
  @app_test.comm.expect :publish, nil, [String,OmfCommon::Message]
12
10
  end
13
11
 
14
12
  describe "when initialised" do
15
13
  it "must respond to an 'on_app_event' call back" do
16
- #OmfRc::ResourceProxy::GenericApplication.method_defined?(:on_app_event).must_equal true
14
+ #OmfRc::ResourceProxy::Application.method_defined?(:on_app_event).must_equal true
17
15
  @app_test.must_respond_to :on_app_event
18
16
  end
19
17
 
20
18
  it "must have its properties set to sensible initial values" do
21
19
  @app_test.request_state.to_sym.must_equal :stop
22
20
  @app_test.request_tarball_install_path.must_equal '/'
23
- @app_test.request_force_tarball_install.must_equal 'false'
24
- @app_test.request_installed.must_equal 'false'
25
- @app_test.request_map_err_to_out.must_equal 'false'
21
+ @app_test.request_force_tarball_install.must_equal false
22
+ @app_test.request_installed.must_equal false
23
+ @app_test.request_map_err_to_out.must_equal false
26
24
  end
27
25
 
28
26
  it "must be able to configure/request its basic properties" do
29
27
  basic_prop = %w(binary_path pkg_tarball pkg_ubuntu pkg_fedora force_tarball_install map_err_to_out tarball_install_path)
30
28
  basic_prop.each do |p|
31
- @app_test.method("configure_#{p}".to_sym).call('foo')
32
- @app_test.method("request_#{p}".to_sym).call.must_equal 'foo'
29
+ @app_test.send("configure_#{p}".to_sym, 'foo')
30
+ @app_test.send("request_#{p}".to_sym).must_equal 'foo'
33
31
  end
34
32
  end
35
33
 
@@ -47,6 +45,16 @@ describe OmfRc::ResourceProxy::GenericApplication do
47
45
  @app_test.property.environments['foo'].must_equal 123
48
46
  @app_test.property.environments['bar_bar'].must_equal 'bar_123'
49
47
  end
48
+
49
+ it "must be able to configure its available OML measurement points" do
50
+ test_oml_spec = eval(fixture('oml.spec'))
51
+ @app_test.method(:configure_oml).call(test_oml_spec)
52
+ @app_test.property.oml.must_be_kind_of Hash
53
+ @app_test.property.oml.has_key?(:available_mps).must_equal true
54
+ @app_test.property.oml[:available_mps].length.must_be :> , 0
55
+ @app_test.property.oml[:available_mps][0].must_be_kind_of Hash
56
+ @app_test.property.oml[:available_mps][0].has_key?(:mp).must_equal true
57
+ end
50
58
  end
51
59
 
52
60
  describe "when configuring its parameters property" do
@@ -78,28 +86,12 @@ describe OmfRc::ResourceProxy::GenericApplication do
78
86
  @app_test.property.parameters[:p2][:default].must_equal 'bar_bar'
79
87
  end
80
88
 
81
- it "must be able to sanitize its parameters property" do
82
- test_params = { :p1 => { :mandatory => 'true', :dynamic => false},
83
- :p2 => { :mandatory => true, :dynamic => 'false'},
84
- :p3 => { :type => 'Boolean', :default => true, :value => 'false'},
85
- :p4 => { :type => 'Boolean', :default => 'true', :value => false} }
86
- @app_test.method(:configure_parameters).call(test_params)
87
- @app_test.property.parameters[:p1][:mandatory].must_be_kind_of TrueClass
88
- @app_test.property.parameters[:p1][:dynamic].must_be_kind_of FalseClass
89
- @app_test.property.parameters[:p2][:mandatory].must_be_kind_of TrueClass
90
- @app_test.property.parameters[:p2][:dynamic].must_be_kind_of FalseClass
91
- @app_test.property.parameters[:p3][:default].must_be_kind_of TrueClass
92
- @app_test.property.parameters[:p3][:value].must_be_kind_of FalseClass
93
- @app_test.property.parameters[:p4][:default].must_be_kind_of TrueClass
94
- @app_test.property.parameters[:p4][:value].must_be_kind_of FalseClass
95
- end
96
-
97
89
  it "must be able to validate the correct type of a defined parameter" do
98
90
  test_params = { :p1 => { :type => 'String', :default => 'foo', :value => 'bar'},
99
91
  :p2 => { :type => 'Numeric', :default => 123, :value => 456},
100
- :p3 => { :type => 'Boolean', :default => true, :value => true},
92
+ :p3 => { :type => 'Boolean', :default => true, :value => false},
101
93
  :p4 => { :type => 'Boolean'},
102
- :p5 => { :type => 'Boolean', :default => true},
94
+ :p5 => { :type => 'Boolean', :default => false},
103
95
  :p6 => { :type => 'Boolean', :value => true},
104
96
  :p7 => { :type => 'Numeric'},
105
97
  :p8 => { :type => 'Numeric', :default => 123},
@@ -110,10 +102,10 @@ describe OmfRc::ResourceProxy::GenericApplication do
110
102
  @app_test.property.parameters[:p2][:default].must_be_kind_of Numeric
111
103
  @app_test.property.parameters[:p2][:value].must_be_kind_of Numeric
112
104
  @app_test.property.parameters[:p3][:default].must_be_kind_of TrueClass
113
- @app_test.property.parameters[:p3][:value].must_be_kind_of TrueClass
105
+ @app_test.property.parameters[:p3][:value].must_be_kind_of FalseClass
114
106
  @app_test.property.parameters[:p4][:default].must_be_nil
115
107
  @app_test.property.parameters[:p4][:value].must_be_nil
116
- @app_test.property.parameters[:p5][:default].must_be_kind_of TrueClass
108
+ @app_test.property.parameters[:p5][:default].must_be_kind_of FalseClass
117
109
  @app_test.property.parameters[:p6][:value].must_be_kind_of TrueClass
118
110
  @app_test.property.parameters[:p7][:default].must_be_nil
119
111
  @app_test.property.parameters[:p7][:value].must_be_nil
@@ -141,10 +133,11 @@ describe OmfRc::ResourceProxy::GenericApplication do
141
133
 
142
134
  it "must update any valid dynamic parameter with the given value" do
143
135
  # set the parameter as dynamic
144
- params1 = { :p1 => { :cmd => '--foo', :default => 'old_foo', :dynamic => true} }
136
+ params1 = { :p1 => { :cmd => '--foo', :default => 'old_foo', :dynamic => true},
137
+ :p2 => { :cmd => '--notcalled', :dynamic => false} }
145
138
  @app_test.method(:configure_parameters).call(params1)
146
139
  # then update it
147
- params2 = { :p1 => { :value => 'bar'} }
140
+ params2 = { :p1 => { :value => 'bar'} , :p2 => { :value => 'abc'} }
148
141
  @app_test.property.state = :run
149
142
  class ExecApp
150
143
  def initialize(app_id, res, cmd_line, err_out_map); end
@@ -176,7 +169,7 @@ describe OmfRc::ResourceProxy::GenericApplication do
176
169
  it "must set installed property to true if the event is 'DONE.OK' and the app_id's suffix is '_INSTALL'" do
177
170
  @app_test.on_app_event('DONE.OK', 'app_instance_id_INSTALL', 'Some text here')
178
171
  @app_test.request_state.to_sym.must_equal :stop
179
- @app_test.request_installed.must_equal "true"
172
+ @app_test.request_installed.must_equal true
180
173
  end
181
174
  end
182
175
 
@@ -297,6 +290,52 @@ describe OmfRc::ResourceProxy::GenericApplication do
297
290
  @app_test.method(:configure_state).call(:run)
298
291
  @app_test.property.state.must_equal :run
299
292
  end
293
+
294
+ it "must start an app with OML command line options when use_oml parameter is set" do
295
+ class ExecApp
296
+ def initialize(app_id, res, cmd_line, err_out_map)
297
+ cmd_line.must_equal "env -i my_cmd --oml-config /tmp/bar.xml --oml-log-level 1 --oml-log-file foo "
298
+ end
299
+ end
300
+ @app_test.property.state = :stop
301
+ @app_test.property.binary_path = "my_cmd"
302
+ @app_test.property.use_oml = true
303
+ @app_test.property.oml_loglevel = 1
304
+ @app_test.property.oml_logfile = "foo"
305
+ @app_test.property.oml_configfile = "/tmp/bar.xml"
306
+ File.stub(:exist?, true) { @app_test.method(:configure_state).call(:run) }
307
+ @app_test.property.state.must_equal :run
308
+ end
309
+
310
+ it "must start an app using its own built OML config when use_oml and oml parameters are set" do
311
+ class ExecApp
312
+ def initialize(app_id, res, cmd_line, err_out_map)
313
+ xml_file = cmd_line.split('env -i my_cmd --oml-config ')[1]
314
+ File.open(xml_file, 'r').read.must_equal fixture('oml.xml')
315
+ File.delete(xml_file)
316
+ end
317
+ end
318
+ @app_test.property.state = :stop
319
+ @app_test.property.binary_path = "my_cmd"
320
+ @app_test.property.use_oml = true
321
+ @app_test.property.oml = eval(fixture('oml.hash'))
322
+ @app_test.method(:configure_state).call(:run)
323
+ @app_test.property.state.must_equal :run
324
+ end
325
+
326
+ it "must not use any oml options if use_oml is set but both oml or oml_config are not set" do
327
+ class ExecApp
328
+ def initialize(app_id, res, cmd_line, err_out_map)
329
+ cmd_line.must_equal "env -i my_cmd "
330
+ end
331
+ end
332
+ @app_test.property.state = :stop
333
+ @app_test.property.binary_path = "my_cmd"
334
+ @app_test.property.use_oml = true
335
+ @app_test.method(:configure_state).call(:run)
336
+ @app_test.property.state.must_equal :run
337
+ end
338
+
300
339
  end
301
340
 
302
341
  describe "when configuring its state property to :pause" do
@@ -17,25 +17,41 @@ describe OmfRc::ResourceProxy::Node do
17
17
  { name: 'phy0', driver: 'iwlwifi', category: 'net', subcategory: 'wlan', proxy: 'wlan' }
18
18
  ]
19
19
 
20
- Dir.stub :chdir, proc { |*args, &block| block.call } do
21
- glob_proc = proc do |pattern|
22
- sys_dir = "#{File.dirname(__FILE__)}/../../fixture/sys/class"
23
- case pattern
24
- when "net"
25
- ["#{sys_dir}/net"]
26
- when "ieee80211"
27
- ["#{sys_dir}/ieee80211"]
28
- when "ieee80211/*"
29
- ["#{sys_dir}/ieee80211/phy0"]
30
- when "net/eth*"
31
- ["#{sys_dir}/net/eth0"]
32
- end
33
- end
34
- Dir.stub :glob, glob_proc do
35
- @node.request_devices.must_be_kind_of Array
36
- @node.request_devices.must_equal devices
20
+ glob_proc = proc do |pattern|
21
+ sys_dir = "#{File.dirname(__FILE__)}/../../fixture/sys/class"
22
+ case pattern
23
+ when "/sys/class/net"
24
+ ["#{sys_dir}/net"]
25
+ when "/sys/class/ieee80211"
26
+ ["#{sys_dir}/ieee80211"]
27
+ when "/sys/class/ieee80211/*"
28
+ ["#{sys_dir}/ieee80211/phy0"]
29
+ when "/sys/class/net/eth*"
30
+ ["#{sys_dir}/net/eth0"]
37
31
  end
38
32
  end
33
+ Dir.stub :glob, glob_proc do
34
+ @node.request_devices.must_be_kind_of Array
35
+ @node.request_devices.must_equal devices
36
+ end
37
+ end
38
+
39
+ it "must provide a list of created applications" do
40
+ @node.create(:application, { :uid => 'app_test', :hrn => 'app_test' })
41
+
42
+ @node.request_applications.must_equal [
43
+ { name: 'app_test', type: 'application', uid: 'app_test' }
44
+ ]
45
+ end
46
+
47
+ it "must provide a list of created interfaces" do
48
+ @node.create(:wlan, { :uid => 'wlan0', :hrn => 'wlan0' })
49
+ @node.create(:net, { :uid => 'eth0', :hrn => 'eth0' })
50
+
51
+ @node.request_interfaces.must_equal [
52
+ { name: 'eth0', type: 'net', uid: 'eth0' },
53
+ { name: 'wlan0', type: 'wlan', uid: 'wlan0' }
54
+ ]
39
55
  end
40
56
  end
41
57
  end
@@ -6,6 +6,8 @@ describe OmfRc::ResourceProxyDSL do
6
6
  module OmfRc::Util::MockUtility
7
7
  include OmfRc::ResourceProxyDSL
8
8
 
9
+ property :mock_prop, :default => 1
10
+
9
11
  configure :alpha
10
12
 
11
13
  request :alpha do |resource|
@@ -106,5 +108,10 @@ describe OmfRc::ResourceProxyDSL do
106
108
  OmfRc::ResourceFactory.new(:mock_root_proxy).create(:useless_proxy)
107
109
  lambda { OmfRc::ResourceFactory.new(:useless_proxy).create(:mock_proxy) }.must_raise StandardError
108
110
  end
111
+
112
+ it "must be able to define property with default vlaue" do
113
+ mock_proxy = OmfRc::ResourceFactory.new(:mock_proxy)
114
+ mock_proxy.property.mock_prop.must_equal 1
115
+ end
109
116
  end
110
117
  end
@@ -2,7 +2,7 @@ require 'test_helper'
2
2
  require 'omf_rc/util/common_tools'
3
3
 
4
4
  describe OmfRc::Util::CommonTools do
5
-
5
+
6
6
  describe "when included in the resource proxy" do
7
7
  before do
8
8
  module OmfRc::ResourceProxy::Test
@@ -9,18 +9,24 @@ describe OmfRc::Util::Mod do
9
9
  register_proxy :mod_test
10
10
  utility :mod
11
11
  end
12
+ @command = MiniTest::Mock.new
12
13
  end
13
14
 
14
15
  it "will find out a list of modules" do
15
- OmfCommon::Command.stub :execute, fixture("lsmod") do
16
+ Cocaine::CommandLine.stub(:new, @command) do
17
+ @command.expect(:run, fixture("lsmod"))
16
18
  OmfRc::ResourceFactory.new(:mod_test).request_modules.must_include "kvm"
19
+ @command.expect(:run, fixture("lsmod"))
17
20
  OmfRc::ResourceFactory.new(:mod_test).request_modules.wont_include "Module"
21
+ @command.verify
18
22
  end
19
23
  end
20
24
 
21
25
  it "could load a module" do
22
- OmfCommon::Command.stub :execute, true do
23
- OmfRc::ResourceFactory.new(:mod_test).configure_load_module('magic_module').must_equal true
26
+ Cocaine::CommandLine.stub(:new, @command) do
27
+ @command.expect(:run, true)
28
+ OmfRc::ResourceFactory.new(:mod_test).configure_load_module(name: 'magic_module').must_equal "magic_module loaded"
29
+ @command.verify
24
30
  end
25
31
  end
26
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omf_rc
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.pre.6
4
+ version: 6.0.0.pre.7
5
5
  prerelease: 6
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: 2012-10-02 00:00:00.000000000 Z
12
+ date: 2012-10-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -107,10 +107,10 @@ files:
107
107
  - config/omf_rc.yml
108
108
  - lib/omf_rc.rb
109
109
  - lib/omf_rc/deferred_process.rb
110
- - lib/omf_rc/message_process_error.rb
110
+ - lib/omf_rc/omf_error.rb
111
111
  - lib/omf_rc/resource_factory.rb
112
112
  - lib/omf_rc/resource_proxy/abstract_resource.rb
113
- - lib/omf_rc/resource_proxy/generic_application.rb
113
+ - lib/omf_rc/resource_proxy/application.rb
114
114
  - lib/omf_rc/resource_proxy/mock.rb
115
115
  - lib/omf_rc/resource_proxy/net.rb
116
116
  - lib/omf_rc/resource_proxy/node.rb
@@ -135,6 +135,9 @@ files:
135
135
  - test/fixture/iw/info
136
136
  - test/fixture/iw/link
137
137
  - test/fixture/lsmod
138
+ - test/fixture/oml.hash
139
+ - test/fixture/oml.spec
140
+ - test/fixture/oml.xml
138
141
  - test/fixture/sys/class/ieee80211/phy0/device/uevent
139
142
  - test/fixture/sys/class/ieee80211/phy0/uevent
140
143
  - test/fixture/sys/class/net/eth0/device/uevent
@@ -145,7 +148,7 @@ files:
145
148
  - test/omf_rc/message_process_error_spec.rb
146
149
  - test/omf_rc/resource_factory_spec.rb
147
150
  - test/omf_rc/resource_proxy/abstract_resource_spec.rb
148
- - test/omf_rc/resource_proxy/generic_application_spec.rb
151
+ - test/omf_rc/resource_proxy/application_spec.rb
149
152
  - test/omf_rc/resource_proxy/mock_spec.rb
150
153
  - test/omf_rc/resource_proxy/node_spec.rb
151
154
  - test/omf_rc/resource_proxy_dsl_spec.rb
@@ -180,4 +183,3 @@ signing_key:
180
183
  specification_version: 3
181
184
  summary: OMF resource controller
182
185
  test_files: []
183
- has_rdoc: