qpid_messaging 0.20.2 → 0.22.0

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.
Files changed (45) hide show
  1. data/ChangeLog +4 -0
  2. data/LICENSE +0 -4
  3. data/README.rdoc +15 -20
  4. data/TODO +10 -5
  5. data/ext/cqpid/cqpid.cpp +156 -40
  6. data/ext/cqpid/extconf.rb +10 -2
  7. data/lib/qpid_messaging.rb +56 -3
  8. data/lib/qpid_messaging/address.rb +51 -28
  9. data/lib/qpid_messaging/connection.rb +75 -46
  10. data/lib/qpid_messaging/duration.rb +49 -14
  11. data/lib/qpid_messaging/encoding.rb +5 -5
  12. data/lib/qpid_messaging/message.rb +61 -68
  13. data/lib/qpid_messaging/receiver.rb +62 -67
  14. data/lib/qpid_messaging/sender.rb +39 -56
  15. data/lib/qpid_messaging/session.rb +78 -81
  16. metadata +51 -61
  17. data/Rakefile +0 -137
  18. data/features/closing_a_connection.feature +0 -13
  19. data/features/closing_a_session.feature +0 -13
  20. data/features/connecting_to_a_broker.feature +0 -13
  21. data/features/creating_a_receiver.feature +0 -29
  22. data/features/creating_a_sender.feature +0 -25
  23. data/features/creating_a_session.feature +0 -12
  24. data/features/getting_the_connections_authenticated_username.feature +0 -8
  25. data/features/receiving_a_message.feature +0 -30
  26. data/features/sending_a_message.feature +0 -21
  27. data/features/session_returns_its_connection.feature +0 -12
  28. data/features/sessions_have_names.feature +0 -8
  29. data/features/step_definitions/address_steps.rb +0 -22
  30. data/features/step_definitions/connection_steps.rb +0 -93
  31. data/features/step_definitions/receiver_steps.rb +0 -69
  32. data/features/step_definitions/sender_steps.rb +0 -34
  33. data/features/step_definitions/session_steps.rb +0 -99
  34. data/features/support/env.rb +0 -22
  35. data/lib/qpid_messaging/errors.rb +0 -33
  36. data/lib/qpid_messaging/version.rb +0 -31
  37. data/spec/qpid_messaging/address_spec.rb +0 -87
  38. data/spec/qpid_messaging/connection_spec.rb +0 -191
  39. data/spec/qpid_messaging/duration_spec.rb +0 -56
  40. data/spec/qpid_messaging/encoding_spec.rb +0 -63
  41. data/spec/qpid_messaging/message_spec.rb +0 -305
  42. data/spec/qpid_messaging/receiver_spec.rb +0 -170
  43. data/spec/qpid_messaging/sender_spec.rb +0 -135
  44. data/spec/qpid_messaging/session_spec.rb +0 -353
  45. data/spec/spec_helper.rb +0 -20
@@ -1,69 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one
3
- # or more contributor license agreements. See the NOTICE file
4
- # distributed with this work for additional information
5
- # regarding copyright ownership. The ASF licenses this file
6
- # to you under the Apache License, Version 2.0 (the
7
- # "License"); you may not use this file except in compliance
8
- # with the License. You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing,
13
- # software distributed under the License is distributed on an
14
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- # KIND, either express or implied. See the License for the
16
- # specific language governing permissions and limitations
17
- # under the License.
18
- #
19
-
20
- Given /^an existing receiver for "([^"]*)"$/ do |address|
21
- steps %Q{
22
- Given an open session
23
- Then creating a receiver with "#{address}" succeeds
24
- }
25
- end
26
-
27
- Given /^the receiver has no pending messages$/ do
28
- available = @receiver.available
29
- available.should == 0
30
- end
31
-
32
- Then /^getting the next message raises an error$/ do
33
- lambda {
34
- @message = @receiver.get Qpid::Messaging::Duration::IMMEDIATE
35
- }.should raise_error
36
- end
37
-
38
- Given /^a sender and receiver for "([^"]*)"$/ do |address|
39
- steps %Q{
40
- Given an open session
41
- Then creating a sender with "#{address}" succeeds
42
- Then creating a receiver with "#{address}" succeeds
43
- }
44
- end
45
-
46
- Then /^the receiver should receive a message with "([^"]*)"$/ do |content|
47
- @message = @receiver.fetch Qpid::Messaging::Duration::IMMEDIATE
48
-
49
- @message.should_not be_nil
50
- @message.content.should == "#{content}"
51
- end
52
-
53
- Given /^the receiver has a capacity of (\d+)$/ do |capacity|
54
- @receiver.capacity = capacity.to_i
55
- end
56
-
57
- Then /^the receiver should have (\d+) message available$/ do |available|
58
- # TODO we shouldn't need to sleep a second in order to have this update
59
- sleep 1
60
- @receiver.available.should == available.to_i
61
- end
62
-
63
- Given /^given a sender for "([^"]*)"$/ do |address|
64
- @sender = @session.create_sender "#{address}"
65
- end
66
-
67
- Given /^given a receiver for "([^"]*)"$/ do |address|
68
- @receiver = @session.create_receiver "#{address}"
69
- end
@@ -1,34 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one
3
- # or more contributor license agreements. See the NOTICE file
4
- # distributed with this work for additional information
5
- # regarding copyright ownership. The ASF licenses this file
6
- # to you under the Apache License, Version 2.0 (the
7
- # "License"); you may not use this file except in compliance
8
- # with the License. You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing,
13
- # software distributed under the License is distributed on an
14
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- # KIND, either express or implied. See the License for the
16
- # specific language governing permissions and limitations
17
- # under the License.
18
- #
19
-
20
- Given /^the message "([^"]*)" is sent$/ do |content|
21
- @sender.send Qpid::Messaging::Message.new :content => "#{content}"
22
- end
23
-
24
- Then /^sending the message "([^"]*)" should raise an error$/ do |content|
25
- lambda {
26
- steps %Q{
27
- Then sending the message "#{content}" succeeds
28
- }
29
- }.should raise_error
30
- end
31
-
32
- Then /^sending the message "([^"]*)" succeeds$/ do |content|
33
- @sender.send Qpid::Messaging::Message.new :content => "#{content}"
34
- end
@@ -1,99 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one
3
- # or more contributor license agreements. See the NOTICE file
4
- # distributed with this work for additional information
5
- # regarding copyright ownership. The ASF licenses this file
6
- # to you under the Apache License, Version 2.0 (the
7
- # "License"); you may not use this file except in compliance
8
- # with the License. You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing,
13
- # software distributed under the License is distributed on an
14
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- # KIND, either express or implied. See the License for the
16
- # specific language governing permissions and limitations
17
- # under the License.
18
- #
19
-
20
- Given /^a closed session/ do
21
- steps %Q{
22
- Given an open connection
23
- Then creating a session works
24
- }
25
- @connection.close
26
- end
27
-
28
- Then /^creating a sender with "([^"]*)" raises an exception$/ do |address|
29
- lambda {
30
- steps %Q{
31
- @sender = @session.create_sender "#{address}"
32
- }
33
- }.should raise_error
34
- end
35
-
36
- Then /^creating a receiver with "([^"]*)" raises an exception$/ do |address|
37
- lambda {
38
- steps %Q{
39
- @sender = @session.create_sender "#{address}"
40
- }
41
- }.should raise_error
42
- end
43
-
44
- Given /^an open session with a closed connection$/ do
45
- steps %Q{
46
- Given an open connection
47
- Then creating a session works
48
- }
49
- @session.connection.close
50
- end
51
-
52
- Given /^an open session$/ do
53
- steps %Q{
54
- Given an open connection
55
- Then creating a session works
56
- }
57
- end
58
-
59
- Given /^the session is closed$/ do
60
- @session.close
61
- end
62
-
63
- Then /^creating a sender with "([^"]*)" succeeds$/ do |address|
64
- @sender = @session.create_sender "#{address}"
65
- @sender.should_not be_nil
66
- end
67
-
68
- Then /^creating a sender with an Address succeeds$/ do
69
- @sender = @session.create_receiver @address
70
- @sender.should_not be_nil
71
- end
72
-
73
- Then /^creating a receiver for a nonexistent queue raises an exception$/ do
74
- lambda {
75
- steps %Q{
76
- Then creating a receiver with "queue-#{Time.new.to_i}" succeeds
77
- }
78
- }.should raise_error
79
- end
80
-
81
- Then /^creating a receiver with "([^"]*)" succeeds$/ do |address|
82
- @receiver = @session.create_receiver "#{address}"
83
- @receiver.should_not be_nil
84
- end
85
-
86
- Then /^creating a receiver with an Address succeeds$/ do
87
- @receiver = @session.create_receiver @address
88
- @receiver.should_not be_nil
89
- end
90
-
91
- Then /^closing the session does not raise an error$/ do
92
- lambda {
93
- @session.close
94
- }.should_not raise_error
95
- end
96
-
97
- Then /^the connection for the session is in the (open|closed) state$/ do |state|
98
- @session.connection.open?.should == false if state == "closed"
99
- end
@@ -1,22 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one
3
- # or more contributor license agreements. See the NOTICE file
4
- # distributed with this work for additional information
5
- # regarding copyright ownership. The ASF licenses this file
6
- # to you under the Apache License, Version 2.0 (the
7
- # "License"); you may not use this file except in compliance
8
- # with the License. You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing,
13
- # software distributed under the License is distributed on an
14
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- # KIND, either express or implied. See the License for the
16
- # specific language governing permissions and limitations
17
- # under the License.
18
- #
19
-
20
- $LOAD_PATH.unshift(File.dirname(__FILE__) + "/../../lib")
21
-
22
- require 'qpid_messaging'
@@ -1,33 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one
3
- # or more contributor license agreements. See the NOTICE file
4
- # distributed with this work for additional information
5
- # regarding copyright ownership. The ASF licenses this file
6
- # to you under the Apache License, Version 2.0 (the
7
- # "License"); you may not use this file except in compliance
8
- # with the License. You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing,
13
- # software distributed under the License is distributed on an
14
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- # KIND, either express or implied. See the License for the
16
- # specific language governing permissions and limitations
17
- # under the License.
18
- #
19
-
20
- module Qpid
21
-
22
- module Messaging
23
-
24
- class KeyError < RuntimeError; end
25
-
26
- class SessionNameException < Exception
27
- def initialize(msg); super(msg); end
28
- end
29
-
30
- end
31
-
32
- end
33
-
@@ -1,31 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one
3
- # or more contributor license agreements. See the NOTICE file
4
- # distributed with this work for additional information
5
- # regarding copyright ownership. The ASF licenses this file
6
- # to you under the Apache License, Version 2.0 (the
7
- # "License"); you may not use this file except in compliance
8
- # with the License. You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing,
13
- # software distributed under the License is distributed on an
14
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- # KIND, either express or implied. See the License for the
16
- # specific language governing permissions and limitations
17
- # under the License.
18
- #
19
-
20
- module Qpid #:nodoc:
21
-
22
- module Version
23
-
24
- NUMBERS = [MAJOR = 0,
25
- MINOR = 20,
26
- BUILD = 2]
27
- end
28
-
29
- VERSION = Version::NUMBERS.join('.')
30
-
31
- end
@@ -1,87 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one
3
- # or more contributor license agreements. See the NOTICE file
4
- # distributed with this work for additional information
5
- # regarding copyright ownership. The ASF licenses this file
6
- # to you under the Apache License, Version 2.0 (the
7
- # "License"); you may not use this file except in compliance
8
- # with the License. You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing,
13
- # software distributed under the License is distributed on an
14
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- # KIND, either express or implied. See the License for the
16
- # specific language governing permissions and limitations
17
- # under the License.
18
- #
19
-
20
- require 'spec_helper'
21
-
22
- module Qpid
23
-
24
- module Messaging
25
-
26
- describe Address do
27
-
28
- before(:each) do
29
- @address = Qpid::Messaging::Address.new "my-name/my-subject;{create:always}"
30
- end
31
-
32
- it "stores the name, subject and options when created" do
33
- name = @address.name
34
- subject = @address.subject
35
- create = @address.options["create"]
36
-
37
- name.should == "my-name"
38
- subject.should == "my-subject"
39
- create.should == "always"
40
- end
41
-
42
- it "can update the name" do
43
- @address.name = "new-name"
44
-
45
- name = @address.name
46
-
47
- name.should == "new-name"
48
- end
49
-
50
- it "can update the subject" do
51
- @address.subject = "new-subject"
52
-
53
- subject = @address.subject
54
-
55
- subject.should == "new-subject"
56
- end
57
-
58
- it "can update the type" do
59
- @address.address_type = "routed"
60
-
61
- type = @address.address_type
62
-
63
- type.should == "routed"
64
- end
65
-
66
- it "can update the options" do
67
- @address.options[:create] = :never
68
-
69
- create = @address.options["create"]
70
-
71
- create.should == "always"
72
- end
73
-
74
- it "can return a string representation" do
75
- address = Qpid::Messaging::Address.new "foo/bar:{create:always,link:durable}"
76
- result = address.to_s
77
-
78
- result.should =~ /foo\/bar/
79
- result.should =~ /create:always/
80
- result.should =~ /link:durable/
81
- end
82
-
83
- end
84
-
85
- end
86
-
87
- end
@@ -1,191 +0,0 @@
1
- #
2
- # Licensed to the Apache Software Foundation (ASF) under one
3
- # or more contributor license agreements. See the NOTICE file
4
- # distributed with this work for additional information
5
- # regarding copyright ownership. The ASF licenses this file
6
- # to you under the Apache License, Version 2.0 (the
7
- # "License"); you may not use this file except in compliance
8
- # with the License. You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing,
13
- # software distributed under the License is distributed on an
14
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- # KIND, either express or implied. See the License for the
16
- # specific language governing permissions and limitations
17
- # under the License.
18
- #
19
-
20
- require 'spec_helper'
21
-
22
- module Qpid
23
-
24
- module Messaging
25
-
26
- describe Connection do
27
-
28
- before(:each) do
29
- @session_impl = double('Cqpid::Session')
30
- @connection_impl = double('Cqpid::Connection')
31
-
32
- @connection = Qpid::Messaging::Connection.new :impl => @connection_impl
33
- end
34
-
35
- it "accepts options on construction" do
36
- expect {
37
- connection = Qpid::Messaging::Connection.new :options => {:username => "foo"}
38
-
39
- connection.options.should include("username")
40
- }.to_not raise_error
41
- end
42
-
43
- it "returns the underlying implementation" do
44
- impl = @connection.connection_impl
45
-
46
- impl.should == @connection_impl
47
- end
48
-
49
- it "opens the connection" do
50
- @connection_impl.should_receive(:open)
51
-
52
- @connection.open
53
- end
54
-
55
- it "closes the connection" do
56
- @connection_impl.should_receive(:close)
57
-
58
- @connection.close
59
- end
60
-
61
- it "retrieves a session by name" do
62
- @connection_impl.should_receive(:getSession).
63
- with("farkle").
64
- and_return(@session_impl)
65
-
66
- session = @connection.session "farkle"
67
-
68
- session.session_impl.should == @session_impl
69
- end
70
-
71
- it "raises an error when a session name is invalid" do
72
- @connection_impl.should_receive(:getSession).
73
- with("farkle").
74
- and_raise(RuntimeError)
75
-
76
- expect {
77
- @connection.session "farkle"
78
- }.to raise_error(SessionNameException)
79
- end
80
-
81
- ####################################################################
82
- # test conditions for when a connection is not connected to a broker
83
- ####################################################################
84
- describe "when closed" do
85
-
86
- before(:each) do
87
- @connection_impl.should_receive(:isOpen).
88
- and_return(false)
89
- end
90
-
91
- it "returns false when not connected to a broker" do
92
- open = @connection.open?
93
-
94
- open.should == false
95
- end
96
-
97
- it "should raise an error when creating a session on a closed connection" do
98
- expect {
99
- @connection.create_session
100
- }.to raise_error(RuntimeError)
101
- end
102
-
103
- it "raises an error when creating a transactional session on a closed connection" do
104
- expect {
105
- @connection.create_session :transactional => true
106
- }.to raise_error(RuntimeError)
107
- end
108
-
109
- it "raises an error when creating a named session on a closed connection" do
110
- expect {
111
- @connection.create_session :name => "test", :transactional => true
112
- }.to raise_error(RuntimeError)
113
- end
114
-
115
- it "returns a null username when not connected" do
116
- username = @connection.authenticated_username
117
-
118
- username.should be_nil
119
- end
120
-
121
- end
122
-
123
- #########################################################
124
- # test conditions for when a connection must be connected
125
- #########################################################
126
- describe "when connected" do
127
-
128
- before(:each) do
129
- @connection_impl.should_receive(:isOpen).
130
- and_return(true)
131
- end
132
-
133
- it "returns true when connected to a broker" do
134
- open = @connection.open?
135
-
136
- open.should == true
137
- end
138
-
139
- it "creates a session" do
140
- @connection_impl.should_receive(:createSession).
141
- and_return(@session_impl)
142
-
143
- session = @connection.create_session
144
-
145
- session.session_impl.should == @session_impl
146
- end
147
-
148
- it "creates a named session with a name when provided" do
149
- @connection_impl.should_receive(:createSession).with("farkle").
150
- and_return(@session_impl)
151
-
152
- session = @connection.create_session :name => "farkle"
153
-
154
- session.session_impl.should == @session_impl
155
- end
156
-
157
- it "creates a transactional session when specified" do
158
- @connection_impl.should_receive(:createTransactionalSession).
159
- and_return(@session_impl)
160
-
161
- session = @connection.create_session :transactional => true
162
-
163
- session.session_impl.should == @session_impl
164
- end
165
-
166
- it "creates a named transactional session when specified" do
167
- @connection_impl.should_receive(:createTransactionalSession).
168
- with("farkle").
169
- and_return(@session_impl)
170
-
171
- session = @connection.create_session :transactional => true, :name => "farkle"
172
-
173
- session.session_impl.should == @session_impl
174
- end
175
-
176
- it "returns the authenticated username when connected" do
177
- @connection_impl.should_receive(:getAuthenticatedUsername).
178
- and_return("mcpierce")
179
-
180
- username = @connection.authenticated_username
181
-
182
- username.should == "mcpierce"
183
- end
184
-
185
- end
186
-
187
- end
188
-
189
- end
190
-
191
- end