omf_rc 6.0.0.pre.8 → 6.0.0.pre.9
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/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
|