omf_common 6.0.0.pre.6 → 6.0.0.pre.7
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/lib/omf_common.rb +4 -0
- data/lib/omf_common/core_ext/object.rb +21 -0
- data/lib/omf_common/dsl/xmpp.rb +72 -22
- data/lib/omf_common/exec_app.rb +163 -0
- data/lib/omf_common/message.rb +110 -26
- data/lib/omf_common/protocol/6.0.rnc +61 -0
- data/lib/omf_common/protocol/6.0.rng +157 -0
- data/lib/omf_common/topic.rb +34 -0
- data/lib/omf_common/topic_message.rb +20 -0
- data/lib/omf_common/version.rb +1 -1
- data/omf_common.gemspec +4 -1
- data/test/fixture/pubsub.rb +252 -0
- data/test/omf_common/command_spec.rb +8 -2
- data/test/omf_common/dsl/xmpp_spec.rb +309 -0
- data/test/omf_common/message_spec.rb +53 -18
- data/test/omf_common/topic_message_spec.rb +114 -0
- data/test/omf_common/topic_spec.rb +75 -0
- data/test/test_helper.rb +3 -0
- metadata +63 -6
- data/lib/omf_common/protocol.rnc +0 -42
- data/lib/omf_common/protocol.rng +0 -141
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'fixture/pubsub'
|
3
|
+
require 'em/minitest/spec'
|
4
|
+
|
5
|
+
include OmfCommon
|
6
|
+
|
7
|
+
describe OmfCommon::Topic do
|
8
|
+
before do
|
9
|
+
@client = Blather::Client.new
|
10
|
+
@stream = MiniTest::Mock.new
|
11
|
+
@stream.expect(:send, true, [Blather::Stanza])
|
12
|
+
@client.post_init @stream, Blather::JID.new('n@d/r')
|
13
|
+
@comm = Class.new { include OmfCommon::DSL::Xmpp }.new
|
14
|
+
@topic = @comm.get_topic('mclaren')
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "when topic object initialised" do
|
18
|
+
include EM::MiniTest::Spec
|
19
|
+
|
20
|
+
it "must be able to subscribe" do
|
21
|
+
Blather::Client.stub :new, @client do
|
22
|
+
subscription = Blather::XMPPNode.parse(subscription_xml)
|
23
|
+
write_callback = proc do |event|
|
24
|
+
event.must_be_kind_of Blather::Stanza::PubSub::Subscribe
|
25
|
+
event.node.must_equal 'mclaren'
|
26
|
+
subscription.id = event.id
|
27
|
+
subscription.node = event.node
|
28
|
+
@client.receive_data subscription
|
29
|
+
end
|
30
|
+
@client.stub :write, write_callback do
|
31
|
+
@topic.subscribe do |e|
|
32
|
+
e.must_equal subscription
|
33
|
+
e.node.must_equal 'mclaren'
|
34
|
+
done!
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
wait!
|
39
|
+
end
|
40
|
+
|
41
|
+
it "must react when message arrived" do
|
42
|
+
Blather::Client.stub :new, @client do
|
43
|
+
omf_status = Blather::XMPPNode.parse(omf_status_xml)
|
44
|
+
@client.receive_data omf_status
|
45
|
+
@topic.on_message do |n|
|
46
|
+
n.must_equal Message.parse(omf_status.items.first.payload)
|
47
|
+
done!
|
48
|
+
end
|
49
|
+
|
50
|
+
invalid_topic = @comm.get_topic('bob')
|
51
|
+
invalid_topic.on_message do |n|
|
52
|
+
raise 'Wont come here'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
wait!
|
56
|
+
end
|
57
|
+
|
58
|
+
it "must react when certain messages arrived, specified by guards" do
|
59
|
+
Blather::Client.stub :new, @client do
|
60
|
+
omf_status = Blather::XMPPNode.parse(omf_status_xml)
|
61
|
+
@client.receive_data omf_status
|
62
|
+
@topic.on_message proc { |message| message.context_id == 'bob' } do |n|
|
63
|
+
raise 'Wont come here'
|
64
|
+
end
|
65
|
+
|
66
|
+
@topic.on_message proc { |message| message.context_id == "bf840fe9-c176-4fae-b7de-6fc27f183f76" } do |n|
|
67
|
+
n.must_equal Message.parse(omf_status.items.first.payload)
|
68
|
+
n.context_id.must_equal "bf840fe9-c176-4fae-b7de-6fc27f183f76"
|
69
|
+
done!
|
70
|
+
end
|
71
|
+
end
|
72
|
+
wait!
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omf_common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.0.pre.
|
4
|
+
version: 6.0.0.pre.7
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: minitest
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2
|
21
|
+
version: '3.2'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,55 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 2
|
29
|
+
version: '3.2'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: em-minitest-spec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.1.1
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.1.1
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: simplecov
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: eventmachine
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.12.10
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.12.10
|
30
78
|
- !ruby/object:Gem::Dependency
|
31
79
|
name: blather
|
32
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,17 +137,25 @@ files:
|
|
89
137
|
- lib/omf_common.rb
|
90
138
|
- lib/omf_common/comm.rb
|
91
139
|
- lib/omf_common/command.rb
|
140
|
+
- lib/omf_common/core_ext/object.rb
|
92
141
|
- lib/omf_common/core_ext/string.rb
|
93
142
|
- lib/omf_common/dsl/xmpp.rb
|
143
|
+
- lib/omf_common/exec_app.rb
|
94
144
|
- lib/omf_common/message.rb
|
95
|
-
- lib/omf_common/protocol.rnc
|
96
|
-
- lib/omf_common/protocol.rng
|
145
|
+
- lib/omf_common/protocol/6.0.rnc
|
146
|
+
- lib/omf_common/protocol/6.0.rng
|
147
|
+
- lib/omf_common/topic.rb
|
148
|
+
- lib/omf_common/topic_message.rb
|
97
149
|
- lib/omf_common/version.rb
|
98
150
|
- omf_common.gemspec
|
151
|
+
- test/fixture/pubsub.rb
|
99
152
|
- test/omf_common/comm_spec.rb
|
100
153
|
- test/omf_common/command_spec.rb
|
101
154
|
- test/omf_common/core_ext/string_spec.rb
|
155
|
+
- test/omf_common/dsl/xmpp_spec.rb
|
102
156
|
- test/omf_common/message_spec.rb
|
157
|
+
- test/omf_common/topic_message_spec.rb
|
158
|
+
- test/omf_common/topic_spec.rb
|
103
159
|
- test/test_helper.rb
|
104
160
|
homepage: https://www.mytestbed.net
|
105
161
|
licenses: []
|
@@ -126,3 +182,4 @@ signing_key:
|
|
126
182
|
specification_version: 3
|
127
183
|
summary: Common library of OMF
|
128
184
|
test_files: []
|
185
|
+
has_rdoc:
|
data/lib/omf_common/protocol.rnc
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
default namespace = "http://schema.mytestbed.net/6.0/protocol"
|
2
|
-
|
3
|
-
element (create | configure) {
|
4
|
-
attribute msg_id { text },
|
5
|
-
element context_id { text },
|
6
|
-
element property {
|
7
|
-
(attribute key { text } | element key { text }),
|
8
|
-
(attribute type { text } | element type { text })?,
|
9
|
-
(element value { text } | text),
|
10
|
-
element unit { text }?,
|
11
|
-
element precision { text }?
|
12
|
-
}*
|
13
|
-
} |
|
14
|
-
element request {
|
15
|
-
attribute msg_id { text },
|
16
|
-
element context_id { text },
|
17
|
-
element publish_to { text }?,
|
18
|
-
element property {
|
19
|
-
(attribute key { text } | element key { text }),
|
20
|
-
element min_value { text }?,
|
21
|
-
element max_value { text }?
|
22
|
-
}*
|
23
|
-
} |
|
24
|
-
element inform {
|
25
|
-
attribute msg_id { text },
|
26
|
-
element context_id { text },
|
27
|
-
element inform_type { "CREATED" | "FAILED" | "STATUS" | "RELEASED" },
|
28
|
-
element resource_id { text }?,
|
29
|
-
element resource_address { text }?,
|
30
|
-
element error_message { text }?,
|
31
|
-
element property {
|
32
|
-
(attribute key { text } | element key { text }),
|
33
|
-
element current { text },
|
34
|
-
element target { text }?,
|
35
|
-
element msg { text }?,
|
36
|
-
element progress { text }?
|
37
|
-
}*
|
38
|
-
} |
|
39
|
-
element release {
|
40
|
-
attribute msg_id { text },
|
41
|
-
element context_id { text }
|
42
|
-
}
|
data/lib/omf_common/protocol.rng
DELETED
@@ -1,141 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<choice ns="http://schema.mytestbed.net/6.0/protocol" xmlns="http://relaxng.org/ns/structure/1.0">
|
3
|
-
<element>
|
4
|
-
<choice>
|
5
|
-
<name>create</name>
|
6
|
-
<name>configure</name>
|
7
|
-
</choice>
|
8
|
-
<attribute name="msg_id"/>
|
9
|
-
<element name="context_id">
|
10
|
-
<text/>
|
11
|
-
</element>
|
12
|
-
<zeroOrMore>
|
13
|
-
<element name="property">
|
14
|
-
<choice>
|
15
|
-
<attribute name="key"/>
|
16
|
-
<element name="key">
|
17
|
-
<text/>
|
18
|
-
</element>
|
19
|
-
</choice>
|
20
|
-
<optional>
|
21
|
-
<choice>
|
22
|
-
<attribute name="type"/>
|
23
|
-
<element name="type">
|
24
|
-
<text/>
|
25
|
-
</element>
|
26
|
-
</choice>
|
27
|
-
</optional>
|
28
|
-
<choice>
|
29
|
-
<element name="value">
|
30
|
-
<text/>
|
31
|
-
</element>
|
32
|
-
<text/>
|
33
|
-
</choice>
|
34
|
-
<optional>
|
35
|
-
<element name="unit">
|
36
|
-
<text/>
|
37
|
-
</element>
|
38
|
-
</optional>
|
39
|
-
<optional>
|
40
|
-
<element name="precision">
|
41
|
-
<text/>
|
42
|
-
</element>
|
43
|
-
</optional>
|
44
|
-
</element>
|
45
|
-
</zeroOrMore>
|
46
|
-
</element>
|
47
|
-
<element name="request">
|
48
|
-
<attribute name="msg_id"/>
|
49
|
-
<element name="context_id">
|
50
|
-
<text/>
|
51
|
-
</element>
|
52
|
-
<optional>
|
53
|
-
<element name="publish_to">
|
54
|
-
<text/>
|
55
|
-
</element>
|
56
|
-
</optional>
|
57
|
-
<zeroOrMore>
|
58
|
-
<element name="property">
|
59
|
-
<choice>
|
60
|
-
<attribute name="key"/>
|
61
|
-
<element name="key">
|
62
|
-
<text/>
|
63
|
-
</element>
|
64
|
-
</choice>
|
65
|
-
<optional>
|
66
|
-
<element name="min_value">
|
67
|
-
<text/>
|
68
|
-
</element>
|
69
|
-
</optional>
|
70
|
-
<optional>
|
71
|
-
<element name="max_value">
|
72
|
-
<text/>
|
73
|
-
</element>
|
74
|
-
</optional>
|
75
|
-
</element>
|
76
|
-
</zeroOrMore>
|
77
|
-
</element>
|
78
|
-
<element name="inform">
|
79
|
-
<attribute name="msg_id"/>
|
80
|
-
<element name="context_id">
|
81
|
-
<text/>
|
82
|
-
</element>
|
83
|
-
<element name="inform_type">
|
84
|
-
<choice>
|
85
|
-
<value>CREATED</value>
|
86
|
-
<value>FAILED</value>
|
87
|
-
<value>STATUS</value>
|
88
|
-
<value>RELEASED</value>
|
89
|
-
</choice>
|
90
|
-
</element>
|
91
|
-
<optional>
|
92
|
-
<element name="resource_id">
|
93
|
-
<text/>
|
94
|
-
</element>
|
95
|
-
</optional>
|
96
|
-
<optional>
|
97
|
-
<element name="resource_address">
|
98
|
-
<text/>
|
99
|
-
</element>
|
100
|
-
</optional>
|
101
|
-
<optional>
|
102
|
-
<element name="error_message">
|
103
|
-
<text/>
|
104
|
-
</element>
|
105
|
-
</optional>
|
106
|
-
<zeroOrMore>
|
107
|
-
<element name="property">
|
108
|
-
<choice>
|
109
|
-
<attribute name="key"/>
|
110
|
-
<element name="key">
|
111
|
-
<text/>
|
112
|
-
</element>
|
113
|
-
</choice>
|
114
|
-
<element name="current">
|
115
|
-
<text/>
|
116
|
-
</element>
|
117
|
-
<optional>
|
118
|
-
<element name="target">
|
119
|
-
<text/>
|
120
|
-
</element>
|
121
|
-
</optional>
|
122
|
-
<optional>
|
123
|
-
<element name="msg">
|
124
|
-
<text/>
|
125
|
-
</element>
|
126
|
-
</optional>
|
127
|
-
<optional>
|
128
|
-
<element name="progress">
|
129
|
-
<text/>
|
130
|
-
</element>
|
131
|
-
</optional>
|
132
|
-
</element>
|
133
|
-
</zeroOrMore>
|
134
|
-
</element>
|
135
|
-
<element name="release">
|
136
|
-
<attribute name="msg_id"/>
|
137
|
-
<element name="context_id">
|
138
|
-
<text/>
|
139
|
-
</element>
|
140
|
-
</element>
|
141
|
-
</choice>
|