omf_common 6.0.0 → 6.0.2.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/Gemfile +4 -0
  2. data/bin/file_broadcaster.rb +56 -0
  3. data/bin/file_receiver.rb +62 -0
  4. data/bin/omf_keygen +21 -0
  5. data/bin/{monitor_topic.rb → omf_monitor_topic} +21 -8
  6. data/bin/omf_send_create +118 -0
  7. data/bin/{send_request.rb → omf_send_request} +12 -7
  8. data/example/engine_alt.rb +23 -24
  9. data/example/ls_app.yaml +21 -0
  10. data/lib/omf_common.rb +73 -12
  11. data/lib/omf_common/auth.rb +15 -0
  12. data/lib/omf_common/auth/certificate.rb +174 -0
  13. data/lib/omf_common/auth/certificate_store.rb +72 -0
  14. data/lib/omf_common/auth/ssh_pub_key_convert.rb +80 -0
  15. data/lib/omf_common/comm.rb +66 -9
  16. data/lib/omf_common/comm/amqp/amqp_communicator.rb +40 -13
  17. data/lib/omf_common/comm/amqp/amqp_file_transfer.rb +259 -0
  18. data/lib/omf_common/comm/amqp/amqp_topic.rb +14 -21
  19. data/lib/omf_common/comm/local/local_communicator.rb +31 -2
  20. data/lib/omf_common/comm/local/local_topic.rb +19 -3
  21. data/lib/omf_common/comm/topic.rb +48 -34
  22. data/lib/omf_common/comm/xmpp/communicator.rb +19 -10
  23. data/lib/omf_common/comm/xmpp/topic.rb +22 -81
  24. data/lib/omf_common/default_logging.rb +11 -0
  25. data/lib/omf_common/eventloop.rb +14 -0
  26. data/lib/omf_common/eventloop/em.rb +39 -6
  27. data/lib/omf_common/eventloop/local_evl.rb +15 -0
  28. data/lib/omf_common/exec_app.rb +29 -15
  29. data/lib/omf_common/message.rb +53 -5
  30. data/lib/omf_common/message/json/json_message.rb +149 -39
  31. data/lib/omf_common/message/xml/message.rb +112 -39
  32. data/lib/omf_common/protocol/6.0.rnc +5 -1
  33. data/lib/omf_common/protocol/6.0.rng +12 -0
  34. data/lib/omf_common/version.rb +1 -1
  35. data/omf_common.gemspec +7 -2
  36. data/test/fixture/omf_test.cert.pem +15 -0
  37. data/test/fixture/omf_test.pem +15 -0
  38. data/test/fixture/omf_test.pub +1 -0
  39. data/test/fixture/omf_test.pub.pem +6 -0
  40. data/test/omf_common/auth/certificate_spec.rb +113 -0
  41. data/test/omf_common/auth/ssh_pub_key_convert_spec.rb +13 -0
  42. data/test/omf_common/comm/topic_spec.rb +175 -0
  43. data/test/omf_common/comm/xmpp/communicator_spec.rb +15 -16
  44. data/test/omf_common/comm/xmpp/topic_spec.rb +63 -10
  45. data/test/omf_common/comm_spec.rb +66 -9
  46. data/test/omf_common/message/xml/message_spec.rb +43 -13
  47. data/test/omf_common/message_spec.rb +14 -0
  48. data/test/test_helper.rb +25 -0
  49. metadata +78 -15
  50. data/bin/send_create.rb +0 -94
@@ -17,10 +17,11 @@ describe OmfCommon::Message::XML::Message do
17
17
  end
18
18
 
19
19
  it "must be able to be serialised as XML" do
20
- @message.to_xml.must_match /^<create(.+)create>$/m
21
- @message.to_xml.must_match /<rtype>bob<\/rtype>/m
22
- @message.to_xml.must_match /<props(.+)props>/m
23
- @message.to_xml.must_match /<guard(.+)guard>/m
20
+ xml_payload = @message.marshall[1].to_xml
21
+ xml_payload.must_match /^<create(.+)create>$/m
22
+ xml_payload.must_match /<rtype>bob<\/rtype>/m
23
+ xml_payload.must_match /<props(.+)props>/m
24
+ xml_payload.must_match /<guard(.+)guard>/m
24
25
  end
25
26
  end
26
27
 
@@ -35,9 +36,10 @@ describe OmfCommon::Message::XML::Message do
35
36
  end
36
37
 
37
38
  it "must be able to be serialised as XML" do
38
- @message.to_xml.must_match /^<release(.+)release>$/m
39
- @message.to_xml.must_match /<res_id>bob<\/res_id>/m
40
- @message.to_xml.must_match /<guard(.+)guard>/m
39
+ xml_payload = @message.marshall[1].to_xml
40
+ xml_payload.must_match /^<release(.+)release>$/m
41
+ xml_payload.must_match /<res_id>bob<\/res_id>/m
42
+ xml_payload.must_match /<guard(.+)guard>/m
41
43
  end
42
44
  end
43
45
 
@@ -53,9 +55,9 @@ describe OmfCommon::Message::XML::Message do
53
55
  false: false,
54
56
  empty: nil,
55
57
  boolean_array: [false, true] },
56
- { rtype: 'vm', guard: { os_type: 'linux' } }).to_xml
58
+ { rtype: 'vm', guard: { os_type: 'linux' } }).marshall[1].to_xml
57
59
 
58
- @message = Message::XML::Message.parse(@xml)
60
+ Message::XML::Message.parse(@xml) { |v| @message = v }
59
61
  end
60
62
 
61
63
  it "must create the object correctly" do
@@ -119,18 +121,46 @@ describe OmfCommon::Message::XML::Message do
119
121
 
120
122
  describe "when parsing inform message" do
121
123
  it "must validate against inform message schema" do
122
- msg = Message::XML::Message.parse <<-XML
124
+ raw_xml = <<-XML
123
125
  <inform xmlns="http://schema.mytestbed.net/omf/6.0/protocol" mid="bob">
124
126
  <src>xmpp://bob@localhost</src>
125
127
  <ts>100</ts>
126
128
  <itype>CREATION.OK</itype>
127
129
  </inform>
128
130
  XML
131
+ Message::XML::Message.parse(raw_xml) do |parsed_msg|
132
+ parsed_msg.ts.must_equal "100"
133
+ parsed_msg.itype.must_equal "CREATION.OK"
129
134
 
130
- msg.ts.must_equal "100"
131
- msg.itype.must_equal "CREATION.OK"
135
+ parsed_msg.valid?.must_equal true
136
+ end
137
+ end
138
+ end
139
+
140
+ describe "when authentication enabled and certificate provided" do
141
+ it "must generate an envelope for the message" do
142
+ Message.stub(:authenticate?, true) do
143
+ OmfCommon::Auth.init
144
+
145
+ comm = mock
146
+ topic = OmfCommon::Comm::Topic.create("bob_topic")
147
+ topic.stubs(:address).returns('bob')
148
+ OmfCommon.stubs(:comm).returns(comm)
149
+ comm.expects(:create_topic).returns(topic)
132
150
 
133
- msg.valid?.must_equal true
151
+ cert = OmfCommon::Auth::Certificate.create(nil, 'sa', 'auth')
152
+ bob_cert = cert.create_for('bob', 'bob', 'bob')
153
+
154
+ message = Message::XML::Message.create(:create,
155
+ { type: 'bob', p1: 'p1_value'},
156
+ { rtype: 'bob', src: 'bob'})
157
+
158
+ # m indicates multiple lines
159
+ message.marshall[1].to_xml.must_match /<env(.+)env>/m
160
+ message.valid?.must_equal true
161
+
162
+ OmfCommon.comm.unstub(:comm)
163
+ end
134
164
  end
135
165
  end
136
166
  end
@@ -53,5 +53,19 @@ describe OmfCommon::Message do
53
53
  { itype: 'STATUS' })
54
54
  @message.print_app_event.must_equal "APP_EVENT (app100, #1, DONE.OK): Everything will be OK"
55
55
  end
56
+
57
+ it "must return inform type (itype), formatted" do
58
+ @message.itype = 'CREATION.OK'
59
+
60
+ @message.itype.must_equal 'CREATION.OK'
61
+ @message.itype(:ruby).must_equal 'creation_ok'
62
+ @message.itype(:frcp).must_equal 'CREATION.OK'
63
+
64
+ @message.itype = :creation_ok
65
+
66
+ @message.itype.must_equal :creation_ok
67
+ @message.itype(:ruby).must_equal 'creation_ok'
68
+ @message.itype(:frcp).must_equal 'CREATION.OK'
69
+ end
56
70
  end
57
71
  end
data/test/test_helper.rb CHANGED
@@ -6,10 +6,35 @@ require 'minitest/autorun'
6
6
  require 'minitest/pride'
7
7
  require 'minitest/spec'
8
8
  require 'minitest/mock'
9
+ require 'em/minitest/spec'
10
+ require 'mocha/setup'
9
11
 
10
12
  require 'omf_common'
13
+ require 'blather/client/dsl'
14
+
15
+ require 'singleton'
11
16
 
12
17
  OmfCommon::Message.init(type: :xml)
13
18
 
14
19
  # Shut up all the loggers
15
20
  Logging.logger.root.clear_appenders
21
+
22
+ # Add reset to singleton classes
23
+ #
24
+ class OmfCommon::Comm
25
+ def self.reset
26
+ @@instance = nil
27
+ end
28
+ end
29
+
30
+ class OmfCommon::Eventloop
31
+ def self.reset
32
+ @@instance = nil
33
+ end
34
+ end
35
+
36
+ class OmfCommon::Auth::CertificateStore
37
+ def self.reset
38
+ @@instance = nil
39
+ end
40
+ end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omf_common
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0
5
- prerelease:
4
+ version: 6.0.2.pre.1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - NICTA
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-18 00:00:00.000000000 Z
12
+ date: 2013-04-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -59,6 +59,38 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: pry
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: mocha
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
62
94
  - !ruby/object:Gem::Dependency
63
95
  name: eventmachine
64
96
  requirement: !ruby/object:Gem::Requirement
@@ -130,7 +162,7 @@ dependencies:
130
162
  requirements:
131
163
  - - ~>
132
164
  - !ruby/object:Gem::Version
133
- version: 2.8.0
165
+ version: 2.9.1
134
166
  type: :runtime
135
167
  prerelease: false
136
168
  version_requirements: !ruby/object:Gem::Requirement
@@ -138,29 +170,38 @@ dependencies:
138
170
  requirements:
139
171
  - - ~>
140
172
  - !ruby/object:Gem::Version
141
- version: 2.8.0
173
+ version: 2.9.1
142
174
  description: Common library of OMF, a generic framework for controlling and managing
143
175
  networking testbeds.
144
176
  email:
145
177
  - omf-user@lists.nicta.com.au
146
178
  executables:
147
- - monitor_topic.rb
148
- - send_create.rb
149
- - send_request.rb
179
+ - omf_monitor_topic
180
+ - omf_send_request
181
+ - omf_send_create
150
182
  extensions: []
151
183
  extra_rdoc_files: []
152
184
  files:
153
185
  - .gitignore
154
186
  - Gemfile
155
187
  - Rakefile
156
- - bin/monitor_topic.rb
157
- - bin/send_create.rb
158
- - bin/send_request.rb
188
+ - bin/file_broadcaster.rb
189
+ - bin/file_receiver.rb
190
+ - bin/omf_keygen
191
+ - bin/omf_monitor_topic
192
+ - bin/omf_send_create
193
+ - bin/omf_send_request
159
194
  - example/engine_alt.rb
195
+ - example/ls_app.yaml
160
196
  - example/vm_alt.rb
161
197
  - lib/omf_common.rb
198
+ - lib/omf_common/auth.rb
199
+ - lib/omf_common/auth/certificate.rb
200
+ - lib/omf_common/auth/certificate_store.rb
201
+ - lib/omf_common/auth/ssh_pub_key_convert.rb
162
202
  - lib/omf_common/comm.rb
163
203
  - lib/omf_common/comm/amqp/amqp_communicator.rb
204
+ - lib/omf_common/comm/amqp/amqp_file_transfer.rb
164
205
  - lib/omf_common/comm/amqp/amqp_topic.rb
165
206
  - lib/omf_common/comm/local/local_communicator.rb
166
207
  - lib/omf_common/comm/local/local_topic.rb
@@ -186,7 +227,14 @@ files:
186
227
  - lib/omf_common/protocol/6.0.rng
187
228
  - lib/omf_common/version.rb
188
229
  - omf_common.gemspec
230
+ - test/fixture/omf_test.cert.pem
231
+ - test/fixture/omf_test.pem
232
+ - test/fixture/omf_test.pub
233
+ - test/fixture/omf_test.pub.pem
189
234
  - test/fixture/pubsub.rb
235
+ - test/omf_common/auth/certificate_spec.rb
236
+ - test/omf_common/auth/ssh_pub_key_convert_spec.rb
237
+ - test/omf_common/comm/topic_spec.rb
190
238
  - test/omf_common/comm/xmpp/communicator_spec.rb
191
239
  - test/omf_common/comm/xmpp/topic_spec.rb
192
240
  - test/omf_common/comm_spec.rb
@@ -211,14 +259,29 @@ required_ruby_version: !ruby/object:Gem::Requirement
211
259
  required_rubygems_version: !ruby/object:Gem::Requirement
212
260
  none: false
213
261
  requirements:
214
- - - ! '>='
262
+ - - ! '>'
215
263
  - !ruby/object:Gem::Version
216
- version: '0'
264
+ version: 1.3.1
217
265
  requirements: []
218
266
  rubyforge_project: omf_common
219
267
  rubygems_version: 1.8.25
220
268
  signing_key:
221
269
  specification_version: 3
222
270
  summary: Common library of OMF
223
- test_files: []
224
- has_rdoc:
271
+ test_files:
272
+ - test/fixture/omf_test.cert.pem
273
+ - test/fixture/omf_test.pem
274
+ - test/fixture/omf_test.pub
275
+ - test/fixture/omf_test.pub.pem
276
+ - test/fixture/pubsub.rb
277
+ - test/omf_common/auth/certificate_spec.rb
278
+ - test/omf_common/auth/ssh_pub_key_convert_spec.rb
279
+ - test/omf_common/comm/topic_spec.rb
280
+ - test/omf_common/comm/xmpp/communicator_spec.rb
281
+ - test/omf_common/comm/xmpp/topic_spec.rb
282
+ - test/omf_common/comm_spec.rb
283
+ - test/omf_common/command_spec.rb
284
+ - test/omf_common/core_ext/string_spec.rb
285
+ - test/omf_common/message/xml/message_spec.rb
286
+ - test/omf_common/message_spec.rb
287
+ - test/test_helper.rb
data/bin/send_create.rb DELETED
@@ -1,94 +0,0 @@
1
- #
2
- DESCR = %{
3
- Send a create to a specific resource (topic) and print out any replies.
4
-
5
- Any additional command line arguments are interpreted as paramters to
6
- the create.
7
- }
8
-
9
- require 'omf_common'
10
-
11
- OP_MODE = :development
12
-
13
- opts = {
14
- communication: {
15
- # url: 'amqp://srv.mytestbed.net'
16
- },
17
- eventloop: { type: :em},
18
- logging: {
19
- level: 'info'
20
- }
21
- }
22
-
23
- resource_url = nil
24
- resource_type = nil
25
-
26
- op = OptionParser.new
27
- op.banner = "Usage: #{op.program_name} [options] type pname1: val1 pname2: val2 ...\n#{DESCR}\n"
28
- op.on '-r', '--resource-url URL', "URL of resource" do |url|
29
- resource_url = url
30
- end
31
- op.on '-t', '--type TYPE', "Type of resource to create" do |type|
32
- resource_type = type
33
- end
34
- op.on '-d', '--debug', "Set logging to DEBUG level" do
35
- opts[:logging][:level] = 'debug'
36
- end
37
- op.on_tail('-h', "--help", "Show this message") { $stderr.puts op; exit }
38
- rest = op.parse(ARGV) || []
39
-
40
- unless resource_url || resource_type
41
- $stderr.puts 'Missing --resource-url --type or'
42
- $stderr.puts op
43
- exit(-1)
44
- end
45
-
46
- r = resource_url.split('/')
47
- resource = r.pop
48
- opts[:communication][:url] = r.join('/')
49
-
50
- copts = {}
51
- key = nil
52
- def err_exit
53
- $stderr.puts("Options need to be of the 'key: value' type")
54
- exit(-1)
55
- end
56
- rest.each do |s|
57
- sa = s.split(':')
58
- if sa.length == 2
59
- err_exit if key
60
- copts[sa[0]] = sa[1]
61
- else
62
- if s.end_with?(':')
63
- err_exit if key
64
- key = s[0]
65
- else
66
- err_exit unless key
67
- copts[key] = s[0]
68
- key = nil
69
- end
70
- end
71
- end
72
- err_exit if key
73
-
74
- OmfCommon.init(OP_MODE, opts) do |el|
75
- OmfCommon.comm.on_connected do |comm|
76
- comm.subscribe(resource) do |topic|
77
- # topic.on_inform do |msg|
78
- # puts "#{resource} <#{msg.type}(#{msg.itype})> #{msg.inspect}"
79
- # msg.each_property do |name, value|
80
- # puts " #{name}: #{value}"
81
- # end
82
- # puts "------"
83
- # end
84
-
85
- topic.create(resource_type, copts) do |msg|
86
- puts "#{resource} <#{msg.type}(#{msg.itype})> #{msg.inspect}"
87
- msg.each_property do |name, value|
88
- puts " #{name}: #{value}"
89
- end
90
- puts "------"
91
- end
92
- end
93
- end
94
- end