stomp 1.4.7 → 1.4.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +2 -0
- data/examples/ssl/ssl_common.rb +24 -0
- data/examples/ssl/uc3/{ssl_uc3.rb → ssl_uc3_from_files.rb} +0 -0
- data/examples/ssl/uc3/{ssl_uc3_ciphers.rb → ssl_uc3_from_files_ciphers.rb} +0 -0
- data/examples/ssl/uc3/ssl_uc3_without_files.rb +69 -0
- data/examples/ssl/uc3/ssl_uc3_without_files_ciphers.rb +65 -0
- data/lib/connection/heartbeats.rb +1 -1
- data/lib/connection/netio.rb +22 -5
- data/lib/stomp/sslparams.rb +19 -5
- data/lib/stomp/version.rb +2 -2
- data/stomp.gemspec +7 -5
- data/test/test_anonymous.rb +1 -1
- data/test/test_client.rb +48 -41
- data/test/test_codec.rb +1 -1
- data/test/test_connection.rb +1 -1
- data/test/test_connection1p.rb +3 -2
- data/test/test_message.rb +2 -2
- data/test/test_ssl.rb +35 -1
- data/test/test_urlogin.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c59a4e733516943028a09517af79ef6f83b364b25e6829235a867512580d8983
|
4
|
+
data.tar.gz: 2822a29ebea5e99588b98a20689f0ae784e2e52cf43548fc88d5e7c6a35c1256
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72e141edc786894c8992f103a4fadfe00f34a45430960cb526a4c1867f12a0a25923579cd247cadf4e8b74c432cdc92f718d38a09cb5f0a1a11324324ead3587
|
7
|
+
data.tar.gz: cedb2740f8b266c0893ad42b85e5799f5770269ff0a9eb7a5950f1950dd69fe7e2f0e8352a032e4adaf5ec30ae395f3093587ef51c9c5ca2f374239831899067
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# Stomp Gem Change Log
|
2
2
|
|
3
|
+
## 1.4.8 20181219
|
4
|
+
|
5
|
+
* Fix missed merge from 1.4.7 release.
|
6
|
+
* Add global debug output flag to all unit tests.
|
7
|
+
|
3
8
|
## 1.4.7 20181210
|
4
9
|
|
5
10
|
* Support SSL cert/key in text format.
|
@@ -38,7 +43,7 @@
|
|
38
43
|
|
39
44
|
## 1.4.3 20160821
|
40
45
|
|
41
|
-
* Quick fix of install failures. Do not try to
|
46
|
+
* Quick fix of install failures. Do not try to install 1.4.2.
|
42
47
|
|
43
48
|
## 1.4.2 20160820
|
44
49
|
|
data/README.md
CHANGED
@@ -94,6 +94,8 @@ A Stomp URL must begin with 'stomp://' and can be in one of the following forms:
|
|
94
94
|
|
95
95
|
See _CHANGELOG.rdoc_ for details.
|
96
96
|
|
97
|
+
* Gem version 1.4.8. Fix missed merge in 1.4.7 release.
|
98
|
+
* Gem version 1.4.7. Add support for text SSL certs. Do not use, use 1.4.8 instead.
|
97
99
|
* Gem version 1.4.6. Fix version 1.4.5 which breaks JRuby support.
|
98
100
|
* Gem version 1.4.5. JRuby broken here. Use is not recommended.
|
99
101
|
* Gem version 1.4.4. Miscellaneous fixes, see CHANGELOG.md for details.
|
data/examples/ssl/ssl_common.rb
CHANGED
@@ -51,6 +51,30 @@ module SSLCommon
|
|
51
51
|
ENV['CLI_KEY'] || pck() # The client private key File
|
52
52
|
end
|
53
53
|
|
54
|
+
# Client cert file name. Change or specify.
|
55
|
+
# This is the author's default.
|
56
|
+
def cli_cert_text()
|
57
|
+
fake_cert = '------BEGIN CERTIFICATE-----
|
58
|
+
fake_cert
|
59
|
+
------END CERTIFICATE-----'
|
60
|
+
|
61
|
+
# The client cert text is stored in environmental variable
|
62
|
+
ENV['CLI_CERT_TEXT'] || fake_cert
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
# Client private key . Change or specify.
|
67
|
+
# This is the author's default.
|
68
|
+
# This file should not be exposed to the outside world.
|
69
|
+
def cli_key_text()
|
70
|
+
fake_key = '-----BEGIN PRIVATE KEY-----
|
71
|
+
fake_key
|
72
|
+
-----END PRIVATE KEY-----'
|
73
|
+
|
74
|
+
# The client private key text is stored in environment variable
|
75
|
+
ENV['CLI_KEY_TEXT'] || fake_key
|
76
|
+
end
|
77
|
+
|
54
78
|
# Server Data.
|
55
79
|
|
56
80
|
# Server file location/directory. Change or specify.
|
File without changes
|
File without changes
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
#
|
4
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
5
|
+
#
|
6
|
+
if Kernel.respond_to?(:require_relative)
|
7
|
+
require_relative("../ssl_common")
|
8
|
+
require_relative("../../stomp_common")
|
9
|
+
else
|
10
|
+
$LOAD_PATH << File.dirname(__FILE__)
|
11
|
+
require "../ssl_common"
|
12
|
+
require("../../stomp_common")
|
13
|
+
end
|
14
|
+
include SSLCommon
|
15
|
+
include Stomp1xCommon
|
16
|
+
#
|
17
|
+
# == SSL Use Case 3 - server *does* authenticate client, client does *not* authenticate server
|
18
|
+
#
|
19
|
+
# Subcase 3.A - Message broker configuration does *not* require client authentication
|
20
|
+
#
|
21
|
+
# - Expect connection success
|
22
|
+
# - Expect a verify result of 20 becuase the client did not authenticate the
|
23
|
+
# server's certificate.
|
24
|
+
#
|
25
|
+
# Subcase 3.B - Message broker configuration *does* require client authentication
|
26
|
+
#
|
27
|
+
# - Expect connection success if the server can authenticate the client certificate
|
28
|
+
# - Expect a verify result of 20 because the client did not authenticate the
|
29
|
+
# server's certificate.
|
30
|
+
#
|
31
|
+
class ExampleSSL3woFiles
|
32
|
+
# Initialize.
|
33
|
+
def initialize
|
34
|
+
# Change the following as needed.
|
35
|
+
@host = host()
|
36
|
+
# It is very likely that you will have to specify your specific port number.
|
37
|
+
# 61612 is currently my AMQ local port number for ssl client auth is required.
|
38
|
+
@port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
|
39
|
+
end
|
40
|
+
# Run example.
|
41
|
+
def run
|
42
|
+
puts "SSLUC3 Connect host: #{@host}, port: #{@port}"
|
43
|
+
|
44
|
+
# Possibly change the cert file(s) name(s) here.
|
45
|
+
ssl_opts = Stomp::SSLParams.new(
|
46
|
+
:key_text => cli_key_text().to_s, # the client's private key, private data
|
47
|
+
:cert_text => cli_cert_text().to_s # the client's signed certificate
|
48
|
+
)
|
49
|
+
puts "SSLOPTS: #{ssl_opts.inspect}"
|
50
|
+
#
|
51
|
+
hash = { :hosts => [
|
52
|
+
{:login => login(), :passcode => passcode(), :host => @host, :port => @port, :ssl => ssl_opts},
|
53
|
+
],
|
54
|
+
:reliable => false, # YMMV, to test this in a sane manner
|
55
|
+
}
|
56
|
+
#
|
57
|
+
puts "Connect starts, SSL Use Case 3"
|
58
|
+
c = Stomp::Connection.new(hash)
|
59
|
+
puts "Connect completed"
|
60
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
61
|
+
puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}" if showPeerCert()
|
62
|
+
c.disconnect()
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
#
|
67
|
+
e = ExampleSSL3woFiles.new()
|
68
|
+
e.run
|
69
|
+
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
#
|
4
|
+
# Reference: https://github.com/stompgem/stomp/wiki/extended-ssl-overview
|
5
|
+
#
|
6
|
+
if Kernel.respond_to?(:require_relative)
|
7
|
+
require_relative("../ssl_common")
|
8
|
+
require_relative("../../stomp_common")
|
9
|
+
else
|
10
|
+
$LOAD_PATH << File.dirname(__FILE__)
|
11
|
+
require "../ssl_common"
|
12
|
+
require("../../stomp_common")
|
13
|
+
end
|
14
|
+
include SSLCommon
|
15
|
+
include Stomp1xCommon
|
16
|
+
#
|
17
|
+
# == SSL Use Case 3 - User Supplied Ciphers not from files
|
18
|
+
#
|
19
|
+
# If you need your own ciphers list, this is how.
|
20
|
+
# Stomp's default list will work in many cases. If you need to use this, you
|
21
|
+
# will know it because SSL connect will fail. In that case, determining
|
22
|
+
# _what_ should be in the list is your responsibility.
|
23
|
+
#
|
24
|
+
class ExampleSSLwoFiles3C
|
25
|
+
# Initialize.
|
26
|
+
def initialize # Change the following as needed.
|
27
|
+
@host = host()
|
28
|
+
# It is very likely that you will have to specify your specific port number.
|
29
|
+
# 61612 is currently my AMQ local port number for ssl client auth is required.
|
30
|
+
@port = ENV['STOMP_PORT'] ? ENV['STOMP_PORT'].to_i : 61612
|
31
|
+
end
|
32
|
+
# Run example.
|
33
|
+
def run
|
34
|
+
puts "SSLUC3C Connect host: #{@host}, port: #{@port}"
|
35
|
+
#
|
36
|
+
# SSL Use Case 3 without files
|
37
|
+
# certificate information will typically be stored in environmental variables
|
38
|
+
#
|
39
|
+
# Possibly change the cert file(s) name(s) here.
|
40
|
+
ssl_opts = Stomp::SSLParams.new(
|
41
|
+
:key_text => cli_key_text().to_s, # the client's private key, private data
|
42
|
+
:cert_text => cli_cert_text().to_s, # the client's signed certificate
|
43
|
+
:ciphers => ciphers_list() # The cipher list
|
44
|
+
)
|
45
|
+
#
|
46
|
+
puts "SSLOPTS: #{ssl_opts.inspect}"
|
47
|
+
hash = { :hosts => [
|
48
|
+
{:login => login(), :passcode => passcode(), :host => @host, :port => @port, :ssl => ssl_opts},
|
49
|
+
],
|
50
|
+
:reliable => false, # YMMV, to test this in a sane manner
|
51
|
+
}
|
52
|
+
#
|
53
|
+
puts "Connect starts, SSL Use Case 3 without files"
|
54
|
+
c = Stomp::Connection.new(hash)
|
55
|
+
puts "Connect completed"
|
56
|
+
puts "SSL Verify Result: #{ssl_opts.verify_result}"
|
57
|
+
puts "SSL Peer Certificate:\n#{ssl_opts.peer_cert}" if showPeerCert()
|
58
|
+
c.disconnect()
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
#
|
63
|
+
e = ExampleSSLwoFiles3C.new()
|
64
|
+
e.run
|
65
|
+
|
@@ -164,7 +164,7 @@ module Stomp
|
|
164
164
|
begin
|
165
165
|
delta = curt - @lr
|
166
166
|
if delta > sleeptime
|
167
|
-
slog(:on_hbfire, log_params, "receive_heartbeat", {})
|
167
|
+
slog(:on_hbfire, log_params, "receive_heartbeat", {:delta => delta})
|
168
168
|
# Client code could be off doing something else (that is, no reading of
|
169
169
|
# the socket has been requested by the caller). Try to handle that case.
|
170
170
|
lock = @read_semaphore.try_lock
|
data/lib/connection/netio.rb
CHANGED
@@ -367,19 +367,36 @@ module Stomp
|
|
367
367
|
ctx.cert_store = truststores
|
368
368
|
end
|
369
369
|
|
370
|
-
# Client authentication
|
371
|
-
#
|
372
|
-
raise Stomp::Error::SSLClientParamsError if
|
373
|
-
|
374
|
-
if
|
370
|
+
# Client authentication
|
371
|
+
# If cert exists as a file, then it should not be input as text
|
372
|
+
raise Stomp::Error::SSLClientParamsError if !@ssl.cert_file.nil? && !@ssl.cert_text.nil?
|
373
|
+
# If cert exists as file, then key must exist, either as text or file
|
374
|
+
raise Stomp::Error::SSLClientParamsError if !@ssl.cert_file.nil? && @ssl.key_file.nil? && @ssl.key_text.nil?
|
375
|
+
if @ssl.cert_file
|
375
376
|
raise Stomp::Error::SSLNoCertFileError if !File::exists?(@ssl.cert_file)
|
376
377
|
raise Stomp::Error::SSLUnreadableCertFileError if !File::readable?(@ssl.cert_file)
|
377
378
|
ctx.cert = OpenSSL::X509::Certificate.new(File.read(@ssl.cert_file))
|
379
|
+
end
|
380
|
+
|
381
|
+
# If cert exists as file, then key must exist, either as text or file
|
382
|
+
raise Stomp::Error::SSLClientParamsError if !@ssl.cert_text.nil? && @ssl.key_file.nil? && @ssl.key_text.nil?
|
383
|
+
if @ssl.cert_text
|
384
|
+
ctx.cert = OpenSSL::X509::Certificate.new(@ssl.cert_text)
|
385
|
+
end
|
386
|
+
|
387
|
+
# If key exists as a text, then it should not be input as file
|
388
|
+
raise Stomp::Error::SSLClientParamsError if !@ssl.key_text.nil? && !@ssl.key_file.nil?
|
389
|
+
if @ssl.key_file
|
378
390
|
raise Stomp::Error::SSLNoKeyFileError if !File::exists?(@ssl.key_file)
|
379
391
|
raise Stomp::Error::SSLUnreadableKeyFileError if !File::readable?(@ssl.key_file)
|
380
392
|
ctx.key = OpenSSL::PKey::RSA.new(File.read(@ssl.key_file), @ssl.key_password)
|
381
393
|
end
|
382
394
|
|
395
|
+
if @ssl.key_text
|
396
|
+
nt = @ssl.key_text.gsub(/\t/, "")
|
397
|
+
ctx.key = OpenSSL::PKey::RSA.new(nt, @ssl.key_password)
|
398
|
+
end
|
399
|
+
|
383
400
|
# Cipher list
|
384
401
|
# As of this writing, there are numerous problems with supplying
|
385
402
|
# cipher lists to jruby. So we do not attempt to do that here.
|
data/lib/stomp/sslparams.rb
CHANGED
@@ -18,6 +18,12 @@ module Stomp
|
|
18
18
|
# The client private key file.
|
19
19
|
attr_accessor :key_file
|
20
20
|
|
21
|
+
# The client certificate text.
|
22
|
+
attr_accessor :cert_text
|
23
|
+
|
24
|
+
# The client private key text.
|
25
|
+
attr_accessor :key_text
|
26
|
+
|
21
27
|
# The client private key password.
|
22
28
|
attr_accessor :key_password
|
23
29
|
|
@@ -52,12 +58,20 @@ module Stomp
|
|
52
58
|
# or a CSV list of cert file names
|
53
59
|
|
54
60
|
# Client authentication parameters
|
55
|
-
@cert_file = opts[:cert_file] # Client cert
|
56
|
-
@key_file = opts[:key_file] # Client key
|
57
|
-
@
|
61
|
+
@cert_file = opts[:cert_file] # Client cert file
|
62
|
+
@key_file = opts[:key_file] # Client key file
|
63
|
+
@cert_text = opts[:cert_text] # Client cert text
|
64
|
+
@key_text = opts[:key_text] # Client key text
|
65
|
+
@key_password = opts[:key_password] # Client key password
|
58
66
|
#
|
59
|
-
raise Stomp::Error::SSLClientParamsError if
|
60
|
-
raise Stomp::Error::SSLClientParamsError if !@
|
67
|
+
raise Stomp::Error::SSLClientParamsError if !@cert_file.nil? && @key_file.nil? && @key_text.nil?
|
68
|
+
raise Stomp::Error::SSLClientParamsError if !@cert_text.nil? && @key_file.nil? && @key_text.nil?
|
69
|
+
raise Stomp::Error::SSLClientParamsError if !@cert_text.nil? && !@cert_file.nil?
|
70
|
+
|
71
|
+
raise Stomp::Error::SSLClientParamsError if !@key_file.nil? && @cert_file.nil? && @cert_text.nil?
|
72
|
+
raise Stomp::Error::SSLClientParamsError if !@key_text.nil? && @cert_file.nil? && @cert_text.nil?
|
73
|
+
raise Stomp::Error::SSLClientParamsError if !@key_text.nil? && !@key_file.nil?
|
74
|
+
|
61
75
|
#
|
62
76
|
@ciphers = opts[:ciphers]
|
63
77
|
@use_ruby_ciphers = opts[:use_ruby_ciphers] ? opts[:use_ruby_ciphers] : false
|
data/lib/stomp/version.rb
CHANGED
data/stomp.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: stomp 1.4.
|
5
|
+
# stub: stomp 1.4.8 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "stomp".freeze
|
9
|
-
s.version = "1.4.
|
9
|
+
s.version = "1.4.8"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Brian McCallister".freeze, "Marius Mathiesen".freeze, "Thiago Morello".freeze, "Guy M. Allard".freeze]
|
14
|
-
s.date = "2018-12-
|
14
|
+
s.date = "2018-12-19"
|
15
15
|
s.description = "Ruby client for the Stomp messaging protocol.".freeze
|
16
16
|
s.email = ["brianm@apache.org".freeze, "marius@stones.com".freeze, "morellon@gmail.com".freeze, "allard.guy.m@gmail.com".freeze]
|
17
17
|
s.executables = ["catstomp".freeze, "stompcat".freeze]
|
@@ -63,8 +63,10 @@ Gem::Specification.new do |s|
|
|
63
63
|
"examples/ssl/uc1/ssl_uc1_ciphers.rb",
|
64
64
|
"examples/ssl/uc2/ssl_uc2.rb",
|
65
65
|
"examples/ssl/uc2/ssl_uc2_ciphers.rb",
|
66
|
-
"examples/ssl/uc3/
|
67
|
-
"examples/ssl/uc3/
|
66
|
+
"examples/ssl/uc3/ssl_uc3_from_files.rb",
|
67
|
+
"examples/ssl/uc3/ssl_uc3_from_files_ciphers.rb",
|
68
|
+
"examples/ssl/uc3/ssl_uc3_without_files.rb",
|
69
|
+
"examples/ssl/uc3/ssl_uc3_without_files_ciphers.rb",
|
68
70
|
"examples/ssl/uc4/ssl_uc4.rb",
|
69
71
|
"examples/ssl/uc4/ssl_uc4_ciphers.rb",
|
70
72
|
"examples/stomp_common.rb",
|
data/test/test_anonymous.rb
CHANGED
data/test/test_client.rb
CHANGED
@@ -20,7 +20,7 @@ class TestClient < Test::Unit::TestCase
|
|
20
20
|
# Multi_thread test data
|
21
21
|
@max_threads = 20
|
22
22
|
@max_msgs = 50
|
23
|
-
@tcldbg = ENV['TCLDBG'] ? true : false
|
23
|
+
@tcldbg = ENV['TCLDBG'] || ENV['TDBGALL'] ? true : false
|
24
24
|
end
|
25
25
|
|
26
26
|
def teardown
|
@@ -169,9 +169,10 @@ class TestClient < Test::Unit::TestCase
|
|
169
169
|
mn = "test_transactional_publish" if @tcldbg
|
170
170
|
p [ "01", mn, "starts" ] if @tcldbg
|
171
171
|
|
172
|
-
|
173
|
-
@client.
|
174
|
-
@client.
|
172
|
+
tid = "tx1A"
|
173
|
+
@client.begin tid
|
174
|
+
@client.publish make_destination, message_text, :transaction => tid
|
175
|
+
@client.commit tid
|
175
176
|
|
176
177
|
message = nil
|
177
178
|
@client.subscribe(make_destination) {|m| message = m}
|
@@ -180,20 +181,21 @@ class TestClient < Test::Unit::TestCase
|
|
180
181
|
assert_equal message_text, message.body
|
181
182
|
checkEmsg(@client) unless jruby?()
|
182
183
|
p [ "99", mn, "ends" ] if @tcldbg
|
183
|
-
end
|
184
|
+
end unless ENV['STOMP_ARTEMIS']
|
184
185
|
|
185
186
|
# Test transaction publish and abort.
|
186
187
|
def test_transaction_publish_then_rollback
|
187
188
|
mn = "test_transaction_publish_then_rollback" if @tcldbg
|
188
189
|
p [ "01", mn, "starts" ] if @tcldbg
|
189
190
|
|
190
|
-
|
191
|
-
@client.
|
192
|
-
@client.
|
191
|
+
tid = "txrb1"
|
192
|
+
@client.begin tid
|
193
|
+
@client.publish make_destination, "first_message", :transaction => tid
|
194
|
+
@client.abort tid
|
193
195
|
|
194
|
-
@client.begin
|
195
|
-
@client.publish make_destination, "second_message", :transaction =>
|
196
|
-
@client.commit
|
196
|
+
@client.begin tid
|
197
|
+
@client.publish make_destination, "second_message", :transaction => tid
|
198
|
+
@client.commit tid
|
197
199
|
|
198
200
|
message = nil
|
199
201
|
@client.subscribe(make_destination) {|m| message = m}
|
@@ -201,7 +203,7 @@ class TestClient < Test::Unit::TestCase
|
|
201
203
|
assert_equal "second_message", message.body
|
202
204
|
checkEmsg(@client) unless jruby?()
|
203
205
|
p [ "99", mn, "ends" ] if @tcldbg
|
204
|
-
end
|
206
|
+
end unless ENV['STOMP_ARTEMIS']
|
205
207
|
|
206
208
|
# Test transaction publish and abort, receive with new client.
|
207
209
|
# New client uses ack => client.
|
@@ -209,13 +211,14 @@ class TestClient < Test::Unit::TestCase
|
|
209
211
|
mn = "test_tran_ack_abrt_newcli_cli" if @tcldbg
|
210
212
|
p [ "01", mn, "starts" ] if @tcldbg
|
211
213
|
|
214
|
+
tid = "tx1B"
|
212
215
|
@client.close if @client && @client.open? # allow tests to close
|
213
216
|
@client = get_client()
|
214
217
|
q = make_destination
|
215
218
|
data = message_text
|
216
219
|
@client.publish q, data
|
217
220
|
|
218
|
-
@client.begin
|
221
|
+
@client.begin tid
|
219
222
|
message = nil
|
220
223
|
sid = nil
|
221
224
|
if @client.protocol() == Stomp::SPL_10
|
@@ -228,24 +231,25 @@ class TestClient < Test::Unit::TestCase
|
|
228
231
|
assert_equal data, message.body
|
229
232
|
case @client.protocol()
|
230
233
|
when Stomp::SPL_10
|
231
|
-
@client.acknowledge message, :transaction =>
|
234
|
+
@client.acknowledge message, :transaction => tid
|
232
235
|
checkEmsg(@client) unless jruby?()
|
233
236
|
when Stomp::SPL_11
|
234
|
-
@client.acknowledge message, :transaction =>
|
237
|
+
@client.acknowledge message, :transaction => tid, :subscription => message.headers['subscription']
|
235
238
|
checkEmsg(@client) unless jruby?()
|
236
239
|
else # 1.2+
|
237
|
-
@client.acknowledge message, :transaction =>
|
240
|
+
@client.acknowledge message, :transaction => tid, :id => message.headers['ack']
|
238
241
|
checkEmsg(@client) unless jruby?()
|
239
242
|
end
|
240
243
|
message = nil # reset
|
241
|
-
@client.abort
|
244
|
+
@client.abort tid # now abort
|
242
245
|
checkEmsg(@client) unless jruby?()
|
243
246
|
# lets recreate the connection
|
244
247
|
@client.close
|
245
248
|
@client = get_client()
|
246
249
|
sid = nil
|
247
250
|
message2 = nil
|
248
|
-
|
251
|
+
tid2 = "tx2A"
|
252
|
+
@client.begin tid2
|
249
253
|
if @client.protocol() == Stomp::SPL_10
|
250
254
|
@client.subscribe(q, :ack => 'client') {|m| message2 = m}
|
251
255
|
else # 1.1 and 1.2 are the same for this
|
@@ -257,16 +261,16 @@ class TestClient < Test::Unit::TestCase
|
|
257
261
|
assert_equal data, message2.body
|
258
262
|
case @client.protocol()
|
259
263
|
when Stomp::SPL_10
|
260
|
-
@client.acknowledge message2, :transaction =>
|
264
|
+
@client.acknowledge message2, :transaction => tid2
|
261
265
|
checkEmsg(@client) unless jruby?()
|
262
266
|
when Stomp::SPL_11
|
263
|
-
@client.acknowledge message2, :transaction =>
|
267
|
+
@client.acknowledge message2, :transaction => tid2, :subscription => message2.headers['subscription']
|
264
268
|
checkEmsg(@client) unless jruby?()
|
265
269
|
else # 1.2+
|
266
|
-
@client.acknowledge message2, :transaction =>
|
270
|
+
@client.acknowledge message2, :transaction => tid2, :id => message2.headers['ack']
|
267
271
|
checkEmsg(@client) unless jruby?()
|
268
272
|
end
|
269
|
-
@client.commit
|
273
|
+
@client.commit tid2
|
270
274
|
checkEmsg(@client) unless jruby?()
|
271
275
|
@client.close
|
272
276
|
p [ "99", mn, "ends" ] if @tcldbg
|
@@ -278,13 +282,14 @@ class TestClient < Test::Unit::TestCase
|
|
278
282
|
mn = "test_tran_ack_abrt_newcli_auto" if @tcldbg
|
279
283
|
p [ "01", mn, "starts" ] if @tcldbg
|
280
284
|
|
285
|
+
tid = "tx1C"
|
281
286
|
@client.close if @client && @client.open? # allow tests to close
|
282
287
|
@client = get_client()
|
283
288
|
q = make_destination
|
284
289
|
data = message_text
|
285
290
|
@client.publish q, data
|
286
291
|
|
287
|
-
@client.begin
|
292
|
+
@client.begin tid
|
288
293
|
message = nil
|
289
294
|
sid = nil
|
290
295
|
if @client.protocol() == Stomp::SPL_10
|
@@ -297,17 +302,17 @@ class TestClient < Test::Unit::TestCase
|
|
297
302
|
assert_equal data, message.body
|
298
303
|
case @client.protocol()
|
299
304
|
when Stomp::SPL_10
|
300
|
-
@client.acknowledge message, :transaction =>
|
305
|
+
@client.acknowledge message, :transaction => tid
|
301
306
|
checkEmsg(@client) unless jruby?()
|
302
307
|
when Stomp::SPL_11
|
303
|
-
@client.acknowledge message, :transaction =>
|
308
|
+
@client.acknowledge message, :transaction => tid, :subscription => message.headers['subscription']
|
304
309
|
checkEmsg(@client) unless jruby?()
|
305
310
|
else # 1.2+
|
306
|
-
@client.acknowledge message, :transaction =>
|
311
|
+
@client.acknowledge message, :transaction => tid, :id => message.headers['ack']
|
307
312
|
checkEmsg(@client) unless jruby?()
|
308
313
|
end
|
309
314
|
message = nil # reset
|
310
|
-
@client.abort
|
315
|
+
@client.abort tid # now abort
|
311
316
|
checkEmsg(@client) unless jruby?()
|
312
317
|
# lets recreate the connection
|
313
318
|
@client.close
|
@@ -315,7 +320,8 @@ class TestClient < Test::Unit::TestCase
|
|
315
320
|
@client = get_client()
|
316
321
|
sid = nil
|
317
322
|
message2 = nil
|
318
|
-
|
323
|
+
tid2 = "tx2C"
|
324
|
+
@client.begin tid2
|
319
325
|
if @client.protocol() == Stomp::SPL_10
|
320
326
|
@client.subscribe(q, :ack => 'auto') {|m| message2 = m}
|
321
327
|
else # 1.1 and 1.2 are the same for this
|
@@ -325,7 +331,7 @@ class TestClient < Test::Unit::TestCase
|
|
325
331
|
sleep 0.01 until message2
|
326
332
|
assert_not_nil message2
|
327
333
|
assert_equal data, message2.body
|
328
|
-
@client.commit
|
334
|
+
@client.commit tid2
|
329
335
|
checkEmsg(@client) unless jruby?()
|
330
336
|
@client.close
|
331
337
|
p [ "99", mn, "ends" ] if @tcldbg
|
@@ -457,8 +463,8 @@ class TestClient < Test::Unit::TestCase
|
|
457
463
|
q = make_destination
|
458
464
|
data = message_text
|
459
465
|
@client.publish q, data
|
460
|
-
|
461
|
-
@client.begin
|
466
|
+
tid = "tx1D"
|
467
|
+
@client.begin tid
|
462
468
|
message = nil
|
463
469
|
sid = nil
|
464
470
|
if @client.protocol() == Stomp::SPL_10
|
@@ -471,39 +477,40 @@ class TestClient < Test::Unit::TestCase
|
|
471
477
|
assert_equal data, message.body
|
472
478
|
case @client.protocol()
|
473
479
|
when Stomp::SPL_10
|
474
|
-
@client.acknowledge message, :transaction =>
|
480
|
+
@client.acknowledge message, :transaction => tid
|
475
481
|
checkEmsg(@client) unless jruby?()
|
476
482
|
when Stomp::SPL_11
|
477
|
-
@client.acknowledge message, :transaction =>
|
483
|
+
@client.acknowledge message, :transaction => tid, :subscription => message.headers['subscription']
|
478
484
|
checkEmsg(@client) unless jruby?()
|
479
485
|
else # 1.2+
|
480
|
-
@client.acknowledge message, :transaction =>
|
486
|
+
@client.acknowledge message, :transaction => tid, :id => message.headers['ack']
|
481
487
|
checkEmsg(@client) unless jruby?()
|
482
488
|
end
|
483
489
|
message = nil
|
484
|
-
@client.abort
|
490
|
+
@client.abort tid
|
485
491
|
# Wait for redlivery (Client logic)
|
486
492
|
sleep 0.1 while message.nil?
|
487
493
|
assert_not_nil message
|
488
494
|
assert_equal data, message.body
|
489
|
-
|
495
|
+
tid2 = "tx2D"
|
496
|
+
@client.begin tid2
|
490
497
|
case @client.protocol()
|
491
498
|
when Stomp::SPL_10
|
492
|
-
@client.acknowledge message, :transaction =>
|
499
|
+
@client.acknowledge message, :transaction => tid2
|
493
500
|
checkEmsg(@client) unless jruby?()
|
494
501
|
when Stomp::SPL_11
|
495
|
-
@client.acknowledge message, :transaction =>
|
502
|
+
@client.acknowledge message, :transaction => tid2, :subscription => message.headers['subscription']
|
496
503
|
checkEmsg(@client) unless jruby?()
|
497
504
|
else # 1.2+
|
498
|
-
@client.acknowledge message, :transaction =>
|
505
|
+
@client.acknowledge message, :transaction => tid2, :id => message.headers['ack']
|
499
506
|
checkEmsg(@client) unless jruby?()
|
500
507
|
end
|
501
|
-
@client.commit
|
508
|
+
@client.commit tid2
|
502
509
|
checkEmsg(@client) unless jruby?()
|
503
510
|
@client.close
|
504
511
|
@client = nil
|
505
512
|
p [ "99", mn, "ends" ] if @tcldbg
|
506
|
-
end
|
513
|
+
end unless ENV['STOMP_ARTEMIS']
|
507
514
|
|
508
515
|
# Test that a connection frame is received.
|
509
516
|
def test_connection_frame
|
data/test/test_codec.rb
CHANGED
data/test/test_connection.rb
CHANGED
data/test/test_connection1p.rb
CHANGED
@@ -17,7 +17,7 @@ class TestConnection1P < Test::Unit::TestCase
|
|
17
17
|
|
18
18
|
def setup
|
19
19
|
@conn = get_connection()
|
20
|
-
@tc1dbg = ENV['TC1DBG'] ? true : false
|
20
|
+
@tc1dbg = ENV['TC1DBG'] || ENV['TDBGALL'] ? true : false
|
21
21
|
end
|
22
22
|
|
23
23
|
def teardown
|
@@ -197,6 +197,7 @@ class TestConnection1P < Test::Unit::TestCase
|
|
197
197
|
end if ENV['STOMP_HB11LONG']
|
198
198
|
|
199
199
|
# Test only receiving heartbeats.
|
200
|
+
# This is a no-no with Artemis, you must send, see docs
|
200
201
|
def test_conn_1p_0090
|
201
202
|
mn = "test_conn_1p_0090" if @tc1dbg
|
202
203
|
p [ "01", mn, "starts" ] if @tc1dbg
|
@@ -215,7 +216,7 @@ class TestConnection1P < Test::Unit::TestCase
|
|
215
216
|
conn.disconnect
|
216
217
|
hb_asserts_recv(conn)
|
217
218
|
p [ "99", mn, "ends" ] if @tc1dbg
|
218
|
-
end if ENV['STOMP_HB11LONG']
|
219
|
+
end if ENV['STOMP_HB11LONG'] && !ENV['STOMP_ARTEMIS']
|
219
220
|
|
220
221
|
# Test sending and receiving heartbeats.
|
221
222
|
def test_conn_1p_0100
|
data/test/test_message.rb
CHANGED
@@ -38,7 +38,7 @@ class TestMessage < Test::Unit::TestCase
|
|
38
38
|
"\004\b{\f:\tbody\"\001\207\004\b{\b:\016statusmsg\"\aOK:\017statuscodei\000:\tdata{\t:\voutput\"3Enabled, not running, last run 693 seconds ago:\frunningi\000:\fenabledi\006:\flastrunl+\aE\021\022M:\rsenderid\"\032xx.xx.xx.xx:\016requestid\"%849d647bbe3e421ea19ac9f947bbdde4:\020senderagent\"\fpuppetd:\016msgtarget\"%/topic/mcollective.puppetd.reply:\thash\"\001\257ZdQqtaDmmdD0jZinnEcpN+YbkxQDn8uuCnwsQdvGHau6d+gxnnfPLUddWRSb\nZNMs+sQUXgJNfcV1eVBn1H+Z8QQmzYXVDMqz7J43jmgloz5PsLVbN9K3PmX/\ngszqV/WpvIyAqm98ennWqSzpwMuiCC4q2Jr3s3Gm6bUJ6UkKXnY=\n:\fmsgtimel+\a\372\023\022M"
|
39
39
|
]
|
40
40
|
#
|
41
|
-
@tmsdbg = ENV['TMSDBG'] ? true : false
|
41
|
+
@tmsdbg = ENV['TMSDBG'] || ENV['TDBGALL'] ? true : false
|
42
42
|
end
|
43
43
|
|
44
44
|
def teardown
|
@@ -146,7 +146,7 @@ class TestMessage < Test::Unit::TestCase
|
|
146
146
|
_ = Stomp::Message.new("ERROR\nh1:val1\n\njunk\0\n", false)
|
147
147
|
|
148
148
|
p [ "99", mn, "ends" ] if @tmsdbg
|
149
|
-
|
149
|
+
end
|
150
150
|
|
151
151
|
# Test multiple headers with the same key
|
152
152
|
def test_0050_mh_msg_create
|
data/test/test_ssl.rb
CHANGED
@@ -17,7 +17,7 @@ class TestSSL < Test::Unit::TestCase
|
|
17
17
|
|
18
18
|
def setup
|
19
19
|
@conn = get_ssl_connection()
|
20
|
-
@tssdbg = ENV['TSSDBG'] ? true : false
|
20
|
+
@tssdbg = ENV['TSSDBG'] || ENV['TDBGALL'] ? true : false
|
21
21
|
end
|
22
22
|
|
23
23
|
def teardown
|
@@ -50,6 +50,9 @@ class TestSSL < Test::Unit::TestCase
|
|
50
50
|
p [ "01", mn, "starts" ] if @tssdbg
|
51
51
|
|
52
52
|
_ = Stomp::SSLParams.new(:cert_file => "dummy1", :key_file => "dummy2")
|
53
|
+
_ = Stomp::SSLParams.new(:cert_file => "dummy1", :key_text => "dummy3")
|
54
|
+
_ = Stomp::SSLParams.new(:cert_text => "dummy1", :key_file => "dummy2")
|
55
|
+
_ = Stomp::SSLParams.new(:cert_text => "dummy4", :key_text => "dummy3")
|
53
56
|
_ = Stomp::SSLParams.new(:ts_files => "dummyts1")
|
54
57
|
_ = Stomp::SSLParams.new(:ts_files => "dummyts1",
|
55
58
|
:cert_file => "dummy1", :key_file => "dummy2")
|
@@ -61,12 +64,43 @@ class TestSSL < Test::Unit::TestCase
|
|
61
64
|
mn = "test_ssl_0030_raise" if @tssdbg
|
62
65
|
p [ "01", mn, "starts" ] if @tssdbg
|
63
66
|
|
67
|
+
key_text = '-----BEGIN PRIVATE KEY-----
|
68
|
+
fake_key
|
69
|
+
-----END PRIVATE KEY-----'
|
70
|
+
cert_text = '------BEGIN CERTIFICATE-----
|
71
|
+
fake_cert
|
72
|
+
------END CERTIFICATE-----'
|
73
|
+
|
64
74
|
assert_raise(Stomp::Error::SSLClientParamsError) {
|
65
75
|
_ = Stomp::SSLParams.new(:cert_file => "dummy1")
|
66
76
|
}
|
77
|
+
assert_raise(Stomp::Error::SSLClientParamsError) {
|
78
|
+
_ = Stomp::SSLParams.new(:cert_text => cert_text)
|
79
|
+
}
|
67
80
|
assert_raise(Stomp::Error::SSLClientParamsError) {
|
68
81
|
_ = Stomp::SSLParams.new(:key_file => "dummy2")
|
69
82
|
}
|
83
|
+
assert_raise(Stomp::Error::SSLClientParamsError) {
|
84
|
+
_ = Stomp::SSLParams.new(:key_text => key_text)
|
85
|
+
}
|
86
|
+
assert_raise(Stomp::Error::SSLClientParamsError) {
|
87
|
+
_ = Stomp::SSLParams.new(:cert_text => cert_text, :cert_file => "dummy1")
|
88
|
+
}
|
89
|
+
assert_raise(Stomp::Error::SSLClientParamsError) {
|
90
|
+
_ = Stomp::SSLParams.new(:key_text => key_text, :cert_text => cert_text, :cert_file => "dummy1")
|
91
|
+
}
|
92
|
+
assert_raise(Stomp::Error::SSLClientParamsError) {
|
93
|
+
_ = Stomp::SSLParams.new(:key_file => "dummy2", :cert_text => cert_text, :cert_file => "dummy1")
|
94
|
+
}
|
95
|
+
assert_raise(Stomp::Error::SSLClientParamsError) {
|
96
|
+
_ = Stomp::SSLParams.new(:key_text => key_text, :key_file => "dummy2")
|
97
|
+
}
|
98
|
+
assert_raise(Stomp::Error::SSLClientParamsError) {
|
99
|
+
_ = Stomp::SSLParams.new(:cert_file => "dummy1", :key_text => key_text, :key_file => "dummy2")
|
100
|
+
}
|
101
|
+
assert_raise(Stomp::Error::SSLClientParamsError) {
|
102
|
+
_ = Stomp::SSLParams.new(:cert_text => cert_text, :key_text => key_text, :key_file => "dummy2")
|
103
|
+
}
|
70
104
|
p [ "99", mn, "ends" ] if @tssdbg
|
71
105
|
end
|
72
106
|
|
data/test/test_urlogin.rb
CHANGED
@@ -54,7 +54,7 @@ class TestURLLogins < Test::Unit::TestCase
|
|
54
54
|
@badparms = "failover://(stomp://#{hostname}:#{portnum})?a=b&noequal"
|
55
55
|
|
56
56
|
@client = nil
|
57
|
-
@turdbg = ENV['TURDBG'] ? true : false
|
57
|
+
@turdbg = ENV['TURDBG'] || ENV['TDBGALL'] ? true : false
|
58
58
|
end
|
59
59
|
|
60
60
|
def teardown
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stomp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian McCallister
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2018-12-
|
14
|
+
date: 2018-12-19 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rspec
|
@@ -90,8 +90,10 @@ files:
|
|
90
90
|
- examples/ssl/uc1/ssl_uc1_ciphers.rb
|
91
91
|
- examples/ssl/uc2/ssl_uc2.rb
|
92
92
|
- examples/ssl/uc2/ssl_uc2_ciphers.rb
|
93
|
-
- examples/ssl/uc3/
|
94
|
-
- examples/ssl/uc3/
|
93
|
+
- examples/ssl/uc3/ssl_uc3_from_files.rb
|
94
|
+
- examples/ssl/uc3/ssl_uc3_from_files_ciphers.rb
|
95
|
+
- examples/ssl/uc3/ssl_uc3_without_files.rb
|
96
|
+
- examples/ssl/uc3/ssl_uc3_without_files_ciphers.rb
|
95
97
|
- examples/ssl/uc4/ssl_uc4.rb
|
96
98
|
- examples/ssl/uc4/ssl_uc4_ciphers.rb
|
97
99
|
- examples/stomp_common.rb
|