omf_rc 6.0.2.pre.2 → 6.0.2
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_rc +19 -11
- data/config/config.yml +0 -5
- data/config/config_with_authentication.yml.example +1 -1
- data/lib/omf_rc/deferred_process.rb +5 -0
- data/lib/omf_rc/omf_error.rb +5 -0
- data/lib/omf_rc/resource_factory.rb +17 -5
- data/lib/omf_rc/resource_proxy/abstract_resource.rb +186 -85
- data/lib/omf_rc/resource_proxy/application.rb +77 -53
- data/lib/omf_rc/resource_proxy/net.rb +29 -2
- data/lib/omf_rc/resource_proxy/node.rb +53 -2
- data/lib/omf_rc/resource_proxy/virtual_machine.rb +5 -0
- data/lib/omf_rc/resource_proxy/virtual_machine_factory.rb +5 -0
- data/lib/omf_rc/resource_proxy/wlan.rb +41 -2
- data/lib/omf_rc/resource_proxy_dsl.rb +68 -8
- data/lib/omf_rc/util/common_tools.rb +5 -0
- data/lib/omf_rc/util/hostapd.rb +13 -0
- data/lib/omf_rc/util/ip.rb +39 -0
- data/lib/omf_rc/util/iw.rb +115 -39
- data/lib/omf_rc/util/libvirt.rb +5 -0
- data/lib/omf_rc/util/mod.rb +20 -1
- data/lib/omf_rc/util/openflow_tools.rb +5 -0
- data/lib/omf_rc/util/package.rb +5 -0
- data/lib/omf_rc/util/platform_tools.rb +5 -0
- data/lib/omf_rc/util/sysfs.rb +23 -3
- data/lib/omf_rc/util/vmbuilder.rb +5 -0
- data/lib/omf_rc/util/wpa.rb +12 -0
- data/lib/omf_rc/version.rb +6 -1
- data/lib/omf_rc.rb +5 -0
- data/omf_rc.gemspec +2 -1
- data/test/omf_rc/deferred_process_spec.rb +5 -0
- data/test/omf_rc/message_process_error_spec.rb +5 -0
- data/test/omf_rc/resource_factory_spec.rb +8 -6
- data/test/omf_rc/resource_proxy/abstract_resource_spec.rb +151 -89
- data/test/omf_rc/resource_proxy/application_spec.rb +10 -11
- data/test/omf_rc/resource_proxy/node_spec.rb +6 -1
- data/test/omf_rc/resource_proxy_dsl_spec.rb +31 -6
- data/test/omf_rc/util/common_tools_spec.rb +6 -1
- data/test/omf_rc/util/ip_spec.rb +9 -3
- data/test/omf_rc/util/iw_spec.rb +16 -6
- data/test/omf_rc/util/mod_spec.rb +8 -3
- data/test/test_helper.rb +6 -0
- metadata +26 -13
- data/lib/omf_rc/resource_proxy/mock.rb +0 -16
- data/lib/omf_rc/util/mock.rb +0 -22
- data/test/omf_rc/resource_proxy/mock_spec.rb +0 -20
- data/test/omf_rc/util/mock_spec.rb +0 -31
@@ -1,108 +1,135 @@
|
|
1
|
+
# Copyright (c) 2012 National ICT Australia Limited (NICTA).
|
2
|
+
# This software may be used and distributed solely under the terms of the MIT license (License).
|
3
|
+
# You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
|
4
|
+
# By downloading or using this software you accept the terms and the liability disclaimer in the License.
|
5
|
+
|
1
6
|
require 'test_helper'
|
2
7
|
require 'em/minitest/spec'
|
3
8
|
require 'omf_rc/resource_factory'
|
4
|
-
require 'blather'
|
5
9
|
|
6
10
|
include OmfRc::ResourceProxy
|
7
11
|
|
8
12
|
module OmfRc::ResourceProxy
|
9
|
-
module
|
13
|
+
module Parent
|
10
14
|
include OmfRc::ResourceProxyDSL
|
11
|
-
register_proxy :
|
12
|
-
|
13
|
-
request :name
|
14
|
-
configure :name
|
15
|
-
end
|
15
|
+
register_proxy :parent
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
request :test_exception do
|
18
|
+
raise StandardError
|
19
|
+
end
|
20
20
|
end
|
21
21
|
|
22
|
-
module
|
22
|
+
module Child
|
23
23
|
include OmfRc::ResourceProxyDSL
|
24
|
-
register_proxy :
|
24
|
+
register_proxy :child, create_by: :parent
|
25
|
+
property :p1
|
25
26
|
end
|
26
27
|
|
27
|
-
module
|
28
|
+
module RandomResource
|
28
29
|
include OmfRc::ResourceProxyDSL
|
29
|
-
register_proxy :
|
30
|
+
register_proxy :random_resource, create_by: :nobody
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
33
34
|
describe AbstractResource do
|
34
35
|
before do
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
# Things we need to mock
|
37
|
+
# * communicator
|
38
|
+
# * topic
|
39
|
+
# * calling communicator callbacks
|
40
|
+
@comm = mock
|
41
|
+
@topics = {
|
42
|
+
parent: OmfCommon::Comm::Topic.create(:parent),
|
43
|
+
child: OmfCommon::Comm::Topic.create(:child)
|
44
|
+
}
|
45
|
+
[:inform, :publish, :unsubscribe].each do |m_name|
|
46
|
+
OmfCommon::Comm::Topic.any_instance.stubs(m_name)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Return child topic by default unless specified
|
50
|
+
@comm.stubs(:create_topic).returns(@topics[:child])
|
51
|
+
|
52
|
+
[:parent, :child].each do |t_name|
|
53
|
+
@topics[t_name].stubs(:address).returns("xmpp://localhost/#{t_name.to_s}")
|
54
|
+
@comm.stubs(:create_topic).with("xmpp://localhost/#{t_name}").returns(@topics[t_name])
|
55
|
+
end
|
56
|
+
|
57
|
+
@comm.class_eval do
|
58
|
+
define_method(:subscribe) do |*args, &block|
|
59
|
+
block.call(self.create_topic("xmpp://localhost/#{args[0]}"))
|
60
|
+
end
|
39
61
|
end
|
62
|
+
|
63
|
+
OmfCommon.stubs(:comm).returns(@comm)
|
64
|
+
@parent = OmfRc::ResourceFactory.create(:parent, { uid: :parent, hrn: 'default_node' }, { create_children_resources: true })
|
40
65
|
end
|
41
66
|
|
42
|
-
|
43
|
-
|
44
|
-
|
67
|
+
after do
|
68
|
+
@comm.class_eval do
|
69
|
+
undef_method(:subscribe)
|
70
|
+
end
|
71
|
+
OmfCommon.unstub(:comm)
|
72
|
+
[:inform, :publish, :unsubscribe].each do |m_name|
|
73
|
+
OmfCommon::Comm::Topic.any_instance.unstub(m_name)
|
45
74
|
end
|
75
|
+
@parent = nil
|
76
|
+
end
|
46
77
|
|
47
|
-
|
48
|
-
|
49
|
-
|
78
|
+
describe "when created itself (bootstrap)" do
|
79
|
+
it "must have an unique id generated if not given" do
|
80
|
+
OmfRc::ResourceFactory.create(:parent).uid.must_match /.{8}-.{4}-.{4}-.{4}-.{12}/
|
50
81
|
end
|
51
82
|
|
52
|
-
it "
|
53
|
-
@
|
54
|
-
@
|
83
|
+
it "must be able to keep state inside 'property' instnace variable" do
|
84
|
+
@parent.property.bob = "test"
|
85
|
+
@parent.property.bob.must_equal "test"
|
55
86
|
end
|
56
87
|
|
57
88
|
it "must be able to access creation options" do
|
58
|
-
@
|
89
|
+
@parent.creation_opts[:create_children_resources].must_equal true
|
59
90
|
end
|
60
|
-
end
|
61
91
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
end
|
92
|
+
it "must returned all the properties can be requested & configured" do
|
93
|
+
@parent.request_available_properties.configure.must_equal [:membership]
|
94
|
+
@parent.request_available_properties.request.must_equal(
|
95
|
+
[:test_exception, :supported_children_type, :uid, :type, :hrn, :name, :membership, :child_resources]
|
96
|
+
)
|
68
97
|
end
|
69
98
|
|
70
|
-
it "must
|
71
|
-
|
72
|
-
OmfCommon.stub :comm, @xmpp do
|
73
|
-
@xmpp.expect(:subscribe, true, [String])
|
74
|
-
child = @node.create(:wifi, { hrn: 'default_wifi' })
|
75
|
-
@node.children.must_include child
|
76
|
-
@node.request_child_resources.find { |v| v.uid == child.uid }.name.must_equal 'default_wifi'
|
77
|
-
end
|
99
|
+
it "must return types of child resources it can create" do
|
100
|
+
@parent.request_supported_children_type.must_include :child
|
78
101
|
end
|
79
|
-
end
|
80
102
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
end
|
103
|
+
it "must be able to query core properties" do
|
104
|
+
@parent.request_type.must_equal :parent
|
105
|
+
@parent.request_name.must_equal 'default_node'
|
106
|
+
@parent.request_hrn.must_equal 'default_node'
|
107
|
+
@parent.request_membership.must_equal []
|
108
|
+
end
|
109
|
+
|
110
|
+
it "must be able to configure membership (join group)" do
|
111
|
+
@parent.configure_membership(:test_group)
|
112
|
+
@parent.request_membership.must_include :test_group
|
92
113
|
end
|
93
114
|
end
|
94
115
|
|
95
|
-
describe "when asked
|
96
|
-
it "must
|
97
|
-
@
|
98
|
-
@
|
99
|
-
@
|
116
|
+
describe "when parent asked to create child resource" do
|
117
|
+
it "must return the newly created resource add the resource to its created resource list" do
|
118
|
+
child = @parent.create(:child)
|
119
|
+
@parent.children.must_include child
|
120
|
+
@parent.request_child_resources.must_include({ uid: child.uid, address: child.resource_address })
|
100
121
|
end
|
101
122
|
|
102
|
-
it "must
|
103
|
-
@
|
104
|
-
|
105
|
-
|
123
|
+
it "must raise error if child is not designed to be created by parent" do
|
124
|
+
lambda { @parent.create(:random_resource) }.must_raise StandardError
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe "when parent asked to release child resource" do
|
129
|
+
it "must release the child resource" do
|
130
|
+
child = @parent.create(:child)
|
131
|
+
@parent.release(child.uid).must_equal child
|
132
|
+
@parent.children.must_be_empty
|
106
133
|
end
|
107
134
|
end
|
108
135
|
|
@@ -121,30 +148,30 @@ describe AbstractResource do
|
|
121
148
|
skip
|
122
149
|
# FIXME
|
123
150
|
@xmpp.stub :publish, proc { |replyto, message| message.valid?.must_equal true} do
|
124
|
-
@
|
125
|
-
@
|
126
|
-
@
|
127
|
-
@
|
128
|
-
@
|
129
|
-
@
|
130
|
-
@
|
131
|
-
@
|
132
|
-
@
|
151
|
+
@parent.inform(:creation_ok, res_id: 'bob', cid: 'id', replyto: 'topic')
|
152
|
+
@parent.inform(:released, res_id: 'bob', cid: 'id', replyto: 'topic')
|
153
|
+
@parent.inform(:status, status: { key: 'value' }, cid: 'id', replyto: 'topic')
|
154
|
+
@parent.inform(:creation_ok, res_id: 'bob', cid: 'id', replyto: 'topic')
|
155
|
+
@parent.inform(:warn, 'going to fail')
|
156
|
+
@parent.inform(:error, 'failed')
|
157
|
+
@parent.inform(:warn, Exception.new('going to fail'))
|
158
|
+
@parent.inform(:error, Exception.new('failed'))
|
159
|
+
@parent.inform(:creation_failed, Exception.new('failed'))
|
133
160
|
end
|
134
161
|
|
135
|
-
lambda { @
|
136
|
-
lambda { @
|
137
|
-
lambda { @
|
162
|
+
lambda { @parent.inform(:creation_failed, 'bob') }.must_raise ArgumentError
|
163
|
+
lambda { @parent.inform(:creation_ok, 'topic') }.must_raise ArgumentError
|
164
|
+
lambda { @parent.inform(:status, 'topic') }.must_raise ArgumentError
|
138
165
|
end
|
139
166
|
|
140
167
|
it "must be able to connect & disconnect" do
|
141
168
|
skip
|
142
169
|
Blather::Client.stub :new, @client do
|
143
170
|
Blather::Stream::Client.stub(:start, @client) do
|
144
|
-
@
|
171
|
+
@parent = OmfRc::ResourceFactory.create(:node, { hrn: 'default_node', user: 'bob', password: 'pw', server: 'example.com'}, @xmpp)
|
145
172
|
@client.stub(:connected?, true) do
|
146
|
-
@
|
147
|
-
@
|
173
|
+
@parent.connect
|
174
|
+
@parent.comm.conn_info.must_equal({proto: :xmpp, user: 'bob', doamin: 'example.com'})
|
148
175
|
end
|
149
176
|
end
|
150
177
|
end
|
@@ -154,19 +181,54 @@ describe AbstractResource do
|
|
154
181
|
describe "when request/configure property not pre-defined in proxy" do
|
155
182
|
it "must try property hash" do
|
156
183
|
skip
|
157
|
-
@
|
158
|
-
@
|
184
|
+
@parent.property[:bob] = "bob"
|
185
|
+
@parent.property[:false] = false
|
159
186
|
|
160
|
-
@
|
161
|
-
@
|
187
|
+
@parent.methods.must_include :request_bob
|
188
|
+
@parent.methods.must_include :configure_bob
|
162
189
|
|
163
|
-
@
|
164
|
-
@
|
190
|
+
@parent.request_bob.must_equal "bob"
|
191
|
+
@parent.request_false.must_equal false
|
192
|
+
|
193
|
+
@parent.configure_bob("not_bob")
|
194
|
+
@parent.request_bob.must_equal "not_bob"
|
195
|
+
proc { @parent.request_bobs_cousin }.must_raise OmfRc::UnknownPropertyError
|
196
|
+
proc { @parent.bobs_cousin }.must_raise NoMethodError
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
describe "when FRCP incoming messages received" do
|
201
|
+
before do
|
202
|
+
@create_msg = OmfCommon::Message.create(:create, { uid: 'child_001', type: :child, p1: 'p1_value' })
|
203
|
+
@configure_msg = OmfCommon::Message.create(:configure, { p1: 'p1_value' })
|
204
|
+
@request_msg = OmfCommon::Message.create(:request, { name: nil })
|
205
|
+
@release_msg = OmfCommon::Message.create(:release, {}, { res_id: 'child_001' })
|
206
|
+
end
|
207
|
+
|
208
|
+
it "must accept FRCP messages" do
|
209
|
+
@parent.process_omf_message(@request_msg, @topics[:parent])
|
210
|
+
end
|
211
|
+
|
212
|
+
it "must resuce exception if occured" do
|
213
|
+
@parent.process_omf_message(OmfCommon::Message.create(:request, { test_exception: nil }), @topics[:parent])
|
214
|
+
end
|
215
|
+
|
216
|
+
it "must handle CREATE/RELEASE message" do
|
217
|
+
@parent.handle_message(@create_msg, @parent)
|
218
|
+
@parent.request_child_resources.must_include({ uid: 'child_001', address: 'xmpp://localhost/child' })
|
219
|
+
|
220
|
+
@parent.handle_message(@release_msg, @parent)
|
221
|
+
@parent.request_child_resources.wont_include({ uid: 'child_001', address: 'xmpp://localhost/child' })
|
222
|
+
end
|
223
|
+
|
224
|
+
it "must handle REQUEST message" do
|
225
|
+
@parent.handle_message(@request_msg, @parent.create(:child))
|
226
|
+
end
|
165
227
|
|
166
|
-
|
167
|
-
@
|
168
|
-
|
169
|
-
|
228
|
+
it "must handle CONFIGURE message" do
|
229
|
+
c = @parent.create(:child)
|
230
|
+
@parent.handle_message(@configure_msg, c)
|
231
|
+
c.request_p1.must_equal 'p1_value'
|
170
232
|
end
|
171
233
|
end
|
172
234
|
end
|
@@ -1,3 +1,8 @@
|
|
1
|
+
# Copyright (c) 2012 National ICT Australia Limited (NICTA).
|
2
|
+
# This software may be used and distributed solely under the terms of the MIT license (License).
|
3
|
+
# You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
|
4
|
+
# By downloading or using this software you accept the terms and the liability disclaimer in the License.
|
5
|
+
|
1
6
|
require 'test_helper'
|
2
7
|
require 'omf_rc/resource_proxy/application'
|
3
8
|
|
@@ -10,7 +15,7 @@ describe OmfRc::ResourceProxy::Application do
|
|
10
15
|
@xmpp.expect(:publish, true, [String, OmfCommon::Message])
|
11
16
|
|
12
17
|
OmfCommon.stub :comm, @xmpp do
|
13
|
-
@app_test = OmfRc::ResourceFactory.
|
18
|
+
@app_test = OmfRc::ResourceFactory.create(:application, { hrn: 'an_application' })
|
14
19
|
end
|
15
20
|
end
|
16
21
|
|
@@ -186,27 +191,21 @@ describe OmfRc::ResourceProxy::Application do
|
|
186
191
|
end
|
187
192
|
end
|
188
193
|
|
189
|
-
it "must switch its state to :completed if the event is of a type '
|
194
|
+
it "must switch its state to :completed if the event is of a type 'EXIT' and the application is not installing itself" do
|
190
195
|
skip
|
191
196
|
OmfCommon.stub :comm, @xmpp do
|
192
197
|
@app_test.stub :inform, true do
|
193
|
-
@app_test.on_app_event('
|
194
|
-
@app_test.request_state.to_sym.must_equal :completed
|
195
|
-
end
|
196
|
-
end
|
197
|
-
OmfCommon.stub :comm, @xmpp do
|
198
|
-
@app_test.stub :inform, true do
|
199
|
-
@app_test.on_app_event('DONE.ERROR', 'app_instance_id', 'Some text here')
|
198
|
+
@app_test.on_app_event('EXIT', 'app_instance_id', 'Some text here')
|
200
199
|
@app_test.request_state.to_sym.must_equal :completed
|
201
200
|
end
|
202
201
|
end
|
203
202
|
end
|
204
203
|
|
205
|
-
it "must set installed property to true if the event is '
|
204
|
+
it "must set installed property to true if the event is 'EXIT' and the application was installing itself" do
|
206
205
|
skip
|
207
206
|
OmfCommon.stub :comm, @xmpp do
|
208
207
|
@app_test.stub :inform, true do
|
209
|
-
@app_test.on_app_event('
|
208
|
+
@app_test.on_app_event('EXIT', 'app_instance_id_INSTALL', 'Some text here')
|
210
209
|
@app_test.request_state.to_sym.must_equal :stopped
|
211
210
|
@app_test.request_installed.must_equal true
|
212
211
|
end
|
@@ -1,3 +1,8 @@
|
|
1
|
+
# Copyright (c) 2012 National ICT Australia Limited (NICTA).
|
2
|
+
# This software may be used and distributed solely under the terms of the MIT license (License).
|
3
|
+
# You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
|
4
|
+
# By downloading or using this software you accept the terms and the liability disclaimer in the License.
|
5
|
+
|
1
6
|
require 'test_helper'
|
2
7
|
require 'omf_rc/resource_proxy/node'
|
3
8
|
|
@@ -7,7 +12,7 @@ describe OmfRc::ResourceProxy::Node do
|
|
7
12
|
@xmpp.expect(:subscribe, true, [String])
|
8
13
|
|
9
14
|
OmfCommon.stub :comm, @xmpp do
|
10
|
-
@node = OmfRc::ResourceFactory.
|
15
|
+
@node = OmfRc::ResourceFactory.create(:node, hrn: 'node_test')
|
11
16
|
end
|
12
17
|
end
|
13
18
|
|
@@ -1,3 +1,8 @@
|
|
1
|
+
# Copyright (c) 2012 National ICT Australia Limited (NICTA).
|
2
|
+
# This software may be used and distributed solely under the terms of the MIT license (License).
|
3
|
+
# You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
|
4
|
+
# By downloading or using this software you accept the terms and the liability disclaimer in the License.
|
5
|
+
|
1
6
|
require 'test_helper'
|
2
7
|
require 'omf_rc/resource_proxy_dsl'
|
3
8
|
|
@@ -9,7 +14,9 @@ describe OmfRc::ResourceProxyDSL do
|
|
9
14
|
module OmfRc::Util::MockUtility
|
10
15
|
include OmfRc::ResourceProxyDSL
|
11
16
|
|
12
|
-
property :mock_prop, :
|
17
|
+
property :mock_prop, default: 1
|
18
|
+
property :read_only_prop, default: 1, access: :read_only
|
19
|
+
property :init_only_prop, default: 1, access: :init_only
|
13
20
|
|
14
21
|
configure :alpha
|
15
22
|
|
@@ -79,7 +86,7 @@ describe OmfRc::ResourceProxyDSL do
|
|
79
86
|
OmfRc::ResourceProxy::MockProxy.method_defined?(m.to_sym).must_equal true
|
80
87
|
end
|
81
88
|
|
82
|
-
mock_proxy = OmfRc::ResourceFactory.
|
89
|
+
mock_proxy = OmfRc::ResourceFactory.create(:mock_proxy)
|
83
90
|
mock_proxy.request_alpha.must_equal mock_proxy.uid
|
84
91
|
mock_proxy.request_delta.must_equal "printing"
|
85
92
|
mock_proxy.request_charlie.must_equal "working on printing"
|
@@ -111,18 +118,36 @@ describe OmfRc::ResourceProxyDSL do
|
|
111
118
|
it "must check new proxy's create_by option when ask a proxy create a new proxy" do
|
112
119
|
OmfCommon.stub :comm, @xmpp do
|
113
120
|
@xmpp.expect(:subscribe, true, [String])
|
114
|
-
OmfRc::ResourceFactory.
|
121
|
+
OmfRc::ResourceFactory.create(:mock_root_proxy).create(:mock_proxy)
|
115
122
|
2.times { @xmpp.expect(:subscribe, true, [String]) }
|
116
|
-
OmfRc::ResourceFactory.
|
123
|
+
OmfRc::ResourceFactory.create(:mock_root_proxy).create(:useless_proxy)
|
117
124
|
2.times { @xmpp.expect(:subscribe, true, [String]) }
|
118
|
-
lambda { OmfRc::ResourceFactory.
|
125
|
+
lambda { OmfRc::ResourceFactory.create(:useless_proxy).create(:mock_proxy) }.must_raise StandardError
|
119
126
|
end
|
120
127
|
end
|
121
128
|
|
122
129
|
it "must be able to define property with default vlaue" do
|
123
130
|
OmfCommon.stub :comm, @xmpp do
|
124
|
-
mock_proxy = OmfRc::ResourceFactory.
|
131
|
+
mock_proxy = OmfRc::ResourceFactory.create(:mock_proxy)
|
125
132
|
mock_proxy.property.mock_prop.must_equal 1
|
133
|
+
mock_proxy.request_mock_prop.must_equal 1
|
134
|
+
mock_proxy.configure_mock_prop(2)
|
135
|
+
mock_proxy.request_mock_prop.must_equal 2
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
it "must define associate methods when access option given to property definition" do
|
141
|
+
OmfCommon.stub :comm, @xmpp do
|
142
|
+
mock_proxy = OmfRc::ResourceFactory.create(:mock_proxy)
|
143
|
+
# Ready only
|
144
|
+
mock_proxy.request_read_only_prop.must_equal 1
|
145
|
+
lambda { mock_proxy.init_read_only_prop }.must_raise NoMethodError
|
146
|
+
lambda { mock_proxy.configure_read_only_prop }.must_raise NoMethodError
|
147
|
+
# Init only
|
148
|
+
mock_proxy.request_init_only_prop.must_equal 1
|
149
|
+
lambda { mock_proxy.init_init_only_prop }.must_raise NoMethodError
|
150
|
+
lambda { mock_proxy.configure_init_only_prop }.must_raise NoMethodError
|
126
151
|
end
|
127
152
|
end
|
128
153
|
end
|
@@ -1,3 +1,8 @@
|
|
1
|
+
# Copyright (c) 2012 National ICT Australia Limited (NICTA).
|
2
|
+
# This software may be used and distributed solely under the terms of the MIT license (License).
|
3
|
+
# You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
|
4
|
+
# By downloading or using this software you accept the terms and the liability disclaimer in the License.
|
5
|
+
|
1
6
|
require 'test_helper'
|
2
7
|
require 'omf_rc/util/common_tools'
|
3
8
|
|
@@ -17,7 +22,7 @@ describe OmfRc::Util::CommonTools do
|
|
17
22
|
|
18
23
|
it "must be able to log and inform error/warn messages" do
|
19
24
|
OmfCommon.stub :comm, @xmpp do
|
20
|
-
@test = OmfRc::ResourceFactory.
|
25
|
+
@test = OmfRc::ResourceFactory.create(:test)
|
21
26
|
2.times { @xmpp.expect(:publish, true, [String, OmfCommon::Message]) }
|
22
27
|
@test.log_inform_error "bob"
|
23
28
|
@test.log_inform_warn "bob"
|
data/test/omf_rc/util/ip_spec.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
# Copyright (c) 2012 National ICT Australia Limited (NICTA).
|
2
|
+
# This software may be used and distributed solely under the terms of the MIT license (License).
|
3
|
+
# You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
|
4
|
+
# By downloading or using this software you accept the terms and the liability disclaimer in the License.
|
5
|
+
|
1
6
|
require 'minitest/mock'
|
2
7
|
require 'test_helper'
|
3
8
|
|
@@ -18,7 +23,7 @@ describe OmfRc::Util::Ip do
|
|
18
23
|
@command = MiniTest::Mock.new
|
19
24
|
|
20
25
|
OmfCommon.stub :comm, @xmpp do
|
21
|
-
@wlan00 = OmfRc::ResourceFactory.
|
26
|
+
@wlan00 = OmfRc::ResourceFactory.create(:ip_test, hrn: 'wlan00')
|
22
27
|
end
|
23
28
|
end
|
24
29
|
|
@@ -44,8 +49,9 @@ describe OmfRc::Util::Ip do
|
|
44
49
|
end
|
45
50
|
end
|
46
51
|
|
47
|
-
it "could configure the device's
|
48
|
-
|
52
|
+
it "could configure the device's property" do
|
53
|
+
# cdw: disabled this call since it actually tried to run "ip" on my system !?
|
54
|
+
# lambda { @wlan00.configure_ip_addr("192.168.1.124/24") }.must_raise Cocaine::ExitStatusError
|
49
55
|
Cocaine::CommandLine.stub(:new, @command) do
|
50
56
|
3.times do
|
51
57
|
@command.expect(:run, "")
|
data/test/omf_rc/util/iw_spec.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
# Copyright (c) 2012 National ICT Australia Limited (NICTA).
|
2
|
+
# This software may be used and distributed solely under the terms of the MIT license (License).
|
3
|
+
# You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
|
4
|
+
# By downloading or using this software you accept the terms and the liability disclaimer in the License.
|
5
|
+
|
1
6
|
require 'minitest/mock'
|
2
7
|
require 'test_helper'
|
3
8
|
require 'cocaine'
|
@@ -15,15 +20,20 @@ Cocaine::CommandLine.stub(:new, @command) do
|
|
15
20
|
|
16
21
|
module OmfRc::ResourceProxy::IwTest
|
17
22
|
include OmfRc::ResourceProxyDSL
|
23
|
+
|
18
24
|
register_proxy :iw_test
|
25
|
+
|
19
26
|
utility :iw
|
27
|
+
|
28
|
+
property :if_name
|
29
|
+
property :phy
|
20
30
|
end
|
21
31
|
|
22
32
|
@xmpp = MiniTest::Mock.new
|
23
33
|
@xmpp.expect(:subscribe, true, [String])
|
24
34
|
|
25
35
|
OmfCommon.stub :comm, @xmpp do
|
26
|
-
@wlan00 = OmfRc::ResourceFactory.
|
36
|
+
@wlan00 = OmfRc::ResourceFactory.create(:iw_test, hrn: 'wlan00', property: { phy: 'phy00', if_name: 'wlan1' })
|
27
37
|
end
|
28
38
|
end
|
29
39
|
|
@@ -49,7 +59,7 @@ Cocaine::CommandLine.stub(:new, @command) do
|
|
49
59
|
end
|
50
60
|
end
|
51
61
|
|
52
|
-
it "could configure the device's
|
62
|
+
it "could configure the device's property" do
|
53
63
|
Cocaine::CommandLine.stub(:new, @command) do
|
54
64
|
@command.expect(:run, true)
|
55
65
|
@wlan00.configure_power_save(true)
|
@@ -59,14 +69,14 @@ Cocaine::CommandLine.stub(:new, @command) do
|
|
59
69
|
|
60
70
|
it "must could initialise wpa config/pid file path" do
|
61
71
|
@wlan00.init_ap_conf_pid
|
62
|
-
@wlan00.property.ap_conf.must_match
|
63
|
-
@wlan00.property.ap_pid.must_match
|
72
|
+
@wlan00.property.ap_conf.must_match /\/hostapd\.wlan1.+\.conf/
|
73
|
+
@wlan00.property.ap_pid.must_match /\/hostapd\.wlan1.+\.pid/
|
64
74
|
end
|
65
75
|
|
66
76
|
it "must could initialise wpa config/pid file path" do
|
67
77
|
@wlan00.init_wpa_conf_pid
|
68
|
-
@wlan00.property.wpa_conf.must_match
|
69
|
-
@wlan00.property.wpa_pid.must_match
|
78
|
+
@wlan00.property.wpa_conf.must_match /\/wpa\.wlan1.+\.conf/
|
79
|
+
@wlan00.property.wpa_pid.must_match /\/wpa\.wlan1.+\.pid/
|
70
80
|
end
|
71
81
|
|
72
82
|
it "could delete current interface" do
|
@@ -1,3 +1,8 @@
|
|
1
|
+
# Copyright (c) 2012 National ICT Australia Limited (NICTA).
|
2
|
+
# This software may be used and distributed solely under the terms of the MIT license (License).
|
3
|
+
# You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
|
4
|
+
# By downloading or using this software you accept the terms and the liability disclaimer in the License.
|
5
|
+
|
1
6
|
require 'test_helper'
|
2
7
|
require 'omf_rc/util/mod'
|
3
8
|
|
@@ -18,10 +23,10 @@ describe OmfRc::Util::Mod do
|
|
18
23
|
OmfCommon.stub :comm, @xmpp do
|
19
24
|
Cocaine::CommandLine.stub(:new, @command) do
|
20
25
|
@command.expect(:run, fixture("lsmod"))
|
21
|
-
OmfRc::ResourceFactory.
|
26
|
+
OmfRc::ResourceFactory.create(:mod_test).request_modules.must_include "kvm"
|
22
27
|
@command.expect(:run, fixture("lsmod"))
|
23
28
|
@xmpp.expect(:subscribe, true, [String])
|
24
|
-
OmfRc::ResourceFactory.
|
29
|
+
OmfRc::ResourceFactory.create(:mod_test).request_modules.wont_include "Module"
|
25
30
|
@command.verify
|
26
31
|
end
|
27
32
|
end
|
@@ -31,7 +36,7 @@ describe OmfRc::Util::Mod do
|
|
31
36
|
OmfCommon.stub :comm, @xmpp do
|
32
37
|
Cocaine::CommandLine.stub(:new, @command) do
|
33
38
|
@command.expect(:run, true)
|
34
|
-
OmfRc::ResourceFactory.
|
39
|
+
OmfRc::ResourceFactory.create(:mod_test).configure_load_module(name: 'magic_module').must_equal "magic_module loaded"
|
35
40
|
@command.verify
|
36
41
|
end
|
37
42
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
|
+
# Copyright (c) 2012 National ICT Australia Limited (NICTA).
|
2
|
+
# This software may be used and distributed solely under the terms of the MIT license (License).
|
3
|
+
# You should find a copy of the License in LICENSE.TXT or at http://opensource.org/licenses/MIT.
|
4
|
+
# By downloading or using this software you accept the terms and the liability disclaimer in the License.
|
5
|
+
|
1
6
|
require 'simplecov'
|
2
7
|
SimpleCov.start { add_filter "/test" }
|
3
8
|
|
4
9
|
gem 'minitest'
|
5
10
|
require 'minitest/autorun'
|
6
11
|
require 'minitest/pride'
|
12
|
+
require 'mocha/setup'
|
7
13
|
|
8
14
|
require 'omf_rc'
|
9
15
|
require 'omf_rc/resource_factory'
|