stompserver_ng 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +159 -0
- data/Manifest.txt +71 -0
- data/README.txt +172 -0
- data/Rakefile +38 -0
- data/STATUS +5 -0
- data/bin/stompserver_ng +63 -0
- data/client/README.txt +1 -0
- data/client/both.rb +25 -0
- data/client/consume.rb +14 -0
- data/client/send.rb +17 -0
- data/config/stompserver_ng.conf +11 -0
- data/etc/19xcompat/notes.txt +223 -0
- data/etc/arutils/README-activerecord.txt +78 -0
- data/etc/arutils/cre_mysql.rb +34 -0
- data/etc/arutils/cre_postgres.rb +33 -0
- data/etc/arutils/cre_sqlite3.rb +28 -0
- data/etc/arutils/mysql_boot.sql +12 -0
- data/etc/arutils/postgres_boot.sql +14 -0
- data/etc/database.mysql.yml +9 -0
- data/etc/database.postgres.yml +9 -0
- data/etc/passwd.example +3 -0
- data/etc/ppqinfo.rb +15 -0
- data/etc/runserver.sh +17 -0
- data/etc/stompserver_ng +50 -0
- data/etc/stompserver_ng.conf +13 -0
- data/lib/stomp_server_ng.rb +471 -0
- data/lib/stomp_server_ng/protocols/http.rb +128 -0
- data/lib/stomp_server_ng/protocols/stomp.rb +407 -0
- data/lib/stomp_server_ng/qmonitor.rb +58 -0
- data/lib/stomp_server_ng/queue.rb +248 -0
- data/lib/stomp_server_ng/queue/activerecord_queue.rb +118 -0
- data/lib/stomp_server_ng/queue/ar_message.rb +21 -0
- data/lib/stomp_server_ng/queue/ar_reconnect.rb +18 -0
- data/lib/stomp_server_ng/queue/dbm_queue.rb +72 -0
- data/lib/stomp_server_ng/queue/file_queue.rb +56 -0
- data/lib/stomp_server_ng/queue/memory_queue.rb +64 -0
- data/lib/stomp_server_ng/queue_manager.rb +302 -0
- data/lib/stomp_server_ng/stomp_auth.rb +26 -0
- data/lib/stomp_server_ng/stomp_frame.rb +32 -0
- data/lib/stomp_server_ng/stomp_frame_recognizer.rb +77 -0
- data/lib/stomp_server_ng/stomp_id.rb +32 -0
- data/lib/stomp_server_ng/stomp_user.rb +17 -0
- data/lib/stomp_server_ng/test_server.rb +21 -0
- data/lib/stomp_server_ng/topic_manager.rb +46 -0
- data/setup.rb +1585 -0
- data/stompserver_ng.gemspec +136 -0
- data/test/devserver/props.yaml +5 -0
- data/test/devserver/runserver.sh +16 -0
- data/test/devserver/stompserver_ng.dbm.conf +12 -0
- data/test/devserver/stompserver_ng.file.conf +12 -0
- data/test/devserver/stompserver_ng.memory.conf +12 -0
- data/test/noserver/mocklogger.rb +12 -0
- data/test/noserver/test_queue_manager.rb +134 -0
- data/test/noserver/test_stomp_frame.rb +138 -0
- data/test/noserver/test_topic_manager.rb +79 -0
- data/test/noserver/ts_all_no_server.rb +12 -0
- data/test/props.yaml +5 -0
- data/test/runalltests.sh +14 -0
- data/test/runtest.sh +4 -0
- data/test/test_0000_base.rb +107 -0
- data/test/test_0001_conn.rb +47 -0
- data/test/test_0002_conn_sr.rb +94 -0
- data/test/test_0006_client.rb +41 -0
- data/test/test_0011_send_recv.rb +74 -0
- data/test/test_0015_ack_conn.rb +78 -0
- data/test/test_0017_ack_client.rb +78 -0
- data/test/test_0019_ack_no_ack.rb +145 -0
- data/test/test_0022_ack_noack_conn.rb +123 -0
- data/test/test_0030_subscr_id.rb +44 -0
- data/test/test_0040_receipt_conn.rb +87 -0
- data/test/ts_all_server.rb +10 -0
- metadata +196 -0
@@ -0,0 +1,136 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{stompserver_ng}
|
8
|
+
s.version = "1.0.6"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Patrick Hurley", "Lionel Bouton", "snacktime", "gyver", "Mike Mangino", "robl", "gmallard"]
|
12
|
+
s.date = %q{2011-04-21}
|
13
|
+
s.default_executable = %q{stompserver_ng}
|
14
|
+
s.description = %q{STOMP Next Generation Ruby server.}
|
15
|
+
s.email = ["phurley-blocked@rubyforge.org", "lionel-dev@bouton.name", "snacktime@somewhere.com", "gyver@somewhere.com", "mmangino-blocked@rubyforge.org", "robl@monkeyhelper.com", "allard.guy.m@gmail.com"]
|
16
|
+
s.executables = ["stompserver_ng"]
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"README.txt"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
"History.txt",
|
22
|
+
"Manifest.txt",
|
23
|
+
"README.txt",
|
24
|
+
"Rakefile",
|
25
|
+
"STATUS",
|
26
|
+
"bin/stompserver_ng",
|
27
|
+
"client/README.txt",
|
28
|
+
"client/both.rb",
|
29
|
+
"client/consume.rb",
|
30
|
+
"client/send.rb",
|
31
|
+
"config/stompserver_ng.conf",
|
32
|
+
"etc/19xcompat/notes.txt",
|
33
|
+
"etc/arutils/README-activerecord.txt",
|
34
|
+
"etc/arutils/cre_mysql.rb",
|
35
|
+
"etc/arutils/cre_postgres.rb",
|
36
|
+
"etc/arutils/cre_sqlite3.rb",
|
37
|
+
"etc/arutils/mysql_boot.sql",
|
38
|
+
"etc/arutils/postgres_boot.sql",
|
39
|
+
"etc/database.mysql.yml",
|
40
|
+
"etc/database.postgres.yml",
|
41
|
+
"etc/passwd.example",
|
42
|
+
"etc/ppqinfo.rb",
|
43
|
+
"etc/runserver.sh",
|
44
|
+
"etc/stompserver_ng",
|
45
|
+
"etc/stompserver_ng.conf",
|
46
|
+
"lib/stomp_server_ng.rb",
|
47
|
+
"lib/stomp_server_ng/protocols/http.rb",
|
48
|
+
"lib/stomp_server_ng/protocols/stomp.rb",
|
49
|
+
"lib/stomp_server_ng/qmonitor.rb",
|
50
|
+
"lib/stomp_server_ng/queue.rb",
|
51
|
+
"lib/stomp_server_ng/queue/activerecord_queue.rb",
|
52
|
+
"lib/stomp_server_ng/queue/ar_message.rb",
|
53
|
+
"lib/stomp_server_ng/queue/ar_reconnect.rb",
|
54
|
+
"lib/stomp_server_ng/queue/dbm_queue.rb",
|
55
|
+
"lib/stomp_server_ng/queue/file_queue.rb",
|
56
|
+
"lib/stomp_server_ng/queue/memory_queue.rb",
|
57
|
+
"lib/stomp_server_ng/queue_manager.rb",
|
58
|
+
"lib/stomp_server_ng/stomp_auth.rb",
|
59
|
+
"lib/stomp_server_ng/stomp_frame.rb",
|
60
|
+
"lib/stomp_server_ng/stomp_frame_recognizer.rb",
|
61
|
+
"lib/stomp_server_ng/stomp_id.rb",
|
62
|
+
"lib/stomp_server_ng/stomp_user.rb",
|
63
|
+
"lib/stomp_server_ng/test_server.rb",
|
64
|
+
"lib/stomp_server_ng/topic_manager.rb",
|
65
|
+
"setup.rb",
|
66
|
+
"stompserver_ng.gemspec",
|
67
|
+
"test/devserver/props.yaml",
|
68
|
+
"test/devserver/runserver.sh",
|
69
|
+
"test/devserver/stompserver_ng.dbm.conf",
|
70
|
+
"test/devserver/stompserver_ng.file.conf",
|
71
|
+
"test/devserver/stompserver_ng.memory.conf",
|
72
|
+
"test/noserver/mocklogger.rb",
|
73
|
+
"test/noserver/test_queue_manager.rb",
|
74
|
+
"test/noserver/test_stomp_frame.rb",
|
75
|
+
"test/noserver/test_topic_manager.rb",
|
76
|
+
"test/noserver/ts_all_no_server.rb",
|
77
|
+
"test/props.yaml",
|
78
|
+
"test/runalltests.sh",
|
79
|
+
"test/runtest.sh",
|
80
|
+
"test/test_0000_base.rb",
|
81
|
+
"test/test_0001_conn.rb",
|
82
|
+
"test/test_0002_conn_sr.rb",
|
83
|
+
"test/test_0006_client.rb",
|
84
|
+
"test/test_0011_send_recv.rb",
|
85
|
+
"test/test_0015_ack_conn.rb",
|
86
|
+
"test/test_0017_ack_client.rb",
|
87
|
+
"test/test_0019_ack_no_ack.rb",
|
88
|
+
"test/test_0022_ack_noack_conn.rb",
|
89
|
+
"test/test_0030_subscr_id.rb",
|
90
|
+
"test/test_0040_receipt_conn.rb",
|
91
|
+
"test/ts_all_server.rb"
|
92
|
+
]
|
93
|
+
s.homepage = %q{http://github.com/gmallard/stompserver_ng}
|
94
|
+
s.require_paths = ["lib"]
|
95
|
+
s.rubygems_version = %q{1.3.7}
|
96
|
+
s.summary = %q{A very light messaging server, next generation}
|
97
|
+
s.test_files = [
|
98
|
+
"test/noserver/mocklogger.rb",
|
99
|
+
"test/noserver/test_queue_manager.rb",
|
100
|
+
"test/noserver/test_stomp_frame.rb",
|
101
|
+
"test/noserver/test_topic_manager.rb",
|
102
|
+
"test/noserver/ts_all_no_server.rb",
|
103
|
+
"test/test_0000_base.rb",
|
104
|
+
"test/test_0001_conn.rb",
|
105
|
+
"test/test_0002_conn_sr.rb",
|
106
|
+
"test/test_0006_client.rb",
|
107
|
+
"test/test_0011_send_recv.rb",
|
108
|
+
"test/test_0015_ack_conn.rb",
|
109
|
+
"test/test_0017_ack_client.rb",
|
110
|
+
"test/test_0019_ack_no_ack.rb",
|
111
|
+
"test/test_0022_ack_noack_conn.rb",
|
112
|
+
"test/test_0030_subscr_id.rb",
|
113
|
+
"test/test_0040_receipt_conn.rb",
|
114
|
+
"test/ts_all_server.rb"
|
115
|
+
]
|
116
|
+
|
117
|
+
if s.respond_to? :specification_version then
|
118
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
119
|
+
s.specification_version = 3
|
120
|
+
|
121
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
122
|
+
s.add_runtime_dependency(%q<daemons>, [">= 1.0.10"])
|
123
|
+
s.add_runtime_dependency(%q<eventmachine>, [">= 0.12.10"])
|
124
|
+
s.add_runtime_dependency(%q<uuid>, [">= 2.1.0"])
|
125
|
+
else
|
126
|
+
s.add_dependency(%q<daemons>, [">= 1.0.10"])
|
127
|
+
s.add_dependency(%q<eventmachine>, [">= 0.12.10"])
|
128
|
+
s.add_dependency(%q<uuid>, [">= 2.1.0"])
|
129
|
+
end
|
130
|
+
else
|
131
|
+
s.add_dependency(%q<daemons>, [">= 1.0.10"])
|
132
|
+
s.add_dependency(%q<eventmachine>, [">= 0.12.10"])
|
133
|
+
s.add_dependency(%q<uuid>, [">= 2.1.0"])
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#
|
3
|
+
set -x
|
4
|
+
#
|
5
|
+
PH=$(pwd)
|
6
|
+
echo "Project Home: $PH"
|
7
|
+
mtype=${QMEM:-.file}
|
8
|
+
CONFIG=$PH/test/devserver/stompserver_ng${mtype}.conf
|
9
|
+
echo "Using Config: $CONFIG"
|
10
|
+
#
|
11
|
+
FLAGS="--log_level=debug --config=$CONFIG $*"
|
12
|
+
#
|
13
|
+
ruby -I $(pwd)/lib bin/stompserver_ng $FLAGS
|
14
|
+
#
|
15
|
+
set +x
|
16
|
+
|
@@ -0,0 +1,134 @@
|
|
1
|
+
require 'logger'
|
2
|
+
$:.unshift File.dirname(__FILE__)
|
3
|
+
require 'mocklogger'
|
4
|
+
#
|
5
|
+
require 'stomp_server/stomp_id'
|
6
|
+
require 'stomp_server/stomp_frame'
|
7
|
+
require 'stomp_server/queue_manager'
|
8
|
+
require 'stomp_server/queue'
|
9
|
+
require 'stomp_server/queue/file_queue'
|
10
|
+
require 'stomp_server/queue/memory_queue'
|
11
|
+
require 'stomp_server/queue/dbm_queue'
|
12
|
+
require 'test/unit'
|
13
|
+
require 'fileutils'
|
14
|
+
|
15
|
+
class TestQueues < Test::Unit::TestCase
|
16
|
+
|
17
|
+
class MockQueueManager < StompServer::QueueManager
|
18
|
+
def initialize(qstore)
|
19
|
+
super(qstore)
|
20
|
+
@qstore = qstore
|
21
|
+
@queue_stats = Hash.new
|
22
|
+
@queues = Hash.new { Array.new }
|
23
|
+
@pending = Hash.new { Array.new }
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class UserMock
|
28
|
+
attr_accessor :data
|
29
|
+
def initialize ; @data = '' ; end
|
30
|
+
def stomp_send_data(data); @data += data.to_s ; end
|
31
|
+
def connected?;true;end
|
32
|
+
end
|
33
|
+
|
34
|
+
class MessageMock
|
35
|
+
attr_accessor :headers, :data, :command, :body
|
36
|
+
def initialize(dest, msg, id=1)
|
37
|
+
@body = msg
|
38
|
+
@headers = {
|
39
|
+
'message-id' => id,
|
40
|
+
'destination' => dest,
|
41
|
+
'content-length' => msg.size.to_s
|
42
|
+
}
|
43
|
+
|
44
|
+
@frame = StompServer::StompFrame.new('MESSAGE', headers, body)
|
45
|
+
@data = @frame.to_s
|
46
|
+
end
|
47
|
+
def to_s ; @data.to_s ; end
|
48
|
+
end
|
49
|
+
|
50
|
+
def teardown
|
51
|
+
FileUtils.rm_rf(".queue_test")
|
52
|
+
end
|
53
|
+
|
54
|
+
def setup
|
55
|
+
FileUtils.rm_rf(".queue_test") if File.directory?('.queue_test')
|
56
|
+
@@qstore = StompServer::FileQueue.new(".queue_test")
|
57
|
+
@@qstore.checkpoint_interval=0
|
58
|
+
@t = MockQueueManager.new(@@qstore)
|
59
|
+
@log = Logger.new(STDOUT)
|
60
|
+
@log.level = Logger::DEBUG
|
61
|
+
end
|
62
|
+
|
63
|
+
# def test_subscribe
|
64
|
+
# u = UserMock.new
|
65
|
+
# t = 'foo'
|
66
|
+
# @t.subscribe(t, u)
|
67
|
+
#
|
68
|
+
# m1 = MessageMock.new('foo', 'foomsg')
|
69
|
+
# m2 = MessageMock.new('bar', 'barmsg')
|
70
|
+
# @t.sendmsg(m1)
|
71
|
+
# assert_equal(m1.data, u.data)
|
72
|
+
#
|
73
|
+
# u.data = ''
|
74
|
+
# @t.sendmsg(m2)
|
75
|
+
# assert_equal('', u.data)
|
76
|
+
# end
|
77
|
+
|
78
|
+
def test_subscribe2
|
79
|
+
@log.debug("test_subscribe2 starts")
|
80
|
+
t = 'sub2'
|
81
|
+
m1 = MessageMock.new(t, 'sub2msg')
|
82
|
+
@t.sendmsg(m1)
|
83
|
+
|
84
|
+
u = UserMock.new
|
85
|
+
@t.subscribe(t, u)
|
86
|
+
|
87
|
+
assert_equal(m1.data, u.data)
|
88
|
+
@log.debug("test_subscribe2 ends")
|
89
|
+
end
|
90
|
+
|
91
|
+
# def test_unsubscribe
|
92
|
+
# u = UserMock.new
|
93
|
+
# t = 'foo'
|
94
|
+
# @t.subscribe(t, u)
|
95
|
+
#
|
96
|
+
# m1 = MessageMock.new('foo', 'foomsg')
|
97
|
+
# @t.sendmsg(m1)
|
98
|
+
# assert_equal(m1.data, u.data)
|
99
|
+
#
|
100
|
+
# @t.unsubscribe(t,u)
|
101
|
+
# u.data = ''
|
102
|
+
# @t.sendmsg(m1)
|
103
|
+
# assert_equal('', u.data)
|
104
|
+
# end
|
105
|
+
|
106
|
+
# def test_sendmsg
|
107
|
+
# u = UserMock.new
|
108
|
+
# t = 'foo'
|
109
|
+
# @t.subscribe(t, u)
|
110
|
+
#
|
111
|
+
# m1 = MessageMock.new('foo', 'foomsg')
|
112
|
+
# @t.sendmsg(m1)
|
113
|
+
# assert_equal(m1.data, u.data)
|
114
|
+
# assert_equal('MESSAGE', m1.command)
|
115
|
+
# end
|
116
|
+
|
117
|
+
def test_queued_sendmsg
|
118
|
+
@log.debug("test_queued_sendmsg starts")
|
119
|
+
t = 'foo'
|
120
|
+
m1 = MessageMock.new('foo', 'foomsg')
|
121
|
+
@t.sendmsg(m1)
|
122
|
+
|
123
|
+
u = UserMock.new
|
124
|
+
@t.subscribe(t, u)
|
125
|
+
|
126
|
+
assert_equal(m1.data, u.data)
|
127
|
+
assert_equal('MESSAGE', m1.command)
|
128
|
+
|
129
|
+
u2 = UserMock.new
|
130
|
+
@t.subscribe(t, u2)
|
131
|
+
assert_equal('', u2.data)
|
132
|
+
@log.debug("test_queued_sendmsg ends")
|
133
|
+
end
|
134
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
require 'logger'
|
2
|
+
$:.unshift File.dirname(__FILE__)
|
3
|
+
require 'mocklogger'
|
4
|
+
require 'stomp_server/stomp_frame'
|
5
|
+
require 'test/unit' unless defined? $ZENTEST and $ZENTEST
|
6
|
+
|
7
|
+
class TestStompFrame < Test::Unit::TestCase
|
8
|
+
def setup
|
9
|
+
@sfr = StompServer::StompFrameRecognizer.new
|
10
|
+
@log = Logger.new(STDOUT)
|
11
|
+
@log.level = Logger::DEBUG
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_simpleframe
|
15
|
+
@log.debug("test_simpleframe starts")
|
16
|
+
@sfr << <<FRAME
|
17
|
+
COMMAND
|
18
|
+
name:value
|
19
|
+
foo:bar
|
20
|
+
|
21
|
+
message body
|
22
|
+
\000
|
23
|
+
FRAME
|
24
|
+
assert_equal(1, @sfr.frames.size)
|
25
|
+
f = @sfr.frames.shift
|
26
|
+
assert_equal(0, @sfr.frames.size)
|
27
|
+
assert_equal("COMMAND", f.command)
|
28
|
+
assert_equal("value", f.headers["name"])
|
29
|
+
assert_equal("bar", f.headers["foo"])
|
30
|
+
assert_equal("message body\n", f.body)
|
31
|
+
@log.debug("test_simpleframe ends")
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_doubleframe
|
35
|
+
@log.debug("test_doubleframe starts")
|
36
|
+
@sfr << <<FRAME
|
37
|
+
COMMAND
|
38
|
+
name:value
|
39
|
+
foo:bar
|
40
|
+
|
41
|
+
message body
|
42
|
+
\000
|
43
|
+
|
44
|
+
COMMAND2
|
45
|
+
name2:value2
|
46
|
+
foo2:bar2
|
47
|
+
|
48
|
+
message body 2
|
49
|
+
\000
|
50
|
+
FRAME
|
51
|
+
assert_equal(2, @sfr.frames.size)
|
52
|
+
f = @sfr.frames.shift
|
53
|
+
assert_equal(1, @sfr.frames.size)
|
54
|
+
assert_equal("COMMAND", f.command)
|
55
|
+
assert_equal("value", f.headers["name"])
|
56
|
+
assert_equal("bar", f.headers["foo"])
|
57
|
+
assert_equal("message body\n", f.body)
|
58
|
+
|
59
|
+
# check second frame
|
60
|
+
f = @sfr.frames.shift
|
61
|
+
assert_equal(0, @sfr.frames.size)
|
62
|
+
assert_equal("COMMAND2", f.command)
|
63
|
+
assert_equal("value2", f.headers["name2"])
|
64
|
+
assert_equal("bar2", f.headers["foo2"])
|
65
|
+
assert_equal("message body 2\n", f.body)
|
66
|
+
@log.debug("test_doubleframe ends")
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_partialframe
|
70
|
+
@log.debug("test_partialframe starts")
|
71
|
+
@sfr << <<FRAME
|
72
|
+
COMMAND
|
73
|
+
name:value
|
74
|
+
foo:bar
|
75
|
+
|
76
|
+
message body
|
77
|
+
\000
|
78
|
+
|
79
|
+
COMMAND2
|
80
|
+
name2:value2
|
81
|
+
foo2:bar2
|
82
|
+
|
83
|
+
message body 2
|
84
|
+
FRAME
|
85
|
+
assert_equal(1, @sfr.frames.size)
|
86
|
+
f = @sfr.frames.shift
|
87
|
+
assert_equal(0, @sfr.frames.size)
|
88
|
+
assert_equal("COMMAND", f.command)
|
89
|
+
assert_equal("value", f.headers["name"])
|
90
|
+
assert_equal("bar", f.headers["foo"])
|
91
|
+
assert_equal("message body\n", f.body)
|
92
|
+
@log.debug("test_partialframe ends")
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_partialframe2
|
96
|
+
@log.debug("test_partialframe2 starts")
|
97
|
+
@sfr << <<FRAME
|
98
|
+
COMMAND
|
99
|
+
name:value
|
100
|
+
foo:bar
|
101
|
+
FRAME
|
102
|
+
assert_equal(0, @sfr.frames.size)
|
103
|
+
@log.debug("test_partialframe2 ends")
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_headless_frame
|
107
|
+
@log.debug("test_headless_frame starts")
|
108
|
+
@sfr << <<FRAME
|
109
|
+
COMMAND
|
110
|
+
|
111
|
+
message body\000
|
112
|
+
FRAME
|
113
|
+
assert_equal(1, @sfr.frames.size)
|
114
|
+
f = @sfr.frames.shift
|
115
|
+
assert_equal(0, @sfr.frames.size)
|
116
|
+
assert_equal("COMMAND", f.command)
|
117
|
+
assert_equal("message body", f.body)
|
118
|
+
@log.debug("test_headless_frame ends")
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_destination_cache
|
122
|
+
@log.debug("test_destination_cache starts")
|
123
|
+
@sfr << <<FRAME
|
124
|
+
MESSAGE
|
125
|
+
destination: /queue/foo
|
126
|
+
|
127
|
+
message body\000
|
128
|
+
FRAME
|
129
|
+
assert_equal(1, @sfr.frames.size)
|
130
|
+
f = @sfr.frames.shift
|
131
|
+
assert_equal(0, @sfr.frames.size)
|
132
|
+
assert_equal("MESSAGE", f.command)
|
133
|
+
assert_equal("message body", f.body)
|
134
|
+
assert_equal('/queue/foo', f.dest)
|
135
|
+
@log.debug("test_destination_cache ends")
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|