omf_rc 6.0.0.pre.8 → 6.0.0.pre.9
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/install_omf_rc +79 -0
- data/bin/omf_rc +52 -36
- data/config/config.yml +8 -0
- data/init/debian +51 -0
- data/init/fedora +54 -0
- data/init/run_omf_rc.sh +62 -0
- data/init/ubuntu +12 -0
- data/lib/omf_rc/omf_error.rb +5 -5
- data/lib/omf_rc/resource_factory.rb +7 -11
- data/lib/omf_rc/resource_proxy/abstract_resource.rb +327 -228
- data/lib/omf_rc/resource_proxy/application.rb +61 -56
- data/lib/omf_rc/resource_proxy/net.rb +2 -2
- data/lib/omf_rc/resource_proxy/node.rb +11 -2
- data/lib/omf_rc/resource_proxy/virtual_machine.rb +1 -1
- data/lib/omf_rc/resource_proxy/wlan.rb +2 -0
- data/lib/omf_rc/resource_proxy_dsl.rb +22 -1
- data/lib/omf_rc/util/common_tools.rb +2 -4
- data/lib/omf_rc/util/hostapd.rb +4 -3
- data/lib/omf_rc/util/ip.rb +8 -5
- data/lib/omf_rc/util/iw.rb +18 -8
- data/lib/omf_rc/util/sysfs.rb +14 -0
- data/lib/omf_rc/util/vmbuilder.rb +1 -1
- data/lib/omf_rc/util/wpa.rb +4 -3
- data/lib/omf_rc/version.rb +1 -1
- data/lib/omf_rc.rb +3 -1
- data/omf_rc.gemspec +4 -2
- data/test/omf_rc/message_process_error_spec.rb +3 -3
- data/test/omf_rc/resource_factory_spec.rb +14 -7
- data/test/omf_rc/resource_proxy/abstract_resource_spec.rb +47 -21
- data/test/omf_rc/resource_proxy/application_spec.rb +156 -119
- data/test/omf_rc/resource_proxy/mock_spec.rb +6 -1
- data/test/omf_rc/resource_proxy/node_spec.rb +32 -12
- data/test/omf_rc/resource_proxy_dsl_spec.rb +31 -19
- data/test/omf_rc/util/common_tools_spec.rb +8 -11
- data/test/omf_rc/util/ip_spec.rb +7 -1
- data/test/omf_rc/util/iw_spec.rb +18 -13
- data/test/omf_rc/util/mock_spec.rb +6 -1
- data/test/omf_rc/util/mod_spec.rb +17 -10
- data/test/test_helper.rb +3 -0
- metadata +51 -48
- data/config/omf_rc.yml +0 -70
- data/lib/omf_rc/resource_proxy/openflow_slice.rb +0 -79
- data/lib/omf_rc/resource_proxy/openflow_slice_factory.rb +0 -71
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
require 'em/minitest/spec'
|
3
3
|
require 'omf_rc/resource_factory'
|
4
|
+
require 'blather'
|
4
5
|
|
5
6
|
include OmfRc::ResourceProxy
|
6
7
|
|
@@ -31,12 +32,16 @@ end
|
|
31
32
|
|
32
33
|
describe AbstractResource do
|
33
34
|
before do
|
34
|
-
@
|
35
|
+
@xmpp = MiniTest::Mock.new
|
36
|
+
@xmpp.expect(:subscribe, true, [Array])
|
37
|
+
OmfCommon.stub :comm, @xmpp do
|
38
|
+
@node = OmfRc::ResourceFactory.new(:node, { hrn: 'default_node' }, { create_children_resources: true })
|
39
|
+
end
|
35
40
|
end
|
36
41
|
|
37
42
|
describe "when intialised" do
|
38
43
|
it "must convert configuration hash into instance methods, and assign the values" do
|
39
|
-
@node.type.must_equal
|
44
|
+
@node.type.must_equal :node
|
40
45
|
end
|
41
46
|
|
42
47
|
it "must have an unique id generated" do
|
@@ -48,23 +53,36 @@ describe AbstractResource do
|
|
48
53
|
@node.property.bob = "test"
|
49
54
|
@node.property.bob.must_equal "test"
|
50
55
|
end
|
56
|
+
|
57
|
+
it "must be able to access creation options" do
|
58
|
+
@node.creation_opts[:create_children_resources].must_equal true
|
59
|
+
end
|
51
60
|
end
|
52
61
|
|
53
62
|
describe "when asked to create another resource" do
|
54
63
|
it "must return the newly created resource" do
|
55
|
-
|
64
|
+
OmfCommon.stub :comm, @xmpp do
|
65
|
+
@xmpp.expect(:subscribe, true, [String])
|
66
|
+
@node.create(:interface).must_be_kind_of AbstractResource
|
67
|
+
end
|
56
68
|
end
|
57
69
|
|
58
70
|
it "must add the resource to its created resource list" do
|
59
|
-
|
60
|
-
|
61
|
-
|
71
|
+
OmfCommon.stub :comm, @xmpp do
|
72
|
+
@xmpp.expect(:subscribe, true, [Array])
|
73
|
+
child = @node.create(:wifi, { hrn: 'default_wifi' })
|
74
|
+
@node.children.must_include child
|
75
|
+
@node.request_child_resources.find { |v| v.uid == child.uid }.name.must_equal 'default_wifi'
|
76
|
+
end
|
62
77
|
end
|
63
78
|
end
|
64
79
|
|
65
80
|
describe "when destroyed" do
|
66
81
|
it "must destroy itself together with any resources created by it" do
|
67
|
-
|
82
|
+
skip
|
83
|
+
OmfCommon.stub :comm, @xmpp do
|
84
|
+
@xmpp.expect(:delete_topic, nil)
|
85
|
+
@xmpp.expect(:subscribe, true, [Array])
|
68
86
|
child = @node.create(:wifi, { hrn: 'default_wifi' })
|
69
87
|
@node.children.wont_be_empty
|
70
88
|
@node.release(child.uid)
|
@@ -88,35 +106,38 @@ describe AbstractResource do
|
|
88
106
|
end
|
89
107
|
|
90
108
|
describe "when interacted with communication layer" do
|
91
|
-
include EM::MiniTest::Spec
|
109
|
+
#include EM::MiniTest::Spec
|
92
110
|
|
93
111
|
before do
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
112
|
+
#@client = Blather::Client.new
|
113
|
+
#@stream = MiniTest::Mock.new
|
114
|
+
#@stream.expect(:send, true, [Blather::Stanza])
|
115
|
+
#@client.post_init @stream, Blather::JID.new('n@d/r')
|
116
|
+
#@xmpp = OmfCommon::Comm::XMPP::Communicator.new
|
99
117
|
end
|
100
118
|
|
101
119
|
it "must be able to send inform message" do
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
@node.inform(:
|
106
|
-
@node.inform(:
|
120
|
+
skip
|
121
|
+
# FIXME
|
122
|
+
@xmpp.stub :publish, proc { |replyto, message| message.valid?.must_equal true} do
|
123
|
+
@node.inform(:creation_ok, res_id: 'bob', cid: 'id', replyto: 'topic')
|
124
|
+
@node.inform(:released, res_id: 'bob', cid: 'id', replyto: 'topic')
|
125
|
+
@node.inform(:status, status: { key: 'value' }, cid: 'id', replyto: 'topic')
|
126
|
+
@node.inform(:creation_ok, res_id: 'bob', cid: 'id', replyto: 'topic')
|
107
127
|
@node.inform(:warn, 'going to fail')
|
108
128
|
@node.inform(:error, 'failed')
|
109
129
|
@node.inform(:warn, Exception.new('going to fail'))
|
110
130
|
@node.inform(:error, Exception.new('failed'))
|
111
|
-
@node.inform(:
|
131
|
+
@node.inform(:creation_failed, Exception.new('failed'))
|
112
132
|
end
|
113
133
|
|
114
|
-
lambda { @node.inform(:
|
115
|
-
lambda { @node.inform(:
|
134
|
+
lambda { @node.inform(:creation_failed, 'bob') }.must_raise ArgumentError
|
135
|
+
lambda { @node.inform(:creation_ok, 'topic') }.must_raise ArgumentError
|
116
136
|
lambda { @node.inform(:status, 'topic') }.must_raise ArgumentError
|
117
137
|
end
|
118
138
|
|
119
139
|
it "must be able to connect & disconnect" do
|
140
|
+
skip
|
120
141
|
Blather::Client.stub :new, @client do
|
121
142
|
Blather::Stream::Client.stub(:start, @client) do
|
122
143
|
@node = OmfRc::ResourceFactory.new(:node, { hrn: 'default_node', user: 'bob', password: 'pw', server: 'example.com'}, @xmpp)
|
@@ -133,8 +154,13 @@ describe AbstractResource do
|
|
133
154
|
it "must try property hash" do
|
134
155
|
@node.property[:bob] = "bob"
|
135
156
|
@node.property[:false] = false
|
157
|
+
|
158
|
+
@node.methods.must_include :request_bob
|
159
|
+
@node.methods.must_include :configure_bob
|
160
|
+
|
136
161
|
@node.request_bob.must_equal "bob"
|
137
162
|
@node.request_false.must_equal false
|
163
|
+
|
138
164
|
@node.configure_bob("not_bob")
|
139
165
|
@node.request_bob.must_equal "not_bob"
|
140
166
|
proc { @node.request_bobs_cousin }.must_raise OmfRc::UnknownPropertyError
|
@@ -4,9 +4,13 @@ require 'omf_rc/resource_proxy/application'
|
|
4
4
|
describe OmfRc::ResourceProxy::Application do
|
5
5
|
|
6
6
|
before do
|
7
|
-
@
|
8
|
-
@
|
9
|
-
@
|
7
|
+
@xmpp = MiniTest::Mock.new
|
8
|
+
@xmpp.expect(:subscribe, true, [Array])
|
9
|
+
@xmpp.expect(:publish, true, [String, OmfCommon::Message])
|
10
|
+
|
11
|
+
OmfCommon.stub :comm, @xmpp do
|
12
|
+
@app_test = OmfRc::ResourceFactory.new(:application, { hrn: 'an_application' })
|
13
|
+
end
|
10
14
|
end
|
11
15
|
|
12
16
|
describe "when initialised" do
|
@@ -16,7 +20,7 @@ describe OmfRc::ResourceProxy::Application do
|
|
16
20
|
end
|
17
21
|
|
18
22
|
it "must have its properties set to sensible initial values" do
|
19
|
-
@app_test.request_state.to_sym.must_equal :
|
23
|
+
@app_test.request_state.to_sym.must_equal :stopped
|
20
24
|
@app_test.request_tarball_install_path.must_equal '/'
|
21
25
|
@app_test.request_force_tarball_install.must_equal false
|
22
26
|
@app_test.request_installed.must_equal false
|
@@ -36,14 +40,16 @@ describe OmfRc::ResourceProxy::Application do
|
|
36
40
|
end
|
37
41
|
|
38
42
|
it "must be able to configure its environments property" do
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
43
|
+
OmfCommon.stub :comm, @xmpp do
|
44
|
+
# First give it a valid environment property
|
45
|
+
test_environments = { 'foo' => 123, 'bar_bar' => 'bar_123' }
|
46
|
+
@app_test.method(:configure_environments).call(test_environments)
|
47
|
+
# Then give it an invalid one, which it should ignore
|
48
|
+
@app_test.method(:configure_environments).call(nil)
|
49
|
+
@app_test.property.environments.must_be_kind_of Hash
|
50
|
+
@app_test.property.environments['foo'].must_equal 123
|
51
|
+
@app_test.property.environments['bar_bar'].must_equal 'bar_123'
|
52
|
+
end
|
47
53
|
end
|
48
54
|
|
49
55
|
it "must be able to configure its available OML measurement points" do
|
@@ -65,8 +71,8 @@ describe OmfRc::ResourceProxy::Application do
|
|
65
71
|
# Then give it a couple of invalid ones, which it should ignore
|
66
72
|
@app_test.stub :log_inform_error, nil do
|
67
73
|
@app_test.method(:configure_parameters).call(nil)
|
68
|
-
|
69
|
-
|
74
|
+
@app_test.method(:configure_parameters).call( { :p1 => nil } )
|
75
|
+
end
|
70
76
|
@app_test.property.parameters.must_be_kind_of Hash
|
71
77
|
@app_test.property.parameters[:p1].must_be_kind_of Hash
|
72
78
|
@app_test.property.parameters[:p1][:cmd].must_equal '--foo'
|
@@ -77,7 +83,7 @@ describe OmfRc::ResourceProxy::Application do
|
|
77
83
|
old_params = { :p1 => { :cmd => '--foo', :default => 'old_foo'} }
|
78
84
|
@app_test.property.parameters = old_params
|
79
85
|
new_params = { :p1 => { :default => 'new_foo', :value => 'val_foo'},
|
80
|
-
|
86
|
+
:p2 => { :cmd => 'bar', :default => 'bar_bar'} }
|
81
87
|
@app_test.method(:configure_parameters).call(new_params)
|
82
88
|
@app_test.property.parameters[:p1][:cmd].must_equal '--foo'
|
83
89
|
@app_test.property.parameters[:p1][:default].must_equal 'new_foo'
|
@@ -88,14 +94,14 @@ describe OmfRc::ResourceProxy::Application do
|
|
88
94
|
|
89
95
|
it "must be able to validate the correct type of a defined parameter" do
|
90
96
|
test_params = { :p1 => { :type => 'String', :default => 'foo', :value => 'bar'},
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
97
|
+
:p2 => { :type => 'Numeric', :default => 123, :value => 456},
|
98
|
+
:p3 => { :type => 'Boolean', :default => true, :value => false},
|
99
|
+
:p4 => { :type => 'Boolean'},
|
100
|
+
:p5 => { :type => 'Boolean', :default => false},
|
101
|
+
:p6 => { :type => 'Boolean', :value => true},
|
102
|
+
:p7 => { :type => 'Numeric'},
|
103
|
+
:p8 => { :type => 'Numeric', :default => 123},
|
104
|
+
:p9 => { :type => 'Numeric', :value => 123} }
|
99
105
|
@app_test.method(:configure_parameters).call(test_params)
|
100
106
|
@app_test.property.parameters[:p1][:default].must_be_kind_of String
|
101
107
|
@app_test.property.parameters[:p1][:value].must_be_kind_of String
|
@@ -115,12 +121,12 @@ describe OmfRc::ResourceProxy::Application do
|
|
115
121
|
|
116
122
|
it "must be able to detect incorrect type setting for a defined parameter, and DO NOT update the parameter in that case" do
|
117
123
|
old_params = { :p1 => { :type => 'String', :value => 'foo'},
|
118
|
-
|
119
|
-
|
124
|
+
:p2 => { :type => 'Numeric', :default => 123, :value => 456 },
|
125
|
+
:p3 => { :type => 'Boolean', :default => true, :value => true} }
|
120
126
|
@app_test.property.parameters = old_params
|
121
127
|
new_params = { :p1 => { :type => 'String', :value => true},
|
122
|
-
|
123
|
-
|
128
|
+
:p2 => { :type => 'Numeric', :default => 456, :value => '456' },
|
129
|
+
:p3 => { :type => 'Boolean', :default => 123, :value => false} }
|
124
130
|
@app_test.stub :log_inform_error, nil do
|
125
131
|
@app_test.method(:configure_parameters).call(new_params)
|
126
132
|
end
|
@@ -134,11 +140,11 @@ describe OmfRc::ResourceProxy::Application do
|
|
134
140
|
it "must update any valid dynamic parameter with the given value" do
|
135
141
|
# set the parameter as dynamic
|
136
142
|
params1 = { :p1 => { :cmd => '--foo', :default => 'old_foo', :dynamic => true},
|
137
|
-
|
143
|
+
:p2 => { :cmd => '--notcalled', :dynamic => false} }
|
138
144
|
@app_test.method(:configure_parameters).call(params1)
|
139
145
|
# then update it
|
140
146
|
params2 = { :p1 => { :value => 'bar'} , :p2 => { :value => 'abc'} }
|
141
|
-
@app_test.property.state = :
|
147
|
+
@app_test.property.state = :running
|
142
148
|
class ExecApp
|
143
149
|
def initialize(app_id, res, cmd_line, err_out_map); end
|
144
150
|
def ExecApp.[](id); return ExecApp.new(nil,nil,nil,nil) end
|
@@ -151,40 +157,63 @@ describe OmfRc::ResourceProxy::Application do
|
|
151
157
|
|
152
158
|
describe "when receiving an event from a running application instance" do
|
153
159
|
it "must publish an INFORM message to relay that event" do
|
154
|
-
@app_test.
|
155
|
-
|
160
|
+
@app_test.stub :inform, true do
|
161
|
+
@app_test.on_app_event('STDOUT', 'app_instance_id', 'Some text here').must_be_nil
|
162
|
+
end
|
156
163
|
end
|
157
164
|
|
158
165
|
it "must increments its event_sequence after publishig that INFORM message" do
|
159
|
-
|
160
|
-
|
161
|
-
|
166
|
+
OmfCommon.stub :comm, @xmpp do
|
167
|
+
@app_test.stub :inform, true do
|
168
|
+
i = @app_test.property.event_sequence
|
169
|
+
@app_test.on_app_event('STDOUT', 'app_instance_id', 'Some text here')
|
170
|
+
@app_test.property.event_sequence.must_equal i+1
|
171
|
+
end
|
172
|
+
end
|
162
173
|
end
|
163
174
|
|
164
|
-
it "must switch its state to
|
165
|
-
|
166
|
-
|
175
|
+
it "must switch its state to :completed if the event is of a type 'DONE' and the application is not installing itself" do
|
176
|
+
OmfCommon.stub :comm, @xmpp do
|
177
|
+
@app_test.stub :inform, true do
|
178
|
+
@app_test.on_app_event('DONE.OK', 'app_instance_id', 'Some text here')
|
179
|
+
@app_test.request_state.to_sym.must_equal :completed
|
180
|
+
end
|
181
|
+
end
|
182
|
+
OmfCommon.stub :comm, @xmpp do
|
183
|
+
@app_test.stub :inform, true do
|
184
|
+
@app_test.on_app_event('DONE.ERROR', 'app_instance_id', 'Some text here')
|
185
|
+
@app_test.request_state.to_sym.must_equal :completed
|
186
|
+
end
|
187
|
+
end
|
167
188
|
end
|
168
189
|
|
169
|
-
it "must set installed property to true if the event is 'DONE.OK' and the
|
170
|
-
|
171
|
-
|
172
|
-
|
190
|
+
it "must set installed property to true if the event is 'DONE.OK' and the application was installing itself" do
|
191
|
+
OmfCommon.stub :comm, @xmpp do
|
192
|
+
@app_test.stub :inform, true do
|
193
|
+
@app_test.on_app_event('DONE.OK', 'app_instance_id_INSTALL', 'Some text here')
|
194
|
+
@app_test.request_state.to_sym.must_equal :stopped
|
195
|
+
@app_test.request_installed.must_equal true
|
196
|
+
end
|
197
|
+
end
|
173
198
|
end
|
174
199
|
end
|
175
200
|
|
176
|
-
describe "when configuring its state property to :
|
177
|
-
it "must do nothing if its original state is not :
|
178
|
-
|
179
|
-
|
180
|
-
|
201
|
+
describe "when configuring its state property to :installing" do
|
202
|
+
it "must do nothing if its original state is not :stopped" do
|
203
|
+
OmfCommon.stub :comm, @xmpp do
|
204
|
+
@app_test.property.state = :running
|
205
|
+
@app_test.method(:configure_state).call(:installing)
|
206
|
+
@app_test.property.state.must_equal :running
|
207
|
+
end
|
181
208
|
end
|
182
209
|
|
183
|
-
it "must do nothing if its original state is :
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
210
|
+
it "must do nothing if its original state is :stopped and it is already installed" do
|
211
|
+
OmfCommon.stub :comm, @xmpp do
|
212
|
+
@app_test.property.state = :stopped
|
213
|
+
@app_test.property.installed = true
|
214
|
+
@app_test.method(:configure_state).call(:installing)
|
215
|
+
@app_test.property.state.must_equal :stopped
|
216
|
+
end
|
188
217
|
end
|
189
218
|
|
190
219
|
it "must use the tarball install method if it does not know its OS platform or if force_tarball_install is set" do
|
@@ -197,19 +226,19 @@ describe OmfRc::ResourceProxy::Application do
|
|
197
226
|
end
|
198
227
|
def call_configure
|
199
228
|
@app_test.stub :install_tarball, @stub_tarball_tasks do
|
200
|
-
@app_test.method(:configure_state).call(:
|
229
|
+
@app_test.method(:configure_state).call(:installing).must_equal :installing
|
201
230
|
@did_call_install_tarball.must_equal true
|
202
231
|
end
|
203
232
|
end
|
204
233
|
# Unknown Platform...
|
205
234
|
@did_call_install_tarball = false
|
206
|
-
@app_test.property.state = :
|
235
|
+
@app_test.property.state = :stopped
|
207
236
|
@app_test.property.installed = false
|
208
237
|
@app_test.property.platform = :unknown
|
209
238
|
call_configure
|
210
239
|
# Force Install Tarball...
|
211
240
|
@did_call_install_tarball = false
|
212
|
-
@app_test.property.state = :
|
241
|
+
@app_test.property.state = :stopped
|
213
242
|
@app_test.property.installed = false
|
214
243
|
@app_test.property.platform = :ubuntu
|
215
244
|
@app_test.property.force_tarball_install = true
|
@@ -218,7 +247,7 @@ describe OmfRc::ResourceProxy::Application do
|
|
218
247
|
|
219
248
|
it "must use the ubuntu install method if its OS platform is ubuntu" do
|
220
249
|
@did_call_install_ubuntu = false
|
221
|
-
@app_test.property.state = :
|
250
|
+
@app_test.property.state = :stopped
|
222
251
|
@app_test.property.installed = false
|
223
252
|
@app_test.property.platform = :ubuntu
|
224
253
|
@app_test.property.pkg_ubuntu = 'foo'
|
@@ -227,14 +256,14 @@ describe OmfRc::ResourceProxy::Application do
|
|
227
256
|
@did_call_install_ubuntu = true
|
228
257
|
end
|
229
258
|
@app_test.stub :install_ubuntu, @stub_ubuntu_tasks do
|
230
|
-
@app_test.method(:configure_state).call(:
|
259
|
+
@app_test.method(:configure_state).call(:installing).must_equal :installing
|
231
260
|
@did_call_install_ubuntu.must_equal true
|
232
261
|
end
|
233
262
|
end
|
234
263
|
|
235
264
|
it "must use the fedora install method if its OS platform is fedora" do
|
236
265
|
@did_call_install_fedora = false
|
237
|
-
@app_test.property.state = :
|
266
|
+
@app_test.property.state = :stopped
|
238
267
|
@app_test.property.installed = false
|
239
268
|
@app_test.property.platform = :fedora
|
240
269
|
@app_test.property.pkg_fedora = 'foo'
|
@@ -243,32 +272,38 @@ describe OmfRc::ResourceProxy::Application do
|
|
243
272
|
@did_call_install_fedora = true
|
244
273
|
end
|
245
274
|
@app_test.stub :install_fedora, @stub_fedora_tasks do
|
246
|
-
@app_test.method(:configure_state).call(:
|
275
|
+
@app_test.method(:configure_state).call(:installing).must_equal :installing
|
247
276
|
@did_call_install_fedora.must_equal true
|
248
277
|
end
|
249
278
|
end
|
250
279
|
end
|
251
280
|
|
252
|
-
describe "when configuring its state property to :
|
253
|
-
it "must do nothing if its original state is :
|
254
|
-
|
255
|
-
|
256
|
-
|
281
|
+
describe "when configuring its state property to :running" do
|
282
|
+
it "must do nothing if its original state is :installing" do
|
283
|
+
OmfCommon.stub :comm, @xmpp do
|
284
|
+
@app_test.property.state = :installing
|
285
|
+
@app_test.method(:configure_state).call(:running)
|
286
|
+
@app_test.property.state.must_equal :installing
|
287
|
+
end
|
257
288
|
end
|
258
289
|
|
259
|
-
it "must get back to the :
|
260
|
-
|
261
|
-
|
262
|
-
|
290
|
+
it "must get back to the :running state if its original state is :paused" do
|
291
|
+
OmfCommon.stub :comm, @xmpp do
|
292
|
+
@app_test.property.state = :paused
|
293
|
+
@app_test.method(:configure_state).call(:running)
|
294
|
+
@app_test.property.state.must_equal :running
|
295
|
+
end
|
263
296
|
end
|
264
297
|
|
265
298
|
it "must do nothing if its binary path is not set" do
|
266
|
-
|
267
|
-
|
268
|
-
|
299
|
+
OmfCommon.stub :comm, @xmpp do
|
300
|
+
@app_test.property.state = :stopped
|
301
|
+
@app_test.method(:configure_state).call(:running)
|
302
|
+
@app_test.property.state.must_equal :stopped
|
303
|
+
end
|
269
304
|
end
|
270
305
|
|
271
|
-
it "must start an app using ExecApp and a correct command line if its original state is :
|
306
|
+
it "must start an app using ExecApp and a correct command line if its original state is :stopped" do
|
272
307
|
class ExecApp
|
273
308
|
def initialize(app_id, res, cmd_line, err_out_map)
|
274
309
|
app_id.must_equal "an_application"
|
@@ -277,18 +312,18 @@ describe OmfRc::ResourceProxy::Application do
|
|
277
312
|
err_out_map.must_equal false
|
278
313
|
end
|
279
314
|
end
|
280
|
-
@app_test.property.state = :
|
315
|
+
@app_test.property.state = :stopped
|
281
316
|
@app_test.property.binary_path = "my_cmd"
|
282
317
|
test_env = { 'foo' => 123, 'bar_bar' => 'bar_123' }
|
283
318
|
test_params = { :p1 => { :type => 'String', :mandatory => true, :cmd => '-param1', :default => 'foo', :value => 'bar', :order => 2},
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
319
|
+
:p2 => { :type => 'Numeric', :mandatory => true, :default => 123, :order => 1 },
|
320
|
+
:p3 => { :type => 'Boolean', :cmd => 'p3', :default => false, :value => true},
|
321
|
+
:p4 => { :type => 'String', :default => 'hi', :value => 'hello'},
|
322
|
+
:p5 => { :type => 'Numeric', :default => 456}, }
|
288
323
|
@app_test.method(:configure_environments).call(test_env)
|
289
324
|
@app_test.method(:configure_parameters).call(test_params)
|
290
|
-
@app_test.method(:configure_state).call(:
|
291
|
-
@app_test.property.state.must_equal :
|
325
|
+
@app_test.method(:configure_state).call(:running)
|
326
|
+
@app_test.property.state.must_equal :running
|
292
327
|
end
|
293
328
|
|
294
329
|
it "must start an app with OML command line options when use_oml parameter is set" do
|
@@ -297,14 +332,14 @@ describe OmfRc::ResourceProxy::Application do
|
|
297
332
|
cmd_line.must_equal "env -i my_cmd --oml-config /tmp/bar.xml --oml-log-level 1 --oml-log-file foo "
|
298
333
|
end
|
299
334
|
end
|
300
|
-
@app_test.property.state = :
|
335
|
+
@app_test.property.state = :stopped
|
301
336
|
@app_test.property.binary_path = "my_cmd"
|
302
337
|
@app_test.property.use_oml = true
|
303
338
|
@app_test.property.oml_loglevel = 1
|
304
339
|
@app_test.property.oml_logfile = "foo"
|
305
340
|
@app_test.property.oml_configfile = "/tmp/bar.xml"
|
306
|
-
File.stub(:exist?, true) { @app_test.method(:configure_state).call(:
|
307
|
-
@app_test.property.state.must_equal :
|
341
|
+
File.stub(:exist?, true) { @app_test.method(:configure_state).call(:running) }
|
342
|
+
@app_test.property.state.must_equal :running
|
308
343
|
end
|
309
344
|
|
310
345
|
it "must start an app using its own built OML config when use_oml and oml parameters are set" do
|
@@ -315,61 +350,63 @@ describe OmfRc::ResourceProxy::Application do
|
|
315
350
|
File.delete(xml_file)
|
316
351
|
end
|
317
352
|
end
|
318
|
-
@app_test.property.state = :
|
353
|
+
@app_test.property.state = :stopped
|
319
354
|
@app_test.property.binary_path = "my_cmd"
|
320
355
|
@app_test.property.use_oml = true
|
321
356
|
@app_test.property.oml = eval(fixture('oml.hash'))
|
322
|
-
@app_test.method(:configure_state).call(:
|
323
|
-
@app_test.property.state.must_equal :
|
357
|
+
@app_test.method(:configure_state).call(:running)
|
358
|
+
@app_test.property.state.must_equal :running
|
324
359
|
end
|
325
360
|
|
326
361
|
it "must not use any oml options if use_oml is set but both oml or oml_config are not set" do
|
327
|
-
|
328
|
-
|
329
|
-
|
362
|
+
OmfCommon.stub :comm, @xmpp do
|
363
|
+
class ExecApp
|
364
|
+
def initialize(app_id, res, cmd_line, err_out_map)
|
365
|
+
cmd_line.must_equal "env -i my_cmd "
|
366
|
+
end
|
330
367
|
end
|
368
|
+
@app_test.property.state = :stopped
|
369
|
+
@app_test.property.binary_path = "my_cmd"
|
370
|
+
@app_test.property.use_oml = true
|
371
|
+
@app_test.method(:configure_state).call(:running)
|
372
|
+
@app_test.property.state.must_equal :running
|
331
373
|
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
374
|
end
|
338
375
|
|
339
376
|
end
|
340
377
|
|
341
|
-
describe "when configuring its state property to :
|
342
|
-
it "must do nothing if its original state is :
|
343
|
-
@app_test.property.state = :
|
344
|
-
@app_test.method(:configure_state).call(:
|
345
|
-
@app_test.property.state.must_equal :
|
346
|
-
@app_test.property.state = :
|
347
|
-
@app_test.method(:configure_state).call(:
|
348
|
-
@app_test.property.state.must_equal :
|
378
|
+
describe "when configuring its state property to :paused" do
|
379
|
+
it "must do nothing if its original state is :stopped or :installing" do
|
380
|
+
@app_test.property.state = :stopped
|
381
|
+
@app_test.method(:configure_state).call(:paused)
|
382
|
+
@app_test.property.state.must_equal :stopped
|
383
|
+
@app_test.property.state = :installing
|
384
|
+
@app_test.method(:configure_state).call(:paused)
|
385
|
+
@app_test.property.state.must_equal :installing
|
349
386
|
end
|
350
387
|
|
351
|
-
it "must do switch its state to :
|
352
|
-
@app_test.property.state = :
|
353
|
-
@app_test.method(:configure_state).call(:
|
354
|
-
@app_test.property.state.must_equal :
|
355
|
-
@app_test.property.state = :
|
356
|
-
@app_test.method(:configure_state).call(:
|
357
|
-
@app_test.property.state.must_equal :
|
388
|
+
it "must do switch its state to :paused if its original state is :running or :paused" do
|
389
|
+
@app_test.property.state = :running
|
390
|
+
@app_test.method(:configure_state).call(:paused)
|
391
|
+
@app_test.property.state.must_equal :paused
|
392
|
+
@app_test.property.state = :paused
|
393
|
+
@app_test.method(:configure_state).call(:paused)
|
394
|
+
@app_test.property.state.must_equal :paused
|
358
395
|
end
|
359
396
|
end
|
360
397
|
|
361
|
-
describe "when configuring its state property to :
|
362
|
-
it "must do nothing if its original state is :
|
363
|
-
@app_test.property.state = :
|
364
|
-
@app_test.method(:configure_state).call(:
|
365
|
-
@app_test.property.state.must_equal :
|
366
|
-
@app_test.property.state = :
|
367
|
-
@app_test.method(:configure_state).call(:
|
368
|
-
@app_test.property.state.must_equal :
|
398
|
+
describe "when configuring its state property to :stopped" do
|
399
|
+
it "must do nothing if its original state is :stopped or :installing" do
|
400
|
+
@app_test.property.state = :stopped
|
401
|
+
@app_test.method(:configure_state).call(:paused)
|
402
|
+
@app_test.property.state.must_equal :stopped
|
403
|
+
@app_test.property.state = :installing
|
404
|
+
@app_test.method(:configure_state).call(:paused)
|
405
|
+
@app_test.property.state.must_equal :installing
|
369
406
|
end
|
370
407
|
|
371
|
-
it "must stop its running application if its original state is :
|
372
|
-
@app_test.property.state = :
|
408
|
+
it "must stop its running application if its original state is :running or :paused" do
|
409
|
+
@app_test.property.state = :running
|
373
410
|
class ExecApp
|
374
411
|
def initialize(app_id, res, cmd_line, err_out_map); end
|
375
412
|
def ExecApp.[](id); return ExecApp.new(nil,nil,nil,nil) end
|
@@ -377,8 +414,8 @@ describe OmfRc::ResourceProxy::Application do
|
|
377
414
|
def signal(sig); sig.must_equal 'TERM' end
|
378
415
|
def kill(sig); sig.must_equal 'KILL' end
|
379
416
|
end
|
380
|
-
@app_test.method(:configure_state).call(:
|
381
|
-
@app_test.property.state.must_equal :
|
417
|
+
@app_test.method(:configure_state).call(:stopped)
|
418
|
+
@app_test.property.state.must_equal :completed
|
382
419
|
end
|
383
420
|
end
|
384
421
|
|
@@ -3,7 +3,12 @@ require 'omf_rc/resource_proxy/mock'
|
|
3
3
|
|
4
4
|
describe OmfRc::ResourceProxy::Mock do
|
5
5
|
before do
|
6
|
-
@
|
6
|
+
@xmpp = MiniTest::Mock.new
|
7
|
+
@xmpp.expect(:subscribe, true, [Array])
|
8
|
+
|
9
|
+
OmfCommon.stub :comm, @xmpp do
|
10
|
+
@mock = OmfRc::ResourceFactory.new(:mock, hrn: 'mock_test')
|
11
|
+
end
|
7
12
|
end
|
8
13
|
|
9
14
|
describe "when included in the resource instance" do
|