stomp 1.3.4 → 1.3.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +11 -0
- data/README.rdoc +32 -27
- data/Rakefile +1 -1
- data/examples/amqdurasub.rb +81 -0
- data/lib/connection/netio.rb +2 -0
- data/lib/connection/utils.rb +8 -3
- data/lib/stomp/client.rb +1 -1
- data/lib/stomp/connection.rb +3 -2
- data/lib/stomp/message.rb +0 -2
- data/lib/stomp/null_logger.rb +4 -1
- data/lib/stomp/version.rb +1 -1
- data/spec/client_shared_examples.rb +17 -17
- data/spec/client_spec.rb +61 -42
- data/spec/connection_spec.rb +59 -59
- data/spec/message_spec.rb +9 -8
- data/spec/spec_helper.rb +3 -0
- data/stomp.gemspec +7 -5
- metadata +10 -7
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
== 1.3.5 20160302
|
2
|
+
|
3
|
+
* Add AMQ specific durable topic example.
|
4
|
+
* Output error to stderr only in logger is undefined.
|
5
|
+
* Move README changelog lower.
|
6
|
+
* Handle newline at start of receive buffer.
|
7
|
+
* Use Timeout::timeout instead of deprecated kernel version.
|
8
|
+
* If socket open on reconnect, close it before new open.
|
9
|
+
* On misc_err, make error messages more readable.
|
10
|
+
* Attempt to support both Rspec 2.14.1+ and 3.x.
|
11
|
+
|
1
12
|
== 1.3.4 20141202
|
2
13
|
|
3
14
|
* Change :start_timeout default to 0 (might break some clients) (#98).
|
data/README.rdoc
CHANGED
@@ -8,33 +8,6 @@ An implementation of the Stomp protocol for Ruby. See:
|
|
8
8
|
|
9
9
|
* [STOMP 1.0, 1.1, and 1.2] (http://stomp.github.com/index.html)
|
10
10
|
|
11
|
-
===New
|
12
|
-
|
13
|
-
See _CHANGELOG.rdoc_ for details.
|
14
|
-
|
15
|
-
* Gem version 1.3.4. Miscellaneous fixes, see CHANGELOG.rdoc for details.
|
16
|
-
* Gem version 1.3.3. Miscellaneous fixes, see CHANGELOG.rdoc for details.
|
17
|
-
* Gem version 1.3.2. Miscellaneous fixes, see changelog for details.
|
18
|
-
* Gem version 1.3.1. Bugfix for logging.
|
19
|
-
* Gem version 1.3.0. Added ERROR frame raising as exception, added anonymous connections, miscellaneous other fixes.
|
20
|
-
* Gem version 1.2.16. Fixed Stomp::Client to expose its connection's host parameters.
|
21
|
-
* Gem version 1.2.15. Timeout cleanup, added license info to gemspec.
|
22
|
-
* Gem version 1.2.14. Cleanup.
|
23
|
-
* Gem version 1.2.13. Stomp::Client#unreceive max_redeliveries fix.
|
24
|
-
* Gem version 1.2.12. Miscellaneous issue fixes and cleanup.
|
25
|
-
* Gem version 1.2.11. JRuby and AMQ support fixes.
|
26
|
-
* Gem version 1.2.10. Support failover from heartbeat threads.
|
27
|
-
* Gem version 1.2.9. Miscellaneous fixes and changes.
|
28
|
-
* Gem version 1.2.8. Stomp 1.1+ header codec inversion fix, test refactoring.
|
29
|
-
* Gem version 1.2.7. Stomp 1.2 support and miscellaneous fixes.
|
30
|
-
* Gem version 1.2.6. Miscellaneous fixes and changes.
|
31
|
-
* Gem version 1.2.5. Restructure. Forks with modifcations will be affected.
|
32
|
-
* Gem version 1.2.4. Stomp 1.1 heartbeat fix, autoflush capability, miscellaneous fixes.
|
33
|
-
* Gem version 1.2.3. Miscellaneous fixes, see changelog for details.
|
34
|
-
* Gem version 1.2.2. Performance and more SSL enhancements.
|
35
|
-
* Gem version 1.2.1. Full support of SSL certificates.
|
36
|
-
* Gem version 1.2.0. Support of Stomp protocol level 1.1.
|
37
|
-
|
38
11
|
===Hash Login Example Usage (this is the recommended login technique)
|
39
12
|
|
40
13
|
hash = {
|
@@ -111,6 +84,34 @@ See _CHANGELOG.rdoc_ for details.
|
|
111
84
|
p msg
|
112
85
|
end
|
113
86
|
|
87
|
+
===New
|
88
|
+
|
89
|
+
See _CHANGELOG.rdoc_ for details.
|
90
|
+
|
91
|
+
* Gem version 1.3.5. Miscellaneous fixes, see CHANGELOG.rdoc for details.
|
92
|
+
* Gem version 1.3.4. Miscellaneous fixes, see CHANGELOG.rdoc for details.
|
93
|
+
* Gem version 1.3.3. Miscellaneous fixes, see CHANGELOG.rdoc for details.
|
94
|
+
* Gem version 1.3.2. Miscellaneous fixes, see changelog for details.
|
95
|
+
* Gem version 1.3.1. Bugfix for logging.
|
96
|
+
* Gem version 1.3.0. Added ERROR frame raising as exception, added anonymous connections, miscellaneous other fixes.
|
97
|
+
* Gem version 1.2.16. Fixed Stomp::Client to expose its connection's host parameters.
|
98
|
+
* Gem version 1.2.15. Timeout cleanup, added license info to gemspec.
|
99
|
+
* Gem version 1.2.14. Cleanup.
|
100
|
+
* Gem version 1.2.13. Stomp::Client#unreceive max_redeliveries fix.
|
101
|
+
* Gem version 1.2.12. Miscellaneous issue fixes and cleanup.
|
102
|
+
* Gem version 1.2.11. JRuby and AMQ support fixes.
|
103
|
+
* Gem version 1.2.10. Support failover from heartbeat threads.
|
104
|
+
* Gem version 1.2.9. Miscellaneous fixes and changes.
|
105
|
+
* Gem version 1.2.8. Stomp 1.1+ header codec inversion fix, test refactoring.
|
106
|
+
* Gem version 1.2.7. Stomp 1.2 support and miscellaneous fixes.
|
107
|
+
* Gem version 1.2.6. Miscellaneous fixes and changes.
|
108
|
+
* Gem version 1.2.5. Restructure. Forks with modifcations will be affected.
|
109
|
+
* Gem version 1.2.4. Stomp 1.1 heartbeat fix, autoflush capability, miscellaneous fixes.
|
110
|
+
* Gem version 1.2.3. Miscellaneous fixes, see changelog for details.
|
111
|
+
* Gem version 1.2.2. Performance and more SSL enhancements.
|
112
|
+
* Gem version 1.2.1. Full support of SSL certificates.
|
113
|
+
* Gem version 1.2.0. Support of Stomp protocol level 1.1.
|
114
|
+
|
114
115
|
===Historical Information
|
115
116
|
|
116
117
|
Up until March 2009 the project was maintained and primarily developed by Brian McCallister.
|
@@ -155,4 +156,8 @@ The following people have contributed to Stomp:
|
|
155
156
|
* Glenn Roberts
|
156
157
|
* Ian Smith
|
157
158
|
* Orazio Cotroneo
|
159
|
+
* m4rCsi
|
160
|
+
* Michael Klishin
|
161
|
+
* Patrick Sharp
|
162
|
+
* Wayne Robinson
|
158
163
|
|
data/Rakefile
CHANGED
@@ -37,7 +37,7 @@ begin
|
|
37
37
|
gem.homepage = "https://github.com/stompgem/stomp"
|
38
38
|
gem.authors = ["Brian McCallister", 'Marius Mathiesen', 'Thiago Morello',
|
39
39
|
'Guy M. Allard']
|
40
|
-
gem.add_development_dependency "rspec", '>= 2.
|
40
|
+
gem.add_development_dependency "rspec", '>= 2.14.1'
|
41
41
|
gem.extra_rdoc_files = [ "README.rdoc", "CHANGELOG.rdoc", "LICENSE",
|
42
42
|
"lib/**/*.rb", "examples/**/*.rb",
|
43
43
|
"test/**/*.rb" ]
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
#
|
4
|
+
# The current require dance for different Ruby versions.
|
5
|
+
# Change this to suit your requirements.
|
6
|
+
#
|
7
|
+
if Kernel.respond_to?(:require_relative)
|
8
|
+
require_relative("./stomp11_common")
|
9
|
+
else
|
10
|
+
$LOAD_PATH << File.dirname(__FILE__)
|
11
|
+
require "stomp11_common"
|
12
|
+
end
|
13
|
+
|
14
|
+
=begin
|
15
|
+
|
16
|
+
A recent experience suggested that we might provide an example of how
|
17
|
+
to establish a "durable" topic subscription using ActiveMQ.
|
18
|
+
|
19
|
+
This code attempts to do that.
|
20
|
+
|
21
|
+
References:
|
22
|
+
|
23
|
+
http://activemq.apache.org/stomp.html
|
24
|
+
|
25
|
+
http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html
|
26
|
+
|
27
|
+
http://activemq.apache.org/how-do-durable-queues-and-topics-work.html
|
28
|
+
|
29
|
+
Specifically, locate the section titled: ActiveMQ extensions to Stomp.
|
30
|
+
|
31
|
+
There are two programmatic requirements:
|
32
|
+
|
33
|
+
1) On CONNECT, indicate to AMQ the code will be using durable topic
|
34
|
+
subscription(s).
|
35
|
+
Done by providing a "cilent-id" CONNECT header.
|
36
|
+
|
37
|
+
2) On SUBSCRIBE, indicate an AMQ specific (uniqie) subscription ID. Done
|
38
|
+
by providing a "activemq.subscriptionName" header to SUBSCRIBE.
|
39
|
+
|
40
|
+
=end
|
41
|
+
|
42
|
+
# login hash
|
43
|
+
hash = { :hosts => [
|
44
|
+
{:login => 'guest', :passcode => 'guest', :host => 'localhost', :port => 61613, :ssl => false}, # AMQ
|
45
|
+
],
|
46
|
+
:reliable => true,
|
47
|
+
:closed_check => false,
|
48
|
+
:connect_headers => {:host => "localhost", :"accept-version" => "1.0",
|
49
|
+
# Requirement 1, name should be unique.
|
50
|
+
:"client-id" => "dursubcli01", # REF the 1st AMQ link above
|
51
|
+
}
|
52
|
+
}
|
53
|
+
# The topic
|
54
|
+
topic = "/topic/topicName"
|
55
|
+
|
56
|
+
# Establish the client connection
|
57
|
+
cli = Stomp::Client.open(hash)
|
58
|
+
# SUBSCRIBE Headers
|
59
|
+
sh = { "activemq.subscriptionName" => "subname01" } # REF the 1st AMQ link above
|
60
|
+
# And the client subscribe
|
61
|
+
cli.subscribe(topic, sh) do |msg|
|
62
|
+
puts "msg: #{msg}"
|
63
|
+
end
|
64
|
+
# Wait for a very long time, usually exit via ^C
|
65
|
+
puts "Press ^C to exit"
|
66
|
+
sleep 1000000
|
67
|
+
puts "Done yet?"
|
68
|
+
|
69
|
+
=begin
|
70
|
+
At this point open your AMQ admin console (port 8161 usually), and examine
|
71
|
+
the 'subscribers' section. You should see an instance of this client
|
72
|
+
displayed in the "Active Durable Topic Subscribers" section.
|
73
|
+
|
74
|
+
When you press ^C to exit this program, return to the AMQ console and
|
75
|
+
refresh the display. (Do not restart AMQ). You should see this client in the
|
76
|
+
"Offline Durable Topic Subscribers" section.
|
77
|
+
=end
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
|
data/lib/connection/netio.rb
CHANGED
@@ -31,6 +31,8 @@ module Stomp
|
|
31
31
|
end
|
32
32
|
#
|
33
33
|
return nil if line.nil?
|
34
|
+
#An extra \n at the beginning of the frame, possibly not caught by is_ready?
|
35
|
+
line = '' if line == "\n"
|
34
36
|
# p [ "wiredatain_01", line ]
|
35
37
|
line = _normalize_line_end(line) if @protocol >= Stomp::SPL_12
|
36
38
|
# If the reading hangs for more than X seconds, abort the parsing process.
|
data/lib/connection/utils.rb
CHANGED
@@ -245,9 +245,13 @@ module Stomp
|
|
245
245
|
@failure = $!
|
246
246
|
raise unless @reliable
|
247
247
|
errstr = "receive failed: #{$!}"
|
248
|
-
unless slog(:on_miscerr, log_params, "
|
249
|
-
$stderr.print
|
250
|
-
|
248
|
+
unless slog(:on_miscerr, log_params, "es1_oldrecv: " + errstr)
|
249
|
+
$stderr.print "\non_miscerr\n"
|
250
|
+
$stderr.print log_params.inspect
|
251
|
+
$stderr.print "\n"
|
252
|
+
$stderr.print "es2_oldrecv: " + errstr
|
253
|
+
$stderr.print "\n"
|
254
|
+
end
|
251
255
|
|
252
256
|
# !!! This initiates a re-connect !!!
|
253
257
|
_reconn_prep()
|
@@ -257,6 +261,7 @@ module Stomp
|
|
257
261
|
|
258
262
|
# _reconn_prep prepares for a reconnect retry
|
259
263
|
def _reconn_prep()
|
264
|
+
close_socket()
|
260
265
|
if @parameters
|
261
266
|
change_host()
|
262
267
|
end
|
data/lib/stomp/client.rb
CHANGED
data/lib/stomp/connection.rb
CHANGED
@@ -442,8 +442,9 @@ module Stomp
|
|
442
442
|
super_result = __old_receive()
|
443
443
|
if super_result.nil? && @reliable && !closed?
|
444
444
|
errstr = "connection.receive returning EOF as nil - resetting connection.\n"
|
445
|
-
slog(:on_miscerr, log_params, "es_recv: " + errstr)
|
446
|
-
|
445
|
+
unless slog(:on_miscerr, log_params, "es_recv: " + errstr)
|
446
|
+
$stderr.print errstr
|
447
|
+
end
|
447
448
|
|
448
449
|
# !!! This initiates a re-connect !!!
|
449
450
|
# The call to __old_receive() will in turn call socket(). Before
|
data/lib/stomp/message.rb
CHANGED
@@ -102,8 +102,6 @@ module Stomp
|
|
102
102
|
"<Stomp::Message headers=#{headers.inspect} body='#{body}' command='#{command}' >"
|
103
103
|
end
|
104
104
|
|
105
|
-
private
|
106
|
-
|
107
105
|
# is_blank? tests if a data value is nil or empty.
|
108
106
|
def is_blank?(value)
|
109
107
|
value.nil? || (value.respond_to?(:empty?) && value.empty?)
|
data/lib/stomp/null_logger.rb
CHANGED
@@ -3,8 +3,11 @@
|
|
3
3
|
module Stomp
|
4
4
|
class NullLogger
|
5
5
|
def on_miscerr(parms, error_msg)
|
6
|
-
$stderr.print
|
6
|
+
$stderr.print "\non_miscerr\n"
|
7
|
+
$stderr.print parms.inspect
|
8
|
+
$stderr.print "\n"
|
7
9
|
$stderr.print error_msg
|
10
|
+
$stderr.print "\n"
|
8
11
|
end
|
9
12
|
|
10
13
|
def on_connecting(parms); end
|
data/lib/stomp/version.rb
CHANGED
@@ -11,58 +11,58 @@ shared_examples_for "standard Client" do
|
|
11
11
|
|
12
12
|
describe "the closed? method" do
|
13
13
|
it "should be false when the connection is open" do
|
14
|
-
@mock_connection.
|
15
|
-
@client.closed
|
14
|
+
allow(@mock_connection).to receive(:closed?).and_return(false)
|
15
|
+
expect(@client.closed?).to eq(false)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "should be true when the connection is closed" do
|
19
|
-
@mock_connection.
|
20
|
-
@client.closed
|
19
|
+
allow(@mock_connection).to receive(:closed?).and_return(true)
|
20
|
+
expect(@client.closed?).to eq(true)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
describe "the open? method" do
|
25
25
|
it "should be true when the connection is open" do
|
26
|
-
@mock_connection.
|
27
|
-
@client.open
|
26
|
+
allow(@mock_connection).to receive(:open?).and_return(true)
|
27
|
+
expect(@client.open?).to eq(true)
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should be false when the connection is closed" do
|
31
|
-
@mock_connection.
|
32
|
-
@client.open
|
31
|
+
allow(@mock_connection).to receive(:open?).and_return(false)
|
32
|
+
expect(@client.open?).to eq(false)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
describe "the subscribe method" do
|
37
37
|
|
38
38
|
before(:each) do
|
39
|
-
@mock_connection.
|
39
|
+
allow(@mock_connection).to receive(:subscribe).and_return(true)
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should raise RuntimeError if not passed a block" do
|
43
|
-
|
43
|
+
expect {
|
44
44
|
@client.subscribe(@destination)
|
45
|
-
}.
|
45
|
+
}.to raise_error(RuntimeError)
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should not raise an error when passed a block" do
|
49
|
-
|
49
|
+
expect {
|
50
50
|
@client.subscribe(@destination) {|msg| received = msg}
|
51
|
-
}.
|
51
|
+
}.not_to raise_error
|
52
52
|
end
|
53
53
|
|
54
54
|
it "should raise RuntimeError on duplicate subscriptions" do
|
55
|
-
|
55
|
+
expect {
|
56
56
|
@client.subscribe(@destination)
|
57
57
|
@client.subscribe(@destination)
|
58
|
-
}.
|
58
|
+
}.to raise_error(RuntimeError)
|
59
59
|
end
|
60
60
|
|
61
61
|
it "should raise RuntimeError with duplicate id headers" do
|
62
|
-
|
62
|
+
expect {
|
63
63
|
@client.subscribe(@destination, {'id' => 'abcdef'})
|
64
64
|
@client.subscribe(@destination, {'id' => 'abcdef'})
|
65
|
-
}.
|
65
|
+
}.to raise_error(RuntimeError)
|
66
66
|
end
|
67
67
|
|
68
68
|
end
|
data/spec/client_spec.rb
CHANGED
@@ -8,9 +8,9 @@ describe Stomp::Client do
|
|
8
8
|
let(:null_logger) { double("mock Stomp::NullLogger") }
|
9
9
|
|
10
10
|
before(:each) do
|
11
|
-
Stomp::NullLogger.
|
11
|
+
allow(Stomp::NullLogger).to receive(:new).and_return(null_logger)
|
12
12
|
@mock_connection = double('connection', :autoflush= => true)
|
13
|
-
Stomp::Connection.
|
13
|
+
allow(Stomp::Connection).to receive(:new).and_return(@mock_connection)
|
14
14
|
end
|
15
15
|
|
16
16
|
describe "(created with no params)" do
|
@@ -20,15 +20,15 @@ describe Stomp::Client do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should not return any errors" do
|
23
|
-
|
23
|
+
expect {
|
24
24
|
@client = Stomp::Client.new
|
25
|
-
}.
|
25
|
+
}.not_to raise_error
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should not return any errors when created with the open constructor" do
|
29
|
-
|
29
|
+
expect {
|
30
30
|
@client = Stomp::Client.open
|
31
|
-
}.
|
31
|
+
}.not_to raise_error
|
32
32
|
end
|
33
33
|
|
34
34
|
it_should_behave_like "standard Client"
|
@@ -43,34 +43,53 @@ describe Stomp::Client do
|
|
43
43
|
:port => 12345,
|
44
44
|
:host => 'dummy host',
|
45
45
|
:ssl => 'dummy ssl')
|
46
|
-
Stomp::Connection.
|
46
|
+
allow(Stomp::Connection).to receive(:new).and_return(@mock_connection)
|
47
47
|
@client = Stomp::Client.new
|
48
48
|
end
|
49
49
|
|
50
50
|
describe 'it should delegate parameters to its connection' do
|
51
51
|
subject { @client }
|
52
52
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
53
|
+
describe '#login' do
|
54
|
+
subject { super().login }
|
55
|
+
it { should eql 'dummy login' }
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '#passcode' do
|
59
|
+
subject { super().passcode }
|
60
|
+
it { should eql 'dummy passcode' }
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#port' do
|
64
|
+
subject { super().port }
|
65
|
+
it { should eql 12345 }
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#host' do
|
69
|
+
subject { super().host }
|
70
|
+
it { should eql 'dummy host' }
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#ssl' do
|
74
|
+
subject { super().ssl }
|
75
|
+
it { should eql 'dummy ssl' }
|
76
|
+
end
|
58
77
|
end
|
59
78
|
end
|
60
79
|
|
61
80
|
describe "(autoflush)" do
|
62
81
|
it "should delegate to the connection for accessing the autoflush property" do
|
63
|
-
@mock_connection.
|
82
|
+
expect(@mock_connection).to receive(:autoflush)
|
64
83
|
Stomp::Client.new.autoflush
|
65
84
|
end
|
66
85
|
|
67
86
|
it "should delegate to the connection for setting the autoflush property" do
|
68
|
-
@mock_connection.
|
87
|
+
expect(@mock_connection).to receive(:autoflush=).with(true)
|
69
88
|
Stomp::Client.new.autoflush = true
|
70
89
|
end
|
71
90
|
|
72
91
|
it "should set the autoflush property on the connection when passing in autoflush as a parameter to the Stomp::Client" do
|
73
|
-
@mock_connection.
|
92
|
+
expect(@mock_connection).to receive(:autoflush=).with(true)
|
74
93
|
Stomp::Client.new("login", "password", 'localhost', 61613, false, true)
|
75
94
|
end
|
76
95
|
end
|
@@ -78,33 +97,33 @@ describe Stomp::Client do
|
|
78
97
|
describe "(created with invalid params)" do
|
79
98
|
|
80
99
|
it "should return ArgumentError if port is nil" do
|
81
|
-
|
100
|
+
expect {
|
82
101
|
@client = Stomp::Client.new('login', 'passcode', 'localhost', nil)
|
83
|
-
}.
|
102
|
+
}.to raise_error(ArgumentError)
|
84
103
|
end
|
85
104
|
|
86
105
|
it "should return ArgumentError if port is < 1" do
|
87
|
-
|
106
|
+
expect {
|
88
107
|
@client = Stomp::Client.new('login', 'passcode', 'localhost', 0)
|
89
|
-
}.
|
108
|
+
}.to raise_error(ArgumentError)
|
90
109
|
end
|
91
110
|
|
92
111
|
it "should return ArgumentError if port is > 65535" do
|
93
|
-
|
112
|
+
expect {
|
94
113
|
@client = Stomp::Client.new('login', 'passcode', 'localhost', 65536)
|
95
|
-
}.
|
114
|
+
}.to raise_error(ArgumentError)
|
96
115
|
end
|
97
116
|
|
98
117
|
it "should return ArgumentError if port is empty" do
|
99
|
-
|
118
|
+
expect {
|
100
119
|
@client = Stomp::Client.new('login', 'passcode', 'localhost', '')
|
101
|
-
}.
|
120
|
+
}.to raise_error(ArgumentError)
|
102
121
|
end
|
103
122
|
|
104
123
|
it "should return ArgumentError if reliable is something other than true or false" do
|
105
|
-
|
124
|
+
expect {
|
106
125
|
@client = Stomp::Client.new('login', 'passcode', 'localhost', '12345', 'foo')
|
107
|
-
}.
|
126
|
+
}.to raise_error(ArgumentError)
|
108
127
|
end
|
109
128
|
|
110
129
|
end
|
@@ -116,7 +135,7 @@ describe Stomp::Client do
|
|
116
135
|
end
|
117
136
|
|
118
137
|
it "should properly parse the URL provided" do
|
119
|
-
Stomp::Connection.
|
138
|
+
expect(Stomp::Connection).to receive(:new).with(:hosts => [{:login => 'testlogin',
|
120
139
|
:passcode => 'testpassword',
|
121
140
|
:host => 'localhost',
|
122
141
|
:port => 12345}],
|
@@ -135,7 +154,7 @@ describe Stomp::Client do
|
|
135
154
|
end
|
136
155
|
|
137
156
|
it "should properly parse the URL provided" do
|
138
|
-
Stomp::Connection.
|
157
|
+
expect(Stomp::Connection).to receive(:new).with(:hosts => [{:login => '',
|
139
158
|
:passcode => '',
|
140
159
|
:host => 'foobar',
|
141
160
|
:port => 12345}],
|
@@ -155,7 +174,7 @@ describe Stomp::Client do
|
|
155
174
|
end
|
156
175
|
|
157
176
|
it "should properly parse the URL provided" do
|
158
|
-
Stomp::Connection.
|
177
|
+
expect(Stomp::Connection).to receive(:new).with(:hosts => [{:login => '',
|
159
178
|
:passcode => '',
|
160
179
|
:host => 'foo-bar',
|
161
180
|
:port => 12345}],
|
@@ -175,7 +194,7 @@ describe Stomp::Client do
|
|
175
194
|
end
|
176
195
|
|
177
196
|
it "should properly parse the URL provided" do
|
178
|
-
Stomp::Connection.
|
197
|
+
expect(Stomp::Connection).to receive(:new).with(:hosts => [{:login => 'test-login',
|
179
198
|
:passcode => 'testpasscode',
|
180
199
|
:host => 'foobar',
|
181
200
|
:port => 12345}],
|
@@ -195,7 +214,7 @@ describe Stomp::Client do
|
|
195
214
|
end
|
196
215
|
|
197
216
|
it "should properly parse the URL provided" do
|
198
|
-
Stomp::Connection.
|
217
|
+
expect(Stomp::Connection).to receive(:new).with(:hosts => [{:login => 'test-login',
|
199
218
|
:passcode => 'testpasscode',
|
200
219
|
:host => 'foo-bar',
|
201
220
|
:port => 12345}],
|
@@ -218,7 +237,7 @@ describe Stomp::Client do
|
|
218
237
|
end
|
219
238
|
|
220
239
|
it "should properly parse the URL provided" do
|
221
|
-
Stomp::Connection.
|
240
|
+
expect(Stomp::Connection).to receive(:new).with(:hosts => [{:login => '',
|
222
241
|
:passcode => '',
|
223
242
|
:host => 'host.foobar.com',
|
224
243
|
:port => 12345}],
|
@@ -238,7 +257,7 @@ describe Stomp::Client do
|
|
238
257
|
end
|
239
258
|
|
240
259
|
it "should properly parse the URL provided" do
|
241
|
-
Stomp::Connection.
|
260
|
+
expect(Stomp::Connection).to receive(:new).with(:hosts => [{:login => 'testlogin',
|
242
261
|
:passcode => 'testpasscode',
|
243
262
|
:host => 'host.foobar.com',
|
244
263
|
:port => 12345}],
|
@@ -275,10 +294,10 @@ describe Stomp::Client do
|
|
275
294
|
|
276
295
|
@parameters.merge!({:logger => null_logger})
|
277
296
|
|
278
|
-
Stomp::Connection.
|
297
|
+
expect(Stomp::Connection).to receive(:new).with(@parameters)
|
279
298
|
|
280
299
|
client = Stomp::Client.new(url)
|
281
|
-
client.parameters.
|
300
|
+
expect(client.parameters).to eq(@parameters)
|
282
301
|
end
|
283
302
|
|
284
303
|
it "should properly parse a URL with failover:" do
|
@@ -292,10 +311,10 @@ describe Stomp::Client do
|
|
292
311
|
|
293
312
|
@parameters.merge!({:logger => null_logger})
|
294
313
|
|
295
|
-
Stomp::Connection.
|
314
|
+
expect(Stomp::Connection).to receive(:new).with(@parameters)
|
296
315
|
|
297
316
|
client = Stomp::Client.new(url)
|
298
|
-
client.parameters.
|
317
|
+
expect(client.parameters).to eq(@parameters)
|
299
318
|
end
|
300
319
|
|
301
320
|
it "should properly parse a URL without user and password" do
|
@@ -308,10 +327,10 @@ describe Stomp::Client do
|
|
308
327
|
|
309
328
|
@parameters.merge!({:logger => null_logger})
|
310
329
|
|
311
|
-
Stomp::Connection.
|
330
|
+
expect(Stomp::Connection).to receive(:new).with(@parameters)
|
312
331
|
|
313
332
|
client = Stomp::Client.new(url)
|
314
|
-
client.parameters.
|
333
|
+
expect(client.parameters).to eq(@parameters)
|
315
334
|
end
|
316
335
|
|
317
336
|
it "should properly parse a URL with user and/or password blank" do
|
@@ -324,10 +343,10 @@ describe Stomp::Client do
|
|
324
343
|
|
325
344
|
@parameters.merge!({:logger => null_logger})
|
326
345
|
|
327
|
-
Stomp::Connection.
|
346
|
+
expect(Stomp::Connection).to receive(:new).with(@parameters)
|
328
347
|
|
329
348
|
client = Stomp::Client.new(url)
|
330
|
-
client.parameters.
|
349
|
+
expect(client.parameters).to eq(@parameters)
|
331
350
|
end
|
332
351
|
|
333
352
|
it "should properly parse a URL with the options query" do
|
@@ -355,10 +374,10 @@ describe Stomp::Client do
|
|
355
374
|
|
356
375
|
@parameters.merge!({:logger => null_logger})
|
357
376
|
|
358
|
-
Stomp::Connection.
|
377
|
+
expect(Stomp::Connection).to receive(:new).with(@parameters)
|
359
378
|
|
360
379
|
client = Stomp::Client.new(url)
|
361
|
-
client.parameters.
|
380
|
+
expect(client.parameters).to eq(@parameters)
|
362
381
|
end
|
363
382
|
|
364
383
|
end
|
data/spec/connection_spec.rb
CHANGED
@@ -43,8 +43,8 @@ describe Stomp::Connection do
|
|
43
43
|
# clone() does a shallow copy, we want a deep one so we can garantee the hosts order
|
44
44
|
normal_parameters = Marshal::load(Marshal::dump(@parameters))
|
45
45
|
|
46
|
-
@tcp_socket =
|
47
|
-
TCPSocket.
|
46
|
+
@tcp_socket = double(:tcp_socket, :close => nil, :puts => nil, :write => nil, :setsockopt => nil, :flush => true)
|
47
|
+
allow(TCPSocket).to receive(:open).and_return @tcp_socket
|
48
48
|
@connection = Stomp::Connection.new(normal_parameters)
|
49
49
|
end
|
50
50
|
|
@@ -68,13 +68,13 @@ describe Stomp::Connection do
|
|
68
68
|
}
|
69
69
|
|
70
70
|
it "should call flush on the socket when autoflush is true" do
|
71
|
-
@tcp_socket.
|
71
|
+
expect(@tcp_socket).to receive(:flush)
|
72
72
|
@connection = Stomp::Connection.new(parameter_hash.merge("autoflush" => true))
|
73
73
|
@connection.publish "/queue", "message", :suppress_content_length => false
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should not call flush on the socket when autoflush is false" do
|
77
|
-
@tcp_socket.
|
77
|
+
expect(@tcp_socket).not_to receive(:flush)
|
78
78
|
@connection = Stomp::Connection.new(parameter_hash)
|
79
79
|
@connection.publish "/queue", "message", :suppress_content_length => false
|
80
80
|
end
|
@@ -108,61 +108,61 @@ describe Stomp::Connection do
|
|
108
108
|
}
|
109
109
|
|
110
110
|
@connection = Stomp::Connection.new(used_hash)
|
111
|
-
@connection.instance_variable_get(:@parameters).
|
111
|
+
expect(@connection.instance_variable_get(:@parameters)).to eq(@parameters)
|
112
112
|
end
|
113
113
|
|
114
114
|
it "should start with first host in array" do
|
115
|
-
@connection.instance_variable_get(:@host).
|
115
|
+
expect(@connection.instance_variable_get(:@host)).to eq("localhost")
|
116
116
|
end
|
117
117
|
|
118
118
|
it "should change host to next one with randomize false" do
|
119
119
|
@connection.send(:change_host) # use .send(:name) to test a private method!
|
120
|
-
@connection.instance_variable_get(:@host).
|
120
|
+
expect(@connection.instance_variable_get(:@host)).to eq("remotehost")
|
121
121
|
end
|
122
122
|
|
123
123
|
it "should use default port (61613) if none is given" do
|
124
124
|
hash = {:hosts => [{:login => "login2", :passcode => "passcode2", :host => "remotehost", :ssl => false}]}
|
125
125
|
@connection = Stomp::Connection.new hash
|
126
|
-
@connection.instance_variable_get(:@port).
|
126
|
+
expect(@connection.instance_variable_get(:@port)).to eq(61613)
|
127
127
|
end
|
128
128
|
|
129
129
|
context "should be able pass reliable as part of hash" do
|
130
130
|
it "should be false if reliable is set to false" do
|
131
131
|
hash = @parameters.merge({:reliable => false })
|
132
132
|
connection = Stomp::Connection.new(hash)
|
133
|
-
connection.instance_variable_get(:@reliable).
|
133
|
+
expect(connection.instance_variable_get(:@reliable)).to be false
|
134
134
|
end
|
135
135
|
|
136
136
|
it "should be true if reliable is set to true" do
|
137
137
|
hash = @parameters.merge({:reliable => true })
|
138
138
|
connection = Stomp::Connection.new(hash)
|
139
|
-
connection.instance_variable_get(:@reliable).
|
139
|
+
expect(connection.instance_variable_get(:@reliable)).to be true
|
140
140
|
end
|
141
141
|
|
142
142
|
it "should be true if reliable is not set" do
|
143
143
|
connection = Stomp::Connection.new(@parameters)
|
144
|
-
connection.instance_variable_get(:@reliable).
|
144
|
+
expect(connection.instance_variable_get(:@reliable)).to be true
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
148
|
context "when dealing with content-length header" do
|
149
149
|
it "should not suppress it when receiving :suppress_content_length => false" do
|
150
|
-
@tcp_socket.
|
150
|
+
expect(@tcp_socket).to receive(:puts).with("content-length:7")
|
151
151
|
@connection.publish "/queue", "message", :suppress_content_length => false
|
152
152
|
end
|
153
153
|
|
154
154
|
it "should not suppress it when :suppress_content_length is nil" do
|
155
|
-
@tcp_socket.
|
155
|
+
expect(@tcp_socket).to receive(:puts).with("content-length:7")
|
156
156
|
@connection.publish "/queue", "message"
|
157
157
|
end
|
158
158
|
|
159
159
|
it "should suppress it when receiving :suppress_content_length => true" do
|
160
|
-
@tcp_socket.
|
160
|
+
expect(@tcp_socket).not_to receive(:puts).with("content-length:7")
|
161
161
|
@connection.publish "/queue", "message", :suppress_content_length => true
|
162
162
|
end
|
163
163
|
|
164
164
|
it "should get the correct byte length when dealing with Unicode characters" do
|
165
|
-
@tcp_socket.
|
165
|
+
expect(@tcp_socket).to receive(:puts).with("content-length:18")
|
166
166
|
@connection.publish "/queue", "сообщение" # 'сообщение' is 'message' in Russian
|
167
167
|
end
|
168
168
|
end
|
@@ -184,31 +184,31 @@ describe Stomp::Connection do
|
|
184
184
|
end
|
185
185
|
|
186
186
|
it "should use a transaction" do
|
187
|
-
@connection.
|
188
|
-
@connection.
|
187
|
+
expect(@connection).to receive(:begin).with(@transaction_id).ordered
|
188
|
+
expect(@connection).to receive(:commit).with(@transaction_id).ordered
|
189
189
|
@connection.unreceive @message
|
190
190
|
end
|
191
191
|
|
192
192
|
it "should acknowledge the original message if ack mode is client" do
|
193
|
-
@connection.
|
193
|
+
expect(@connection).to receive(:ack).with(@message.headers["message-id"], :transaction => @transaction_id)
|
194
194
|
@connection.subscribe(@message.headers["destination"], :ack => "client")
|
195
195
|
@connection.unreceive @message
|
196
196
|
end
|
197
197
|
|
198
198
|
it "should acknowledge the original message if forced" do
|
199
199
|
@connection.subscribe(@message.headers["destination"])
|
200
|
-
@connection.
|
200
|
+
expect(@connection).to receive(:ack)
|
201
201
|
@connection.unreceive(@message, :force_client_ack => true)
|
202
202
|
end
|
203
203
|
|
204
204
|
it "should not acknowledge the original message if ack mode is not client or it did not subscribe to the queue" do
|
205
205
|
@connection.subscribe(@message.headers["destination"], :ack => "client")
|
206
|
-
@connection.
|
206
|
+
expect(@connection).to receive(:ack)
|
207
207
|
@connection.unreceive @message
|
208
208
|
|
209
209
|
# At this time the message headers are symbolized
|
210
210
|
@connection.unsubscribe(@message.headers[:destination])
|
211
|
-
@connection.
|
211
|
+
expect(@connection).not_to receive(:ack)
|
212
212
|
@connection.unreceive @message
|
213
213
|
@connection.subscribe(@message.headers[:destination], :ack => "individual")
|
214
214
|
@connection.unreceive @message
|
@@ -216,14 +216,14 @@ describe Stomp::Connection do
|
|
216
216
|
|
217
217
|
it "should send the message back to the queue it came" do
|
218
218
|
@connection.subscribe(@message.headers["destination"], :ack => "client")
|
219
|
-
@connection.
|
219
|
+
expect(@connection).to receive(:publish).with(@message.headers["destination"], @message.body, @retry_headers)
|
220
220
|
@connection.unreceive @message
|
221
221
|
end
|
222
222
|
|
223
223
|
it "should increment the retry_count header" do
|
224
224
|
@message.headers["retry_count"] = 4
|
225
225
|
@connection.unreceive @message
|
226
|
-
@message.headers[:retry_count].
|
226
|
+
expect(@message.headers[:retry_count]).to eq(5)
|
227
227
|
end
|
228
228
|
|
229
229
|
it "should not send the message to the dead letter queue as persistent if retry_count is less than max redeliveries" do
|
@@ -233,7 +233,7 @@ describe Stomp::Connection do
|
|
233
233
|
@message.headers["retry_count"] = max_redeliveries - 1
|
234
234
|
transaction_id = "transaction-#{@message.headers["message-id"]}-#{@message.headers["retry_count"]}"
|
235
235
|
@retry_headers = @retry_headers.merge :transaction => transaction_id, :retry_count => @message.headers["retry_count"] + 1
|
236
|
-
@connection.
|
236
|
+
expect(@connection).to receive(:publish).with(@message.headers["destination"], @message.body, @retry_headers)
|
237
237
|
@connection.unreceive @message, :dead_letter_queue => dead_letter_queue, :max_redeliveries => max_redeliveries
|
238
238
|
end
|
239
239
|
|
@@ -245,14 +245,14 @@ describe Stomp::Connection do
|
|
245
245
|
@message.headers["retry_count"] = max_redeliveries
|
246
246
|
transaction_id = "transaction-#{@message.headers["message-id"]}-#{@message.headers["retry_count"]}"
|
247
247
|
@retry_headers = @retry_headers.merge :persistent => true, :transaction => transaction_id, :retry_count => @message.headers["retry_count"] + 1, :original_destination=> @message.headers["destination"]
|
248
|
-
@connection.
|
248
|
+
expect(@connection).to receive(:publish).with(dead_letter_queue, @message.body, @retry_headers)
|
249
249
|
@connection.unreceive @message, :dead_letter_queue => dead_letter_queue, :max_redeliveries => max_redeliveries
|
250
250
|
end
|
251
251
|
|
252
252
|
it "should rollback the transaction and raise the exception if happened during transaction" do
|
253
|
-
@connection.
|
254
|
-
@connection.
|
255
|
-
|
253
|
+
expect(@connection).to receive(:publish).and_raise "Error"
|
254
|
+
expect(@connection).to receive(:abort).with(@transaction_id)
|
255
|
+
expect {@connection.unreceive @message}.to raise_error("Error")
|
256
256
|
end
|
257
257
|
|
258
258
|
end
|
@@ -260,9 +260,9 @@ describe Stomp::Connection do
|
|
260
260
|
describe "when sending a nil message body" do
|
261
261
|
it "should should not raise an error" do
|
262
262
|
@connection = Stomp::Connection.new("niluser", "nilpass", "localhost", 61613)
|
263
|
-
|
263
|
+
expect {
|
264
264
|
@connection.publish("/queue/nilq", nil)
|
265
|
-
}.
|
265
|
+
}.not_to raise_error
|
266
266
|
end
|
267
267
|
end
|
268
268
|
|
@@ -284,55 +284,55 @@ describe Stomp::Connection do
|
|
284
284
|
|
285
285
|
before(:each) do
|
286
286
|
ssl_parameters = {:hosts => [{:login => "login2", :passcode => "passcode2", :host => "remotehost", :ssl => true}]}
|
287
|
-
@ssl_socket =
|
287
|
+
@ssl_socket = double(:ssl_socket, :puts => nil, :write => nil,
|
288
288
|
:setsockopt => nil, :flush => true)
|
289
|
-
@ssl_socket.
|
289
|
+
allow(@ssl_socket).to receive(:sync_close=)
|
290
290
|
|
291
|
-
TCPSocket.
|
292
|
-
OpenSSL::SSL::SSLSocket.
|
293
|
-
@ssl_socket.
|
291
|
+
expect(TCPSocket).to receive(:open).and_return @tcp_socket
|
292
|
+
expect(OpenSSL::SSL::SSLSocket).to receive(:new).and_return(@ssl_socket)
|
293
|
+
expect(@ssl_socket).to receive(:connect)
|
294
294
|
|
295
295
|
@connection = Stomp::Connection.new ssl_parameters
|
296
296
|
end
|
297
297
|
|
298
298
|
it "should use ssl socket if ssl use is enabled" do
|
299
|
-
@connection.instance_variable_get(:@socket).
|
299
|
+
expect(@connection.instance_variable_get(:@socket)).to eq(@ssl_socket)
|
300
300
|
end
|
301
301
|
|
302
302
|
it "should use default port for ssl (61612) if none is given" do
|
303
|
-
@connection.instance_variable_get(:@port).
|
303
|
+
expect(@connection.instance_variable_get(:@port)).to eq(61612)
|
304
304
|
end
|
305
305
|
|
306
306
|
end
|
307
307
|
|
308
308
|
describe "when called to increase reconnect delay" do
|
309
309
|
it "should exponentialy increase when use_exponential_back_off is true" do
|
310
|
-
@connection.send(:increase_reconnect_delay).
|
311
|
-
@connection.send(:increase_reconnect_delay).
|
312
|
-
@connection.send(:increase_reconnect_delay).
|
310
|
+
expect(@connection.send(:increase_reconnect_delay)).to eq(0.02)
|
311
|
+
expect(@connection.send(:increase_reconnect_delay)).to eq(0.04)
|
312
|
+
expect(@connection.send(:increase_reconnect_delay)).to eq(0.08)
|
313
313
|
end
|
314
314
|
it "should not increase when use_exponential_back_off is false" do
|
315
315
|
@parameters[:use_exponential_back_off] = false
|
316
316
|
@connection = Stomp::Connection.new(@parameters)
|
317
|
-
@connection.send(:increase_reconnect_delay).
|
318
|
-
@connection.send(:increase_reconnect_delay).
|
317
|
+
expect(@connection.send(:increase_reconnect_delay)).to eq(0.01)
|
318
|
+
expect(@connection.send(:increase_reconnect_delay)).to eq(0.01)
|
319
319
|
end
|
320
320
|
it "should not increase when max_reconnect_delay is reached" do
|
321
321
|
@parameters[:initial_reconnect_delay] = 8.0
|
322
322
|
@connection = Stomp::Connection.new(@parameters)
|
323
|
-
@connection.send(:increase_reconnect_delay).
|
324
|
-
@connection.send(:increase_reconnect_delay).
|
323
|
+
expect(@connection.send(:increase_reconnect_delay)).to eq(16.0)
|
324
|
+
expect(@connection.send(:increase_reconnect_delay)).to eq(30.0)
|
325
325
|
end
|
326
326
|
|
327
327
|
it "should change to next host on socket error" do
|
328
328
|
@connection.instance_variable_set(:@failure, "some exception")
|
329
329
|
#retries the same host
|
330
|
-
TCPSocket.
|
330
|
+
expect(TCPSocket).to receive(:open).and_raise "exception"
|
331
331
|
#tries the new host
|
332
|
-
TCPSocket.
|
332
|
+
expect(TCPSocket).to receive(:open).and_return @tcp_socket
|
333
333
|
|
334
334
|
@connection.send(:socket)
|
335
|
-
@connection.instance_variable_get(:@host).
|
335
|
+
expect(@connection.instance_variable_get(:@host)).to eq("remotehost")
|
336
336
|
end
|
337
337
|
|
338
338
|
it "should use default options if those where not given" do
|
@@ -373,7 +373,7 @@ describe Stomp::Connection do
|
|
373
373
|
}
|
374
374
|
|
375
375
|
@connection = Stomp::Connection.new(used_hash)
|
376
|
-
@connection.instance_variable_get(:@parameters).
|
376
|
+
expect(@connection.instance_variable_get(:@parameters)).to eq(expected_hash)
|
377
377
|
end
|
378
378
|
|
379
379
|
it "should use the given options instead of default ones" do
|
@@ -415,7 +415,7 @@ describe Stomp::Connection do
|
|
415
415
|
received_hash.delete(:hosts)
|
416
416
|
used_hash.delete(:hosts)
|
417
417
|
|
418
|
-
received_hash.
|
418
|
+
expect(received_hash).to eq(used_hash)
|
419
419
|
end
|
420
420
|
|
421
421
|
end
|
@@ -424,12 +424,12 @@ describe Stomp::Connection do
|
|
424
424
|
|
425
425
|
describe "when closing a socket" do
|
426
426
|
it "should close the tcp connection" do
|
427
|
-
@tcp_socket.
|
428
|
-
@connection.__send__(:close_socket).
|
427
|
+
expect(@tcp_socket).to receive(:close)
|
428
|
+
expect(@connection.__send__(:close_socket)).to be true # Use Object.__send__
|
429
429
|
end
|
430
430
|
it "should ignore exceptions" do
|
431
|
-
@tcp_socket.
|
432
|
-
@connection.__send__(:close_socket).
|
431
|
+
expect(@tcp_socket).to receive(:close).and_raise "exception"
|
432
|
+
expect(@connection.__send__(:close_socket)).to be true # Use Object.__send__
|
433
433
|
end
|
434
434
|
end
|
435
435
|
|
@@ -438,11 +438,11 @@ describe Stomp::Connection do
|
|
438
438
|
host = @parameters[:hosts][0]
|
439
439
|
@connection = Stomp::Connection.new(host[:login], host[:passcode], host[:host], host[:port], reliable = true, 5, connect_headers = {})
|
440
440
|
@connection.instance_variable_set(:@connection_attempts, 10000)
|
441
|
-
@connection.send(:max_reconnect_attempts?).
|
441
|
+
expect(@connection.send(:max_reconnect_attempts?)).to be false
|
442
442
|
end
|
443
443
|
it "should return false if max_reconnect_attempts = 0" do
|
444
444
|
@connection.instance_variable_set(:@connection_attempts, 10000)
|
445
|
-
@connection.send(:max_reconnect_attempts?).
|
445
|
+
expect(@connection.send(:max_reconnect_attempts?)).to be false
|
446
446
|
end
|
447
447
|
it "should return true if connection attempts > max_reconnect_attempts" do
|
448
448
|
limit = 10000
|
@@ -450,17 +450,17 @@ describe Stomp::Connection do
|
|
450
450
|
@connection = Stomp::Connection.new(@parameters)
|
451
451
|
|
452
452
|
@connection.instance_variable_set(:@connection_attempts, limit-1)
|
453
|
-
@connection.send(:max_reconnect_attempts?).
|
453
|
+
expect(@connection.send(:max_reconnect_attempts?)).to be false
|
454
454
|
|
455
455
|
@connection.instance_variable_set(:@connection_attempts, limit)
|
456
|
-
@connection.send(:max_reconnect_attempts?).
|
456
|
+
expect(@connection.send(:max_reconnect_attempts?)).to be true
|
457
457
|
end
|
458
458
|
# These should be raised for the user to deal with
|
459
459
|
it "should not rescue MaxReconnectAttempts" do
|
460
460
|
@connection = Stomp::Connection.new(@parameters)
|
461
|
-
@connection.
|
461
|
+
allow(@connection).to receive(:socket).and_raise(Stomp::Error::MaxReconnectAttempts)
|
462
462
|
|
463
|
-
expect { @connection.receive() }.to raise_error
|
463
|
+
expect { @connection.receive() }.to raise_error(RuntimeError)
|
464
464
|
end
|
465
465
|
end
|
466
466
|
|
data/spec/message_spec.rb
CHANGED
@@ -9,11 +9,12 @@ describe Stomp::Message do
|
|
9
9
|
context 'with invalid parameters' do
|
10
10
|
it 'should return an empty message when receiving an empty string or nil parameter' do
|
11
11
|
message = Stomp::Message.new('')
|
12
|
-
message.
|
12
|
+
expect(message).to be_empty
|
13
|
+
# message.should be_empty
|
13
14
|
end
|
14
15
|
|
15
16
|
it 'should raise Stomp::Error::InvalidFormat when receiving a invalid formated message' do
|
16
|
-
|
17
|
+
expect{ Stomp::Message.new('any invalid format') }.to raise_error(Stomp::Error::InvalidFormat)
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
@@ -24,15 +25,15 @@ describe Stomp::Message do
|
|
24
25
|
end
|
25
26
|
|
26
27
|
it 'should parse the headers' do
|
27
|
-
subject.headers.
|
28
|
+
expect(subject.headers).to eq({'session' => 'host_address'})
|
28
29
|
end
|
29
30
|
|
30
31
|
it 'should parse the body' do
|
31
|
-
subject.body.
|
32
|
+
expect(subject.body).to eq(@message[3])
|
32
33
|
end
|
33
34
|
|
34
35
|
it 'should parse the command' do
|
35
|
-
subject.command.
|
36
|
+
expect(subject.command).to eq(@message[0].chomp)
|
36
37
|
end
|
37
38
|
end
|
38
39
|
|
@@ -43,15 +44,15 @@ describe Stomp::Message do
|
|
43
44
|
end
|
44
45
|
|
45
46
|
it 'should parse the headers' do
|
46
|
-
subject.headers.
|
47
|
+
expect(subject.headers).to eq({'session' => 'host_address'})
|
47
48
|
end
|
48
49
|
|
49
50
|
it 'should parse the body' do
|
50
|
-
subject.body.
|
51
|
+
expect(subject.body).to eq(@message[3])
|
51
52
|
end
|
52
53
|
|
53
54
|
it 'should parse the command' do
|
54
|
-
subject.command.
|
55
|
+
expect(subject.command).to eq(@message[0].chomp)
|
55
56
|
end
|
56
57
|
end
|
57
58
|
end
|
data/spec/spec_helper.rb
CHANGED
data/stomp.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{stomp}
|
8
|
-
s.version = "1.3.
|
8
|
+
s.version = "1.3.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Brian McCallister", "Marius Mathiesen", "Thiago Morello", "Guy M. Allard"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2016-03-02}
|
13
13
|
s.description = %q{Ruby client for the Stomp messaging protocol. Note that this gem is no longer supported on rubyforge.}
|
14
14
|
s.email = ["brianm@apache.org", "marius@stones.com", "morellon@gmail.com", "allard.guy.m@gmail.com"]
|
15
15
|
s.executables = ["catstomp", "stompcat"]
|
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
|
|
17
17
|
"CHANGELOG.rdoc",
|
18
18
|
"LICENSE",
|
19
19
|
"README.rdoc",
|
20
|
+
"examples/amqdurasub.rb",
|
20
21
|
"examples/client11_ex1.rb",
|
21
22
|
"examples/client11_putget1.rb",
|
22
23
|
"examples/conn11_ex1.rb",
|
@@ -80,6 +81,7 @@ Gem::Specification.new do |s|
|
|
80
81
|
"Rakefile",
|
81
82
|
"bin/catstomp",
|
82
83
|
"bin/stompcat",
|
84
|
+
"examples/amqdurasub.rb",
|
83
85
|
"examples/client11_ex1.rb",
|
84
86
|
"examples/client11_putget1.rb",
|
85
87
|
"examples/conn11_ex1.rb",
|
@@ -154,12 +156,12 @@ Gem::Specification.new do |s|
|
|
154
156
|
s.specification_version = 3
|
155
157
|
|
156
158
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
157
|
-
s.add_development_dependency(%q<rspec>, [">= 2.
|
159
|
+
s.add_development_dependency(%q<rspec>, [">= 2.14.1"])
|
158
160
|
else
|
159
|
-
s.add_dependency(%q<rspec>, [">= 2.
|
161
|
+
s.add_dependency(%q<rspec>, [">= 2.14.1"])
|
160
162
|
end
|
161
163
|
else
|
162
|
-
s.add_dependency(%q<rspec>, [">= 2.
|
164
|
+
s.add_dependency(%q<rspec>, [">= 2.14.1"])
|
163
165
|
end
|
164
166
|
end
|
165
167
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stomp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 1.3.
|
9
|
+
- 5
|
10
|
+
version: 1.3.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Brian McCallister
|
@@ -18,7 +18,7 @@ autorequire:
|
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
20
|
|
21
|
-
date:
|
21
|
+
date: 2016-03-02 00:00:00 -05:00
|
22
22
|
default_executable:
|
23
23
|
dependencies:
|
24
24
|
- !ruby/object:Gem::Dependency
|
@@ -29,11 +29,12 @@ dependencies:
|
|
29
29
|
requirements:
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
hash:
|
32
|
+
hash: 53
|
33
33
|
segments:
|
34
34
|
- 2
|
35
|
-
-
|
36
|
-
|
35
|
+
- 14
|
36
|
+
- 1
|
37
|
+
version: 2.14.1
|
37
38
|
type: :development
|
38
39
|
version_requirements: *id001
|
39
40
|
description: Ruby client for the Stomp messaging protocol. Note that this gem is no longer supported on rubyforge.
|
@@ -51,6 +52,7 @@ extra_rdoc_files:
|
|
51
52
|
- CHANGELOG.rdoc
|
52
53
|
- LICENSE
|
53
54
|
- README.rdoc
|
55
|
+
- examples/amqdurasub.rb
|
54
56
|
- examples/client11_ex1.rb
|
55
57
|
- examples/client11_putget1.rb
|
56
58
|
- examples/conn11_ex1.rb
|
@@ -113,6 +115,7 @@ files:
|
|
113
115
|
- Rakefile
|
114
116
|
- bin/catstomp
|
115
117
|
- bin/stompcat
|
118
|
+
- examples/amqdurasub.rb
|
116
119
|
- examples/client11_ex1.rb
|
117
120
|
- examples/client11_putget1.rb
|
118
121
|
- examples/conn11_ex1.rb
|