8 "github.com/gmallard/stompngo/senv"
12 if os
.Getenv("STOMP_HB11LONG") != "" {
13 testhbrd
.testhbl
= true
14 testhbrd
.testhbvb
= true
18 //=============================================================================
19 //= ack_test type =============================================================
20 //=============================================================================
29 //=============================================================================
30 //= ack_test var ==============================================================
31 //=============================================================================
33 terrList
= []terrData
{
35 Headers
{HK_DESTINATION
, "/queue/a"},
38 Headers
{HK_DESTINATION
, "/queue/a"},
41 Headers
{HK_DESTINATION
, "/queue/a", HK_SUBSCRIPTION
, "sub11a"},
44 Headers
{HK_DESTINATION
, "/queue/a"},
49 //=============================================================================
50 //= ack_test const ============================================================
51 //=============================================================================
56 //=============================================================================
57 //= codec_test type ===========================================================
58 //=============================================================================
67 //=============================================================================
68 //= codec_test var ============================================================
69 //=============================================================================
73 {"stringa", "stringa"},
74 {"stringb", "stringb"},
75 {"stringc", "stringc"},
76 {"stringd", "stringd"},
77 {"stringe", "stringe"},
78 {"stringf", "stringf"},
79 {"stringg", "stringg"},
80 {"stringh", "stringh"},
84 {"\\\\\\n\\c", "\\\n:"},
85 {"\\c\\n\\\\", ":\n\\"},
92 //=============================================================================
93 //= codec_test const ==========================================================
94 //=============================================================================
99 //=============================================================================
100 //= connbv_test type ==========================================================
101 //=============================================================================
106 //=============================================================================
107 //= connbv_test var ===========================================================
108 //=============================================================================
113 //=============================================================================
114 //= connbv_test const =========================================================
115 //=============================================================================
120 //=============================================================================
121 //= conndisc_test type ========================================================
122 //=============================================================================
129 ch Headers
// Client headers
130 sh Headers
// Server headers
131 e error
// Expected error
135 //=============================================================================
136 //= conndisc_test var =========================================================
137 //=============================================================================
139 frames
= []frameData
{ // Many are possible but very unlikely
140 {"EBADFRM", EBADFRM
},
141 {"EUNKFRM\n\n\x00", EUNKFRM
},
142 {"ERROR\n\n\x00", nil},
143 {"ERROR\n\x00", EBADFRM
},
144 {"ERROR\n\n", EBADFRM
},
145 {"ERROR\nbadconhdr\n\n\x00", EUNKHDR
},
146 {"ERROR\nbadcon:badmsg\n\n\x00", nil},
147 {"ERROR\nbadcon:badmsg\n\nbad message\x00", nil},
148 {"CONNECTED\n\n\x00", nil},
149 {"CONNECTED\n\nconnbody\x00", EBDYDATA
},
150 {"CONNECTED\n\nconnbadbody", EBDYDATA
},
151 {"CONNECTED\nk1:v1\nk2:v2\n\nconnbody\x00", EBDYDATA
},
152 {"CONNECTED\nk1:v1\nk2:v2\n\nconnbody", EBDYDATA
},
153 {"CONNECTED\nk1:v1\nk2:v2\n\n\x00", nil},
155 verChecks
= []verData
{
156 {Headers
{HK_ACCEPT_VERSION
, SPL_11
}, Headers
{HK_VERSION
, SPL_11
}, nil},
157 {Headers
{}, Headers
{}, nil},
158 {Headers
{HK_ACCEPT_VERSION
, "1.0,1.1,1.2"}, Headers
{HK_VERSION
, SPL_12
}, nil},
159 {Headers
{HK_ACCEPT_VERSION
, "1.3"}, Headers
{HK_VERSION
, "1.3"}, EBADVERSVR
},
160 {Headers
{HK_ACCEPT_VERSION
, "1.3"}, Headers
{HK_VERSION
, "1.1"}, EBADVERCLI
},
161 {Headers
{HK_ACCEPT_VERSION
, "1.0,1.1,1.2"}, Headers
{}, nil},
165 //=============================================================================
166 //= conndisc_test const =======================================================
167 //=============================================================================
172 //=============================================================================
173 //= data_test type ============================================================
174 //=============================================================================
179 //=============================================================================
180 //= data_test var =============================================================
181 //=============================================================================
183 suptests
= []supdata
{
193 //=============================================================================
194 //= data_test const ===========================================================
195 //=============================================================================
200 //=============================================================================
201 //= hb_test type ==============================================================
202 //=============================================================================
205 testhbl
bool // Run long heartbeat tests
206 testhbvb
bool // Verbose long heartbeat tests
210 //=============================================================================
211 //= hb_test var ===============================================================
212 //=============================================================================
214 testhbrd
= hbrundata
{
220 //=============================================================================
221 //= hb_test const =============================================================
222 //=============================================================================
225 hbs
= 45 // Wait time (secs)
228 //=============================================================================
229 //= headers_test type =========================================================
230 //=============================================================================
235 //=============================================================================
236 //= headers_test var ==========================================================
237 //=============================================================================
242 //=============================================================================
243 //= headers_test const ========================================================
244 //=============================================================================
249 //=============================================================================
250 //= logger_test type ==========================================================
251 //=============================================================================
256 //=============================================================================
257 //= logger_test var ===========================================================
258 //=============================================================================
263 //=============================================================================
264 //= logger_test const =========================================================
265 //=============================================================================
270 //=============================================================================
271 //= misc_test type ============================================================
272 //=============================================================================
277 //=============================================================================
278 //= misc_test var =============================================================
279 //=============================================================================
284 //=============================================================================
285 //= misc_test const ===========================================================
286 //=============================================================================
291 //=============================================================================
292 //= nack_test type ============================================================
293 //=============================================================================
302 //=============================================================================
303 //= nack_test var =============================================================
304 //=============================================================================
306 nackList
= []nackData
{
308 Headers
{HK_DESTINATION
, "/queue/a"},
311 Headers
{HK_DESTINATION
, "/queue/a"},
314 Headers
{HK_DESTINATION
, "/queue/a", HK_SUBSCRIPTION
, "sub11a"},
317 Headers
{HK_DESTINATION
, "/queue/a"},
322 //=============================================================================
323 //= nack_test const ===========================================================
324 //=============================================================================
329 //=============================================================================
330 //= send_test type ============================================================
331 //=============================================================================
336 //=============================================================================
337 //= send_test var =============================================================
338 //=============================================================================
343 //=============================================================================
344 //= send_test const ===========================================================
345 //=============================================================================
351 // sendbytes_test BEGIN
353 //=============================================================================
354 //= sendbytes_test type =======================================================
355 //=============================================================================
360 //=============================================================================
361 //= sendbytes_test var ========================================================
362 //=============================================================================
367 //=============================================================================
368 //= sendbytes_test const ======================================================
369 //=============================================================================
374 //=============================================================================
375 //= sub_test type =============================================================
376 //=============================================================================
378 subNoHeaderData
struct {
389 subPlainData
struct {
397 subTwiceData
struct {
411 //=============================================================================
412 //= sub_test var ==============================================================
413 //=============================================================================
415 subNoHeaderDataList
= []subNoHeaderData
{
416 {SPL_10
, EREQDSTSUB
},
417 {SPL_11
, EREQDSTSUB
},
418 {SPL_12
, EREQDSTSUB
},
420 subNoIDDataList
= []subNoIDData
{
422 Headers
{HK_DESTINATION
, "/queue/subNoIDTest.10"},
425 Headers
{HK_DESTINATION
, "/queue/subNoIDTest.11"},
428 Headers
{HK_DESTINATION
, "/queue/subNoIDTest.12"},
431 subPlainDataList
= []subPlainData
{
433 Headers
{HK_DESTINATION
, "/queue/subPlainTest.10",
434 HK_ID
, "subPlainTest.10"},
435 Headers
{HK_DESTINATION
, "/queue/subPlainTest.10",
436 HK_ID
, "subPlainTest.10"},
439 Headers
{HK_DESTINATION
, "/queue/subPlainTest.11",
440 HK_ID
, "subPlainTest.11"},
441 Headers
{HK_DESTINATION
, "/queue/subPlainTest.11",
442 HK_ID
, "subPlainTest.11"},
445 Headers
{HK_DESTINATION
, "/queue/subPlainTest.12",
446 HK_ID
, "subPlainTest.11"},
447 Headers
{HK_DESTINATION
, "/queue/subPlainTest.12",
448 HK_ID
, "subPlainTest.11"},
452 subTwiceDataList
= []subTwiceData
{
454 Headers
{HK_DESTINATION
, "/queue/subTwiceTest.10",
455 HK_ID
, "subTwiceTest.10"},
458 Headers
{HK_DESTINATION
, "/queue/subTwiceTest.11",
459 HK_ID
, "subTwiceTest.11"},
462 Headers
{HK_DESTINATION
, "/queue/subTwiceTest.12",
463 HK_ID
, "subTwiceTest.11"},
467 subAckDataList
= []subAckData
{
470 Headers
{HK_DESTINATION
, "/queue/subAckTest.10.1"},
473 Headers
{HK_DESTINATION
, "/queue/subAckTest.10.2",
474 HK_ACK
, AckModeAuto
},
477 Headers
{HK_DESTINATION
, "/queue/subAckTest.10.3",
478 HK_ACK
, AckModeClient
},
481 Headers
{HK_DESTINATION
, "/queue/subAckTest.10.3",
482 HK_ACK
, AckModeClientIndividual
},
485 Headers
{HK_DESTINATION
, "/queue/subAckTest.10.4",
490 Headers
{HK_DESTINATION
, "/queue/subAckTest.11.1"},
493 Headers
{HK_DESTINATION
, "/queue/subAckTest.11.2",
494 HK_ACK
, AckModeAuto
},
497 Headers
{HK_DESTINATION
, "/queue/subAckTest.11.3",
498 HK_ACK
, AckModeClient
},
501 Headers
{HK_DESTINATION
, "/queue/subAckTest.11.4",
502 HK_ACK
, AckModeClientIndividual
},
505 Headers
{HK_DESTINATION
, "/queue/subAckTest.11.5",
510 Headers
{HK_DESTINATION
, "/queue/subAckTest.12.1"},
513 Headers
{HK_DESTINATION
, "/queue/subAckTest.12.2",
514 HK_ACK
, AckModeAuto
},
517 Headers
{HK_DESTINATION
, "/queue/subAckTest.12.3",
518 HK_ACK
, AckModeClient
},
521 Headers
{HK_DESTINATION
, "/queue/subAckTest.12.4",
522 HK_ACK
, AckModeClientIndividual
},
525 Headers
{HK_DESTINATION
, "/queue/subAckTest.12.5",
531 //=============================================================================
532 //= sub_test const ============================================================
533 //=============================================================================
538 //=============================================================================
539 //= suppress_test type ========================================================
540 //=============================================================================
545 //=============================================================================
546 //= suppress_test var =========================================================
547 //=============================================================================
549 tsclData
= []struct {
554 []uint8{0x61, 0x62, 0x63, 0x64, 0x65, 0x66},
558 []uint8{0x61, 0x62, 0x63, 0x00, 0x64, 0x65, 0x66},
562 []uint8{0x64, 0x65, 0x66, 0x00},
566 []uint8{0x00, 0x64, 0x65, 0x66, 0x00},
570 tsctData
= []struct {
588 //=============================================================================
589 //= suppress_test const =======================================================
590 //=============================================================================
595 //=============================================================================
596 //= testdata_test type ========================================================
597 //=============================================================================
600 sendRecvCodecData
struct {
602 sk
[]string // send keys
603 sv
[]string // send values
604 rv
map[string]string // expected receive value
608 s
bool // is supported
612 //=============================================================================
613 //= testdata_test var =========================================================
614 //=============================================================================
616 srcdList10
= []sendRecvCodecData
{
618 sk
: []string{"keya"},
619 sv
: []string{"valuea"},
620 rv
: map[string]string{"keya": "valuea"}},
622 sk
: []string{"key:one"},
623 sv
: []string{"value:a"},
624 rv
: map[string]string{"key": "one:value:a"}},
627 sv
: []string{"valuec"},
628 rv
: map[string]string{"key": "valuec"}},
631 srcdList1p
= []sendRecvCodecData
{
633 sk
: []string{"keya"},
634 sv
: []string{"valuea"},
635 rv
: map[string]string{"keya": "valuea"}},
637 sk
: []string{"key:one", "key/ntwo", "key:three/naaa\\bbb"},
638 sv
: []string{"value\\one", "value:two\\back:slash", "value\\three:aaa/nbbb"},
639 rv
: map[string]string{"key:one": "value\\one",
640 "key/ntwo": "value:two\\back:slash",
641 "key:three/naaa\\bbb": "value\\three:aaa/nbbb"}},
644 srcdmap
= map[string][]sendRecvCodecData
{SPL_10
: srcdList10
,
649 //=============================================================================
650 //= testdata_test const =======================================================
651 //=============================================================================
656 //=============================================================================
657 //= trans_test type ===========================================================
658 //=============================================================================
660 transBasicData
struct {
665 transSendCommitData
struct {
669 transSendAbortData
struct {
673 transMessageOrderData
struct {
679 //=============================================================================
680 //= trans_test var ============================================================
681 //=============================================================================
683 transBasicList
= []transBasicData
{
684 {BEGIN
, Headers
{}, EREQTIDBEG
},
685 {COMMIT
, Headers
{}, EREQTIDCOM
},
686 {ABORT
, Headers
{}, EREQTIDABT
},
687 {BEGIN
, Headers
{HK_TRANSACTION
, ""}, ETIDBEGEMT
},
688 {COMMIT
, Headers
{HK_TRANSACTION
, ""}, ETIDCOMEMT
},
689 {ABORT
, Headers
{HK_TRANSACTION
, ""}, ETIDABTEMT
},
691 transSendCommitList
= []transSendCommitData
{
692 {"trans.send.commit", nil},
695 transSendAbortList
= []transSendAbortData
{
696 {"trans.send.abort", nil},
698 transMessageOrderList
= []transMessageOrderData
{
699 {Headers
{HK_DESTINATION
, "/queue/tsrbdata.q"}, nil},
703 //=============================================================================
704 //= trans_test const ==========================================================
705 //=============================================================================
710 //=============================================================================
711 //= unsub_test type ===========================================================
712 //=============================================================================
714 unsubNoHeaderData
struct {
718 unsubNoIDData
struct {
723 unsubBoolData
struct {
733 //=============================================================================
734 //= unsub_test var ============================================================
735 //=============================================================================
737 unsubNoHeaderDataList
= []subNoHeaderData
{
742 unsubNoIDDataList
= []subNoIDData
{
748 Headers
{HK_DESTINATION
, "/queue/unsubIDTest.10.1"},
751 Headers
{HK_DESTINATION
, "/queue/unsubIDTest.10.2",
752 HK_ID
, "unsubIDTest.10.2"},
759 Headers
{HK_DESTINATION
, "/queue/unsubIDTest.11.1"},
762 Headers
{HK_DESTINATION
, "/queue/unsubIDTest.11.2",
763 HK_ID
, "unsubIDTest.11.2"},
770 Headers
{HK_DESTINATION
, "/queue/unsubIDTest.12.1"},
773 Headers
{HK_DESTINATION
, "/queue/unsubIDTest.12.2",
774 HK_ID
, "unsubIDTest.12.2"},
778 // REQIDUNS = Error("id required, UNSUBSCRIBE")
779 // REQDIUNS = Error("destination required, UNSUBSCRIBE")
781 unsubBoolDataList
= []unsubBoolData
{
790 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.10.1"},
791 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.10.1"},
795 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.10.2"},
796 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.10.2"},
806 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.11.1"},
807 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.11.1"},
811 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.11.2"},
812 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.11.2"},
822 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.12.1"},
823 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.12.1"},
827 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.10.1"},
828 Headers
{HK_DESTINATION
, "/queue/PlainDataTest.10.1"},
833 //=============================================================================
834 //= unsub_test const ==========================================================
835 //=============================================================================
840 //=============================================================================
841 //= utils_test type ===========================================================
842 //=============================================================================
844 multi_send_data
struct {
845 conn
*Connection
// this connection
846 dest
string // queue/topic name
847 mpref
string // message prefix
848 count
int // number of messages
852 //=============================================================================
853 //= utils_test var ============================================================
854 //=============================================================================
859 //=============================================================================
860 //= utils_test const ==========================================================
861 //=============================================================================
866 //=============================================================================
867 //= shovel_dup_headers_test type ==============================================
868 //=============================================================================
873 //=============================================================================
874 //= shovel_dup_headers_test var ===============================================
875 //=============================================================================
877 tsdhHeaders
= Headers
{
882 wantedDupeV1
= Headers
{
885 wantedDupeV2
= Headers
{
888 wantedDupeVAll
= Headers
{
894 //=============================================================================
895 //= shovel_dup_headers_test const =============================================
896 //=============================================================================
901 //=============================================================================
902 //= deadline_test type ========================================================
903 //=============================================================================
908 //=============================================================================
909 //= deadline_test var =========================================================
910 //=============================================================================
912 wdleInit
= false // Enabled just after init
915 //=============================================================================
916 //= deadline_test const =======================================================
917 //=============================================================================
922 //=============================================================================
923 //= for use by all type =======================================================
924 //=============================================================================
929 //=============================================================================
930 //= for use by all var ========================================================
931 //=============================================================================
933 TEST_HEADERS
= Headers
{HK_LOGIN
, "guest", HK_PASSCODE
, "guest"}
934 TEST_TDESTPREF
= "/queue/test.pref."
935 TEST_TRANID
= "TransactionA"
939 empty_headers
= Headers
{}
940 testuser
= senv
.Login()
941 testpw
= senv
.Passcode()
942 login_headers
= Headers
{HK_LOGIN
, testuser
, HK_PASSCODE
, testpw
}
943 rid
= "receipt-12345"
944 oneOnePlusProtos
= []string{SPL_11
, SPL_12
}
948 sc
<-chan MessageData
950 badam
= "AckModeInvalid"
952 tm
= "A Test Message."
953 tlg
= log
.New(os
.Stderr
, "TLG|", log
.Ldate|log
.Lmicroseconds
)
956 //=============================================================================
957 //= for use by all const ======================================================
958 //=============================================================================
960 TEST_ANYBROKER
= iota