anthill_smpp_ruby 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/MIT-LICENSE +21 -0
- data/README +30 -0
- data/anthill_smpp_ruby.gemspec +18 -0
- data/changelog +43 -0
- data/data/dumps/random_command.dump +1 -0
- data/data/dumps/smpp_alert_notification.dump +1 -0
- data/data/dumps/smpp_bind_receiver.dump +1 -0
- data/data/dumps/smpp_bind_receiver_resp.dump +1 -0
- data/data/dumps/smpp_bind_transceiver.dump +1 -0
- data/data/dumps/smpp_bind_transceiver_1.dump +2 -0
- data/data/dumps/smpp_bind_transceiver_resp.dump +1 -0
- data/data/dumps/smpp_bind_transmitter.dump +1 -0
- data/data/dumps/smpp_bind_transmitter_resp.dump +1 -0
- data/data/dumps/smpp_broadcast_sm.dump +1 -0
- data/data/dumps/smpp_broadcast_sm_resp.dump +1 -0
- data/data/dumps/smpp_cancel_broadcast_sm.dump +1 -0
- data/data/dumps/smpp_cancel_broadcast_sm_resp.dump +1 -0
- data/data/dumps/smpp_cancel_sm.dump +1 -0
- data/data/dumps/smpp_cancel_sm_resp.dump +1 -0
- data/data/dumps/smpp_data_sm.dump +1 -0
- data/data/dumps/smpp_data_sm_resp.dump +1 -0
- data/data/dumps/smpp_deliver_sm.dump +1 -0
- data/data/dumps/smpp_deliver_sm_resp.dump +1 -0
- data/data/dumps/smpp_enquire_link.dump +1 -0
- data/data/dumps/smpp_enquire_link_resp.dump +1 -0
- data/data/dumps/smpp_generic_nack.dump +1 -0
- data/data/dumps/smpp_outbind.dump +1 -0
- data/data/dumps/smpp_query_broadcast_sm.dump +1 -0
- data/data/dumps/smpp_query_broadcast_sm_resp.dump +1 -0
- data/data/dumps/smpp_query_broadcast_sm_resp_1.dump +1 -0
- data/data/dumps/smpp_query_sm.dump +1 -0
- data/data/dumps/smpp_query_sm_resp.dump +1 -0
- data/data/dumps/smpp_replace_sm.dump +1 -0
- data/data/dumps/smpp_replace_sm_resp.dump +1 -0
- data/data/dumps/smpp_submit_multi.dump +1 -0
- data/data/dumps/smpp_submit_multi_resp.dump +1 -0
- data/data/dumps/smpp_submit_sm.dump +1 -0
- data/data/dumps/smpp_submit_sm_resp.dump +1 -0
- data/data/dumps/smpp_unbind.dump +1 -0
- data/data/dumps/smpp_unbind_resp.dump +1 -0
- data/data/pdus/random_command.xml +35 -0
- data/data/pdus/smpp_alert_notification.xml +14 -0
- data/data/pdus/smpp_alert_notification_no_optional.xml +13 -0
- data/data/pdus/smpp_bind_receiver.xml +17 -0
- data/data/pdus/smpp_bind_receiver_resp.xml +12 -0
- data/data/pdus/smpp_bind_receiver_resp_no_optional.xml +11 -0
- data/data/pdus/smpp_bind_transceiver.xml +17 -0
- data/data/pdus/smpp_bind_transceiver_resp.xml +12 -0
- data/data/pdus/smpp_bind_transceiver_resp_no_optional.xml +11 -0
- data/data/pdus/smpp_bind_transmitter.xml +17 -0
- data/data/pdus/smpp_bind_transmitter_resp.xml +12 -0
- data/data/pdus/smpp_bind_transmitter_resp_no_optional.xml +11 -0
- data/data/pdus/smpp_broadcast_sm.xml +47 -0
- data/data/pdus/smpp_broadcast_sm_no_optional.xml +26 -0
- data/data/pdus/smpp_broadcast_sm_resp.xml +14 -0
- data/data/pdus/smpp_broadcast_sm_resp_no_optional.xml +8 -0
- data/data/pdus/smpp_cancel_broadcast_sm.xml +17 -0
- data/data/pdus/smpp_cancel_broadcast_sm_no_optional.xml +15 -0
- data/data/pdus/smpp_cancel_broadcast_sm_resp.xml +7 -0
- data/data/pdus/smpp_cancel_sm.xml +18 -0
- data/data/pdus/smpp_cancel_sm_resp.xml +10 -0
- data/data/pdus/smpp_commands.xsd +914 -0
- data/data/pdus/smpp_data_sm.xml +58 -0
- data/data/pdus/smpp_data_sm_no_optional.xml +17 -0
- data/data/pdus/smpp_data_sm_resp.xml +15 -0
- data/data/pdus/smpp_data_sm_resp_no_optional.xml +8 -0
- data/data/pdus/smpp_deliver_sm.xml +46 -0
- data/data/pdus/smpp_deliver_sm_no_optional.xml +25 -0
- data/data/pdus/smpp_deliver_sm_resp.xml +14 -0
- data/data/pdus/smpp_deliver_sm_resp_no_optional.xml +8 -0
- data/data/pdus/smpp_enquire_link.xml +10 -0
- data/data/pdus/smpp_enquire_link_resp.xml +10 -0
- data/data/pdus/smpp_generic_nack.xml +10 -0
- data/data/pdus/smpp_outbind.xml +12 -0
- data/data/pdus/smpp_query_broadcast_sm.xml +12 -0
- data/data/pdus/smpp_query_broadcast_sm_no_optional.xml +11 -0
- data/data/pdus/smpp_query_broadcast_sm_resp.xml +17 -0
- data/data/pdus/smpp_query_broadcast_sm_resp_no_optional.xml +15 -0
- data/data/pdus/smpp_query_sm.xml +11 -0
- data/data/pdus/smpp_query_sm_resp.xml +11 -0
- data/data/pdus/smpp_replace_sm.xml +18 -0
- data/data/pdus/smpp_replace_sm_no_optional.xml +17 -0
- data/data/pdus/smpp_replace_sm_resp.xml +7 -0
- data/data/pdus/smpp_submit_multi.xml +73 -0
- data/data/pdus/smpp_submit_multi_no_optional.xml +51 -0
- data/data/pdus/smpp_submit_multi_resp.xml +35 -0
- data/data/pdus/smpp_submit_sm.xml +57 -0
- data/data/pdus/smpp_submit_sm_no_optional.xml +28 -0
- data/data/pdus/smpp_submit_sm_resp.xml +8 -0
- data/data/pdus/smpp_unbind.xml +10 -0
- data/data/pdus/smpp_unbind_resp.xml +10 -0
- data/examples/dump_viewer.rb +298 -0
- data/examples/pdu_composer.rb +1331 -0
- data/knownbugs +24 -0
- data/lib/anthill_smpp_ruby.rb +83 -0
- data/lib/i_smpp_outputter.rb +425 -0
- data/lib/pdu/smpp_alert_notification.rb +132 -0
- data/lib/pdu/smpp_bind.rb +102 -0
- data/lib/pdu/smpp_bind_receiver.rb +29 -0
- data/lib/pdu/smpp_bind_receiver_resp.rb +30 -0
- data/lib/pdu/smpp_bind_resp.rb +100 -0
- data/lib/pdu/smpp_bind_transceiver.rb +29 -0
- data/lib/pdu/smpp_bind_transceiver_resp.rb +31 -0
- data/lib/pdu/smpp_bind_transmitter.rb +29 -0
- data/lib/pdu/smpp_bind_transmitter_resp.rb +30 -0
- data/lib/pdu/smpp_broadcast_sm.rb +566 -0
- data/lib/pdu/smpp_broadcast_sm_resp.rb +130 -0
- data/lib/pdu/smpp_cancel_broadcast_sm.rb +143 -0
- data/lib/pdu/smpp_cancel_broadcast_sm_resp.rb +60 -0
- data/lib/pdu/smpp_cancel_sm.rb +110 -0
- data/lib/pdu/smpp_cancel_sm_resp.rb +60 -0
- data/lib/pdu/smpp_data_sm.rb +679 -0
- data/lib/pdu/smpp_data_sm_resp.rb +148 -0
- data/lib/pdu/smpp_deliver_sm.rb +458 -0
- data/lib/pdu/smpp_deliver_sm_resp.rb +137 -0
- data/lib/pdu/smpp_enquire_link.rb +59 -0
- data/lib/pdu/smpp_enquire_link_resp.rb +61 -0
- data/lib/pdu/smpp_generic_nack.rb +61 -0
- data/lib/pdu/smpp_outbind.rb +71 -0
- data/lib/pdu/smpp_pdu.rb +90 -0
- data/lib/pdu/smpp_query_broadcast_sm.rb +120 -0
- data/lib/pdu/smpp_query_broadcast_sm_resp.rb +192 -0
- data/lib/pdu/smpp_query_sm.rb +92 -0
- data/lib/pdu/smpp_query_sm_resp.rb +92 -0
- data/lib/pdu/smpp_replace_sm.rb +172 -0
- data/lib/pdu/smpp_replace_sm_resp.rb +61 -0
- data/lib/pdu/smpp_resp.rb +40 -0
- data/lib/pdu/smpp_submit_multi.rb +517 -0
- data/lib/pdu/smpp_submit_multi_resp.rb +90 -0
- data/lib/pdu/smpp_submit_sm.rb +591 -0
- data/lib/pdu/smpp_submit_sm_resp.rb +72 -0
- data/lib/pdu/smpp_unbind.rb +60 -0
- data/lib/pdu/smpp_unbind_resp.rb +61 -0
- data/lib/smpp_constants.rb +917 -0
- data/lib/smpp_csv_outputter.rb +1601 -0
- data/lib/smpp_datatypes.rb +89 -0
- data/lib/smpp_decoder.rb +627 -0
- data/lib/smpp_encoder.rb +495 -0
- data/lib/smpp_hex_outputter.rb +36 -0
- data/lib/smpp_outputter_base.rb +315 -0
- data/lib/smpp_structures.rb +98 -0
- data/lib/smpp_txt_outputter.rb +1895 -0
- data/lib/smpp_validator.rb +373 -0
- data/lib/smpp_xml_outputter.rb +34 -0
- data/roadmap +18 -0
- data/setup.rb +1585 -0
- data/test/anthill_smpp_test.rb +29 -0
- data/test/smpp_codec_test.rb +30 -0
- data/test/smpp_datatypes_test.rb +69 -0
- data/test/smpp_outputter_test.rb +1261 -0
- data/test/smpp_parsing_test.rb +1758 -0
- data/test/smpp_rawdump_test.rb +2095 -0
- data/test/smpp_validator_test.rb +441 -0
- metadata +206 -0
|
@@ -0,0 +1,1758 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright 2007 Majoron.com (developers@majoron.com)
|
|
3
|
+
# Original sources are available at www.majoron.com
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
$:.unshift File.dirname(__FILE__) + '/../lib/'
|
|
19
|
+
$:.unshift File.dirname(__FILE__) + '/../lib/' + '/../../../AntHill/0.5/lib/'
|
|
20
|
+
|
|
21
|
+
require "csv"
|
|
22
|
+
require "test/unit"
|
|
23
|
+
require "anthill"
|
|
24
|
+
require "anthill_smpp"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class SMPPParsingTest < Test::Unit::TestCase
|
|
28
|
+
# Module contains error messages
|
|
29
|
+
module Errors
|
|
30
|
+
INVALID_COMMAND_ID = "Unknown PDU command id."
|
|
31
|
+
MORE_THAN_ONE_PACKAGE = "Dump contains a valid SMPP package and extra dump information."
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Class describe smpp decoded fields
|
|
35
|
+
class SMPPDecodedField
|
|
36
|
+
attr_accessor :field_type
|
|
37
|
+
attr_accessor :field_length
|
|
38
|
+
attr_accessor :field_name
|
|
39
|
+
attr_accessor :field_value
|
|
40
|
+
attr_accessor :field_hexdump
|
|
41
|
+
|
|
42
|
+
def initialize(fldtype, fldlen, fldname, fldval, flddump)
|
|
43
|
+
@field_type = fldtype
|
|
44
|
+
@field_length = fldlen
|
|
45
|
+
@field_name = fldname
|
|
46
|
+
@field_value = fldval
|
|
47
|
+
@field_hexdump = flddump
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def test_smpp_bind_transceiver
|
|
53
|
+
dump = String.new()
|
|
54
|
+
# read and decode package based on hex dump
|
|
55
|
+
dump << "00 00 00 2E 00 00 00 09 00 00 00 00 00 00 00 0B 53 79 73 74 65 6D 49 "
|
|
56
|
+
dump << "64 00 70 61 73 73 77 6F 72 64 00 53 4D 53 43 00 50 01 01 31 32 33 00 "
|
|
57
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
message = ""
|
|
61
|
+
result = []
|
|
62
|
+
begin
|
|
63
|
+
# Get SMPP command
|
|
64
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
65
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
66
|
+
decoder.append_buffer(buffer)
|
|
67
|
+
pdu = decoder.get_packet()
|
|
68
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
69
|
+
|
|
70
|
+
# Validate SMPP package
|
|
71
|
+
pdu.decode_packet(decoder)
|
|
72
|
+
decoder.validate_offset(pdu.command_length)
|
|
73
|
+
pdu.validate_packet(validator)
|
|
74
|
+
if pdu.command_length != buffer.size()
|
|
75
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Check txt outputter
|
|
79
|
+
ostreamcsv = String.new()
|
|
80
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
81
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
82
|
+
|
|
83
|
+
if RUBY_VERSION >= "1.9.0"
|
|
84
|
+
# Iterate line by line
|
|
85
|
+
ostreamcsv.each_line do |line|
|
|
86
|
+
continue if line.nil? || line.empty?
|
|
87
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
88
|
+
assert_equal 5, fields.size()
|
|
89
|
+
continue if fields.size() != 5
|
|
90
|
+
result << SMPPDecodedField.new(fields[0],
|
|
91
|
+
fields[1], fields[2], fields[3],
|
|
92
|
+
fields[4])
|
|
93
|
+
end
|
|
94
|
+
else
|
|
95
|
+
# Iterate line by line
|
|
96
|
+
ostreamcsv.each do |line|
|
|
97
|
+
continue if line.nil? || line.empty?
|
|
98
|
+
fields = CSV.parse_line(line, "|")
|
|
99
|
+
assert_equal 5, fields.size()
|
|
100
|
+
continue if fields.size() != 5
|
|
101
|
+
result << SMPPDecodedField.new(fields[0],
|
|
102
|
+
fields[1], fields[2], fields[3],
|
|
103
|
+
fields[4])
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
rescue RuntimeError => e
|
|
108
|
+
message = e
|
|
109
|
+
assert false
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def test_smpp_unbind
|
|
114
|
+
dump = String.new()
|
|
115
|
+
# read and decode package based on hex dump
|
|
116
|
+
dump << "00 00 00 10 00 00 00 06 00 00 00 00 00 00 00 0C"
|
|
117
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
message = ""
|
|
121
|
+
result = []
|
|
122
|
+
begin
|
|
123
|
+
# Get SMPP command
|
|
124
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
125
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
126
|
+
decoder.append_buffer(buffer)
|
|
127
|
+
pdu = decoder.get_packet()
|
|
128
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
129
|
+
|
|
130
|
+
# Validate SMPP package
|
|
131
|
+
pdu.decode_packet(decoder)
|
|
132
|
+
decoder.validate_offset(pdu.command_length)
|
|
133
|
+
pdu.validate_packet(validator)
|
|
134
|
+
if pdu.command_length != buffer.size()
|
|
135
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Check txt outputter
|
|
139
|
+
ostreamcsv = String.new()
|
|
140
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
141
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
142
|
+
|
|
143
|
+
if RUBY_VERSION >= "1.9.0"
|
|
144
|
+
# Iterate line by line
|
|
145
|
+
ostreamcsv.each_line do |line|
|
|
146
|
+
continue if line.nil? || line.empty?
|
|
147
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
148
|
+
assert_equal 5, fields.size()
|
|
149
|
+
continue if fields.size() != 5
|
|
150
|
+
result << SMPPDecodedField.new(fields[0],
|
|
151
|
+
fields[1], fields[2], fields[3],
|
|
152
|
+
fields[4])
|
|
153
|
+
end
|
|
154
|
+
else
|
|
155
|
+
# Iterate line by line
|
|
156
|
+
ostreamcsv.each do |line|
|
|
157
|
+
continue if line.nil? || line.empty?
|
|
158
|
+
fields = CSV.parse_line(line, "|")
|
|
159
|
+
assert_equal 5, fields.size()
|
|
160
|
+
continue if fields.size() != 5
|
|
161
|
+
result << SMPPDecodedField.new(fields[0],
|
|
162
|
+
fields[1], fields[2], fields[3],
|
|
163
|
+
fields[4])
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
rescue RuntimeError => e
|
|
167
|
+
message = e
|
|
168
|
+
assert false
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def test_smpp_unbind_resp
|
|
173
|
+
dump = String.new()
|
|
174
|
+
# read and decode package based on hex dump
|
|
175
|
+
dump << "00 00 00 10 80 00 00 06 00 00 00 00 00 00 00 0C"
|
|
176
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
message = ""
|
|
180
|
+
result = []
|
|
181
|
+
begin
|
|
182
|
+
# Get SMPP command
|
|
183
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
184
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
185
|
+
decoder.append_buffer(buffer)
|
|
186
|
+
pdu = decoder.get_packet()
|
|
187
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
188
|
+
|
|
189
|
+
# Validate SMPP package
|
|
190
|
+
pdu.decode_packet(decoder)
|
|
191
|
+
decoder.validate_offset(pdu.command_length)
|
|
192
|
+
pdu.validate_packet(validator)
|
|
193
|
+
if pdu.command_length != buffer.size()
|
|
194
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
# Check txt outputter
|
|
198
|
+
ostreamcsv = String.new()
|
|
199
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
200
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
201
|
+
|
|
202
|
+
if RUBY_VERSION >= "1.9.0"
|
|
203
|
+
# Iterate line by line
|
|
204
|
+
ostreamcsv.each_line do |line|
|
|
205
|
+
continue if line.nil? || line.empty?
|
|
206
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
207
|
+
assert_equal 5, fields.size()
|
|
208
|
+
continue if fields.size() != 5
|
|
209
|
+
result << SMPPDecodedField.new(fields[0],
|
|
210
|
+
fields[1], fields[2], fields[3],
|
|
211
|
+
fields[4])
|
|
212
|
+
end
|
|
213
|
+
else
|
|
214
|
+
# Iterate line by line
|
|
215
|
+
lines.each do |line|
|
|
216
|
+
continue if line.nil? || line.empty?
|
|
217
|
+
fields = CSV.parse_line(line, "|")
|
|
218
|
+
assert_equal 5, fields.size()
|
|
219
|
+
continue if fields.size() != 5
|
|
220
|
+
result << SMPPDecodedField.new(fields[0],
|
|
221
|
+
fields[1], fields[2], fields[3],
|
|
222
|
+
fields[4])
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
rescue RuntimeError => e
|
|
227
|
+
message = e
|
|
228
|
+
assert false
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
def test_smpp_outbind
|
|
233
|
+
dump = String.new()
|
|
234
|
+
# read and decode package based on hex dump
|
|
235
|
+
dump << "00 00 00 19 00 00 00 0B 00 00 00 00 00 00 00 0C 73 74 6D 31 00 70 77 64 00"
|
|
236
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
237
|
+
|
|
238
|
+
message = ""
|
|
239
|
+
result = []
|
|
240
|
+
begin
|
|
241
|
+
# Get SMPP command
|
|
242
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
243
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
244
|
+
decoder.append_buffer(buffer)
|
|
245
|
+
pdu = decoder.get_packet()
|
|
246
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
247
|
+
|
|
248
|
+
# Validate SMPP package
|
|
249
|
+
pdu.decode_packet(decoder)
|
|
250
|
+
decoder.validate_offset(pdu.command_length)
|
|
251
|
+
pdu.validate_packet(validator)
|
|
252
|
+
if pdu.command_length != buffer.size()
|
|
253
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
# Check txt outputter
|
|
257
|
+
ostreamcsv = String.new()
|
|
258
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
259
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
260
|
+
|
|
261
|
+
if RUBY_VERSION >= "1.9.0"
|
|
262
|
+
# Iterate line by line
|
|
263
|
+
ostreamcsv.each_line do |line|
|
|
264
|
+
continue if line.nil? || line.empty?
|
|
265
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
266
|
+
assert_equal 5, fields.size()
|
|
267
|
+
continue if fields.size() != 5
|
|
268
|
+
result << SMPPDecodedField.new(fields[0],
|
|
269
|
+
fields[1], fields[2], fields[3],
|
|
270
|
+
fields[4])
|
|
271
|
+
end
|
|
272
|
+
else
|
|
273
|
+
# Iterate line by line
|
|
274
|
+
lines.each do |line|
|
|
275
|
+
continue if line.nil? || line.empty?
|
|
276
|
+
fields = CSV.parse_line(line, "|")
|
|
277
|
+
assert_equal 5, fields.size()
|
|
278
|
+
continue if fields.size() != 5
|
|
279
|
+
result << SMPPDecodedField.new(fields[0],
|
|
280
|
+
fields[1], fields[2], fields[3],
|
|
281
|
+
fields[4])
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
rescue RuntimeError => e
|
|
285
|
+
message = e
|
|
286
|
+
assert false
|
|
287
|
+
end
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
def test_smpp_alert_notification
|
|
293
|
+
dump = String.new()
|
|
294
|
+
# read and decode package based on hex dump
|
|
295
|
+
dump << "00 00 00 21 00 00 01 02 00 00 00 00 00 00 00 0C 01 01 31 32 33 00 02 "
|
|
296
|
+
dump << "02 33 32 31 00 04 22 00 01 01"
|
|
297
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
message = ""
|
|
301
|
+
result = []
|
|
302
|
+
begin
|
|
303
|
+
# Get SMPP command
|
|
304
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
305
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
306
|
+
decoder.append_buffer(buffer)
|
|
307
|
+
pdu = decoder.get_packet()
|
|
308
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
309
|
+
|
|
310
|
+
# Validate SMPP package
|
|
311
|
+
pdu.decode_packet(decoder)
|
|
312
|
+
decoder.validate_offset(pdu.command_length)
|
|
313
|
+
pdu.validate_packet(validator)
|
|
314
|
+
if pdu.command_length != buffer.size()
|
|
315
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
# Check txt outputter
|
|
319
|
+
ostreamcsv = String.new()
|
|
320
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
321
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
322
|
+
|
|
323
|
+
if RUBY_VERSION >= "1.9.0"
|
|
324
|
+
# Iterate line by line
|
|
325
|
+
ostreamcsv.each_line do |line|
|
|
326
|
+
continue if line.nil? || line.empty?
|
|
327
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
328
|
+
assert_equal 5, fields.size()
|
|
329
|
+
continue if fields.size() != 5
|
|
330
|
+
result << SMPPDecodedField.new(fields[0],
|
|
331
|
+
fields[1], fields[2], fields[3],
|
|
332
|
+
fields[4])
|
|
333
|
+
end
|
|
334
|
+
else
|
|
335
|
+
# Iterate line by line
|
|
336
|
+
lines.each do |line|
|
|
337
|
+
continue if line.nil? || line.empty?
|
|
338
|
+
fields = CSV.parse_line(line, "|")
|
|
339
|
+
assert_equal 5, fields.size()
|
|
340
|
+
continue if fields.size() != 5
|
|
341
|
+
result << SMPPDecodedField.new(fields[0],
|
|
342
|
+
fields[1], fields[2], fields[3],
|
|
343
|
+
fields[4])
|
|
344
|
+
end
|
|
345
|
+
end
|
|
346
|
+
rescue RuntimeError => e
|
|
347
|
+
message = e
|
|
348
|
+
assert false
|
|
349
|
+
end
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
def test_smpp_enquire_link
|
|
353
|
+
dump = String.new()
|
|
354
|
+
# read and decode package based on hex dump
|
|
355
|
+
dump << "00 00 00 10 00 00 00 15 00 00 00 00 00 00 00 0C"
|
|
356
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
357
|
+
|
|
358
|
+
|
|
359
|
+
message = ""
|
|
360
|
+
result = []
|
|
361
|
+
begin
|
|
362
|
+
# Get SMPP command
|
|
363
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
364
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
365
|
+
decoder.append_buffer(buffer)
|
|
366
|
+
pdu = decoder.get_packet()
|
|
367
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
368
|
+
|
|
369
|
+
# Validate SMPP package
|
|
370
|
+
pdu.decode_packet(decoder)
|
|
371
|
+
decoder.validate_offset(pdu.command_length)
|
|
372
|
+
pdu.validate_packet(validator)
|
|
373
|
+
if pdu.command_length != buffer.size()
|
|
374
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
# Check txt outputter
|
|
378
|
+
ostreamcsv = String.new()
|
|
379
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
380
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
381
|
+
|
|
382
|
+
if RUBY_VERSION >= "1.9.0"
|
|
383
|
+
# Iterate line by line
|
|
384
|
+
ostreamcsv.each_line do |line|
|
|
385
|
+
continue if line.nil? || line.empty?
|
|
386
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
387
|
+
assert_equal 5, fields.size()
|
|
388
|
+
continue if fields.size() != 5
|
|
389
|
+
result << SMPPDecodedField.new(fields[0],
|
|
390
|
+
fields[1], fields[2], fields[3],
|
|
391
|
+
fields[4])
|
|
392
|
+
end
|
|
393
|
+
else
|
|
394
|
+
# Iterate line by line
|
|
395
|
+
lines.each do |line|
|
|
396
|
+
continue if line.nil? || line.empty?
|
|
397
|
+
fields = CSV.parse_line(line, "|")
|
|
398
|
+
assert_equal 5, fields.size()
|
|
399
|
+
continue if fields.size() != 5
|
|
400
|
+
result << SMPPDecodedField.new(fields[0],
|
|
401
|
+
fields[1], fields[2], fields[3],
|
|
402
|
+
fields[4])
|
|
403
|
+
end
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
rescue RuntimeError => e
|
|
407
|
+
message = e
|
|
408
|
+
assert false
|
|
409
|
+
end
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
def test_smpp_enquire_link_resp
|
|
413
|
+
dump = String.new()
|
|
414
|
+
# read and decode package based on hex dump
|
|
415
|
+
dump << "00 00 00 10 80 00 00 15 00 00 00 00 00 00 00 0C"
|
|
416
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
message = ""
|
|
420
|
+
result = []
|
|
421
|
+
begin
|
|
422
|
+
# Get SMPP command
|
|
423
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
424
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
425
|
+
decoder.append_buffer(buffer)
|
|
426
|
+
pdu = decoder.get_packet()
|
|
427
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
428
|
+
|
|
429
|
+
# Validate SMPP package
|
|
430
|
+
pdu.decode_packet(decoder)
|
|
431
|
+
decoder.validate_offset(pdu.command_length)
|
|
432
|
+
pdu.validate_packet(validator)
|
|
433
|
+
if pdu.command_length != buffer.size()
|
|
434
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
# Check txt outputter
|
|
438
|
+
ostreamcsv = String.new()
|
|
439
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
440
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
441
|
+
|
|
442
|
+
if RUBY_VERSION >= "1.9.0"
|
|
443
|
+
# Iterate line by line
|
|
444
|
+
ostreamcsv.each_line do |line|
|
|
445
|
+
continue if line.nil? || line.empty?
|
|
446
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
447
|
+
assert_equal 5, fields.size()
|
|
448
|
+
continue if fields.size() != 5
|
|
449
|
+
result << SMPPDecodedField.new(fields[0],
|
|
450
|
+
fields[1], fields[2], fields[3],
|
|
451
|
+
fields[4])
|
|
452
|
+
end
|
|
453
|
+
else
|
|
454
|
+
# Iterate line by line
|
|
455
|
+
lines.each do |line|
|
|
456
|
+
continue if line.nil? || line.empty?
|
|
457
|
+
fields = CSV.parse_line(line, "|")
|
|
458
|
+
assert_equal 5, fields.size()
|
|
459
|
+
continue if fields.size() != 5
|
|
460
|
+
result << SMPPDecodedField.new(fields[0],
|
|
461
|
+
fields[1], fields[2], fields[3],
|
|
462
|
+
fields[4])
|
|
463
|
+
end
|
|
464
|
+
end
|
|
465
|
+
|
|
466
|
+
rescue RuntimeError => e
|
|
467
|
+
message = e
|
|
468
|
+
assert false
|
|
469
|
+
end
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
def test_smpp_generic_nack
|
|
473
|
+
dump = String.new()
|
|
474
|
+
# read and decode package based on hex dump
|
|
475
|
+
dump << "00 00 00 10 80 00 00 00 00 00 00 00 00 00 00 0C"
|
|
476
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
477
|
+
message = ""
|
|
478
|
+
result = []
|
|
479
|
+
begin
|
|
480
|
+
# Get SMPP command
|
|
481
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
482
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
483
|
+
decoder.append_buffer(buffer)
|
|
484
|
+
pdu = decoder.get_packet()
|
|
485
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
486
|
+
|
|
487
|
+
# Validate SMPP package
|
|
488
|
+
pdu.decode_packet(decoder)
|
|
489
|
+
decoder.validate_offset(pdu.command_length)
|
|
490
|
+
pdu.validate_packet(validator)
|
|
491
|
+
if pdu.command_length != buffer.size()
|
|
492
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
493
|
+
end
|
|
494
|
+
|
|
495
|
+
# Check txt outputter
|
|
496
|
+
ostreamcsv = String.new()
|
|
497
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
498
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
499
|
+
|
|
500
|
+
if RUBY_VERSION >= "1.9.0"
|
|
501
|
+
# Iterate line by line
|
|
502
|
+
ostreamcsv.each_line do |line|
|
|
503
|
+
continue if line.nil? || line.empty?
|
|
504
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
505
|
+
assert_equal 5, fields.size()
|
|
506
|
+
continue if fields.size() != 5
|
|
507
|
+
result << SMPPDecodedField.new(fields[0],
|
|
508
|
+
fields[1], fields[2], fields[3],
|
|
509
|
+
fields[4])
|
|
510
|
+
end
|
|
511
|
+
else
|
|
512
|
+
# Iterate line by line
|
|
513
|
+
lines.each do |line|
|
|
514
|
+
continue if line.nil? || line.empty?
|
|
515
|
+
fields = CSV.parse_line(line, "|")
|
|
516
|
+
assert_equal 5, fields.size()
|
|
517
|
+
continue if fields.size() != 5
|
|
518
|
+
result << SMPPDecodedField.new(fields[0],
|
|
519
|
+
fields[1], fields[2], fields[3],
|
|
520
|
+
fields[4])
|
|
521
|
+
end
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
rescue RuntimeError => e
|
|
525
|
+
message = e
|
|
526
|
+
assert false
|
|
527
|
+
end
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
def test_smpp_submit_sm
|
|
532
|
+
dump = String.new()
|
|
533
|
+
# read and decode package based on hex dump
|
|
534
|
+
dump << "00 00 00 E2 00 00 00 21 00 00 00 00 00 00 00 0C 73 72 76 74 70 00 01 "
|
|
535
|
+
dump << "02 31 32 33 00 06 02 64 69 73 74 72 5F 6C 69 73 74 31 00 02 64 69 73 "
|
|
536
|
+
dump << "74 72 5F 6C 69 73 74 32 00 01 31 31 31 32 33 00 01 32 32 32 32 33 00 "
|
|
537
|
+
dump << "02 64 69 73 74 72 5F 6C 69 73 74 31 00 02 64 69 73 74 72 5F 6C 69 73 "
|
|
538
|
+
dump << "74 32 00 01 02 03 00 00 04 05 06 07 00 02 0A 00 02 00 02 00 0D 00 01 "
|
|
539
|
+
dump << "03 02 0B 00 02 00 04 00 05 00 01 05 02 0C 00 02 00 06 02 0E 00 01 07 "
|
|
540
|
+
dump << "02 0F 00 01 08 00 19 00 01 09 04 24 00 01 09 02 01 00 01 0A 03 81 00 "
|
|
541
|
+
dump << "04 01 02 AA FF 03 02 00 01 0B 03 03 00 04 01 02 AA FF 02 02 00 04 01 "
|
|
542
|
+
dump << "02 AA FF 02 03 00 04 01 02 AA FF 12 01 00 01 0C 12 03 00 02 00 0D 12 "
|
|
543
|
+
dump << "04 00 01 0E 00 30 00 01 0F 13 0C 00 01 10 02 0D 00 01 11"
|
|
544
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
545
|
+
message = ""
|
|
546
|
+
result = []
|
|
547
|
+
begin
|
|
548
|
+
# Get SMPP command
|
|
549
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
550
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
551
|
+
decoder.append_buffer(buffer)
|
|
552
|
+
pdu = decoder.get_packet()
|
|
553
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
554
|
+
|
|
555
|
+
# Validate SMPP package
|
|
556
|
+
pdu.decode_packet(decoder)
|
|
557
|
+
decoder.validate_offset(pdu.command_length)
|
|
558
|
+
pdu.validate_packet(validator)
|
|
559
|
+
if pdu.command_length != buffer.size()
|
|
560
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
561
|
+
end
|
|
562
|
+
|
|
563
|
+
# Check txt outputter
|
|
564
|
+
ostreamcsv = String.new()
|
|
565
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
566
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
567
|
+
|
|
568
|
+
if RUBY_VERSION >= "1.9.0"
|
|
569
|
+
# Iterate line by line
|
|
570
|
+
ostreamcsv.each_line do |line|
|
|
571
|
+
continue if line.nil? || line.empty?
|
|
572
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
573
|
+
assert_equal 5, fields.size()
|
|
574
|
+
continue if fields.size() != 5
|
|
575
|
+
result << SMPPDecodedField.new(fields[0],
|
|
576
|
+
fields[1], fields[2], fields[3],
|
|
577
|
+
fields[4])
|
|
578
|
+
end
|
|
579
|
+
else
|
|
580
|
+
# Iterate line by line
|
|
581
|
+
lines.each do |line|
|
|
582
|
+
continue if line.nil? || line.empty?
|
|
583
|
+
fields = CSV.parse_line(line, "|")
|
|
584
|
+
assert_equal 5, fields.size()
|
|
585
|
+
continue if fields.size() != 5
|
|
586
|
+
result << SMPPDecodedField.new(fields[0],
|
|
587
|
+
fields[1], fields[2], fields[3],
|
|
588
|
+
fields[4])
|
|
589
|
+
end
|
|
590
|
+
end
|
|
591
|
+
|
|
592
|
+
rescue RuntimeError => e
|
|
593
|
+
message = e
|
|
594
|
+
assert false
|
|
595
|
+
end
|
|
596
|
+
|
|
597
|
+
end
|
|
598
|
+
|
|
599
|
+
def test_smpp_submit_sm_resp
|
|
600
|
+
dump = String.new()
|
|
601
|
+
# read and decode package based on hex dump
|
|
602
|
+
dump << "00 00 00 14 80 00 00 04 00 00 00 00 00 00 00 0C 31 32 33 00"
|
|
603
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
604
|
+
message = ""
|
|
605
|
+
result = []
|
|
606
|
+
begin
|
|
607
|
+
# Get SMPP command
|
|
608
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
609
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
610
|
+
decoder.append_buffer(buffer)
|
|
611
|
+
pdu = decoder.get_packet()
|
|
612
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
613
|
+
|
|
614
|
+
# Validate SMPP package
|
|
615
|
+
pdu.decode_packet(decoder)
|
|
616
|
+
decoder.validate_offset(pdu.command_length)
|
|
617
|
+
pdu.validate_packet(validator)
|
|
618
|
+
if pdu.command_length != buffer.size()
|
|
619
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
620
|
+
end
|
|
621
|
+
|
|
622
|
+
# Check txt outputter
|
|
623
|
+
ostreamcsv = String.new()
|
|
624
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
625
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
626
|
+
|
|
627
|
+
if RUBY_VERSION >= "1.9.0"
|
|
628
|
+
# Iterate line by line
|
|
629
|
+
ostreamcsv.each_line do |line|
|
|
630
|
+
continue if line.nil? || line.empty?
|
|
631
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
632
|
+
assert_equal 5, fields.size()
|
|
633
|
+
continue if fields.size() != 5
|
|
634
|
+
result << SMPPDecodedField.new(fields[0],
|
|
635
|
+
fields[1], fields[2], fields[3],
|
|
636
|
+
fields[4])
|
|
637
|
+
end
|
|
638
|
+
else
|
|
639
|
+
# Iterate line by line
|
|
640
|
+
lines.each do |line|
|
|
641
|
+
continue if line.nil? || line.empty?
|
|
642
|
+
fields = CSV.parse_line(line, "|")
|
|
643
|
+
assert_equal 5, fields.size()
|
|
644
|
+
continue if fields.size() != 5
|
|
645
|
+
result << SMPPDecodedField.new(fields[0],
|
|
646
|
+
fields[1], fields[2], fields[3],
|
|
647
|
+
fields[4])
|
|
648
|
+
end
|
|
649
|
+
end
|
|
650
|
+
|
|
651
|
+
rescue RuntimeError => e
|
|
652
|
+
message = e
|
|
653
|
+
assert false
|
|
654
|
+
end
|
|
655
|
+
|
|
656
|
+
end
|
|
657
|
+
|
|
658
|
+
def test_smpp_submit_multi_resp
|
|
659
|
+
dump = String.new()
|
|
660
|
+
# read and decode package based on hex dump
|
|
661
|
+
dump << "00 00 00 33 80 00 00 21 00 00 00 00 00 00 00 0C 31 32 33 00 03 01 02 "
|
|
662
|
+
dump << "31 32 33 00 00 00 00 01 03 04 33 32 31 00 00 00 00 03 05 06 32 31 33 "
|
|
663
|
+
dump << "00 00 00 00 03"
|
|
664
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
665
|
+
message = ""
|
|
666
|
+
result = []
|
|
667
|
+
begin
|
|
668
|
+
# Get SMPP command
|
|
669
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
670
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
671
|
+
decoder.append_buffer(buffer)
|
|
672
|
+
pdu = decoder.get_packet()
|
|
673
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
674
|
+
|
|
675
|
+
# Validate SMPP package
|
|
676
|
+
pdu.decode_packet(decoder)
|
|
677
|
+
decoder.validate_offset(pdu.command_length)
|
|
678
|
+
pdu.validate_packet(validator)
|
|
679
|
+
if pdu.command_length != buffer.size()
|
|
680
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
681
|
+
end
|
|
682
|
+
|
|
683
|
+
# Check txt outputter
|
|
684
|
+
ostreamcsv = String.new()
|
|
685
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
686
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
687
|
+
|
|
688
|
+
if RUBY_VERSION >= "1.9.0"
|
|
689
|
+
# Iterate line by line
|
|
690
|
+
ostreamcsv.each_line do |line|
|
|
691
|
+
continue if line.nil? || line.empty?
|
|
692
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
693
|
+
assert_equal 5, fields.size()
|
|
694
|
+
continue if fields.size() != 5
|
|
695
|
+
result << SMPPDecodedField.new(fields[0],
|
|
696
|
+
fields[1], fields[2], fields[3],
|
|
697
|
+
fields[4])
|
|
698
|
+
end
|
|
699
|
+
else
|
|
700
|
+
# Iterate line by line
|
|
701
|
+
lines.each do |line|
|
|
702
|
+
continue if line.nil? || line.empty?
|
|
703
|
+
fields = CSV.parse_line(line, "|")
|
|
704
|
+
assert_equal 5, fields.size()
|
|
705
|
+
continue if fields.size() != 5
|
|
706
|
+
result << SMPPDecodedField.new(fields[0],
|
|
707
|
+
fields[1], fields[2], fields[3],
|
|
708
|
+
fields[4])
|
|
709
|
+
end
|
|
710
|
+
end
|
|
711
|
+
|
|
712
|
+
rescue RuntimeError => e
|
|
713
|
+
message = e
|
|
714
|
+
assert false
|
|
715
|
+
end
|
|
716
|
+
|
|
717
|
+
end
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
def test_smpp_cancel_sm
|
|
721
|
+
dump = String.new()
|
|
722
|
+
# read and decode package based on hex dump
|
|
723
|
+
dump << "00 00 00 26 00 00 00 08 00 00 00 00 00 00 00 0C 73 72 76 74 70 00 "
|
|
724
|
+
dump << "31 32 33 00 01 02 31 32 33 00 04 05 33 32 31 00"
|
|
725
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
726
|
+
message = ""
|
|
727
|
+
result = []
|
|
728
|
+
begin
|
|
729
|
+
# Get SMPP command
|
|
730
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
731
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
732
|
+
decoder.append_buffer(buffer)
|
|
733
|
+
pdu = decoder.get_packet()
|
|
734
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
735
|
+
|
|
736
|
+
# Validate SMPP package
|
|
737
|
+
pdu.decode_packet(decoder)
|
|
738
|
+
decoder.validate_offset(pdu.command_length)
|
|
739
|
+
pdu.validate_packet(validator)
|
|
740
|
+
if pdu.command_length != buffer.size()
|
|
741
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
742
|
+
end
|
|
743
|
+
|
|
744
|
+
# Check txt outputter
|
|
745
|
+
ostreamcsv = String.new()
|
|
746
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
747
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
748
|
+
|
|
749
|
+
if RUBY_VERSION >= "1.9.0"
|
|
750
|
+
# Iterate line by line
|
|
751
|
+
ostreamcsv.each_line do |line|
|
|
752
|
+
continue if line.nil? || line.empty?
|
|
753
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
754
|
+
assert_equal 5, fields.size()
|
|
755
|
+
continue if fields.size() != 5
|
|
756
|
+
result << SMPPDecodedField.new(fields[0],
|
|
757
|
+
fields[1], fields[2], fields[3],
|
|
758
|
+
fields[4])
|
|
759
|
+
end
|
|
760
|
+
else
|
|
761
|
+
# Iterate line by line
|
|
762
|
+
lines.each do |line|
|
|
763
|
+
continue if line.nil? || line.empty?
|
|
764
|
+
fields = CSV.parse_line(line, "|")
|
|
765
|
+
assert_equal 5, fields.size()
|
|
766
|
+
continue if fields.size() != 5
|
|
767
|
+
result << SMPPDecodedField.new(fields[0],
|
|
768
|
+
fields[1], fields[2], fields[3],
|
|
769
|
+
fields[4])
|
|
770
|
+
end
|
|
771
|
+
end
|
|
772
|
+
|
|
773
|
+
rescue RuntimeError => e
|
|
774
|
+
message = e
|
|
775
|
+
assert false
|
|
776
|
+
end
|
|
777
|
+
|
|
778
|
+
end
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
def test_smpp_cancel_sm_resp
|
|
782
|
+
dump = String.new()
|
|
783
|
+
# read and decode package based on hex dump
|
|
784
|
+
dump << "00 00 00 10 80 00 00 08 00 00 00 00 00 00 00 0C"
|
|
785
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
786
|
+
message = ""
|
|
787
|
+
result = []
|
|
788
|
+
begin
|
|
789
|
+
# Get SMPP command
|
|
790
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
791
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
792
|
+
decoder.append_buffer(buffer)
|
|
793
|
+
pdu = decoder.get_packet()
|
|
794
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
795
|
+
|
|
796
|
+
# Validate SMPP package
|
|
797
|
+
pdu.decode_packet(decoder)
|
|
798
|
+
decoder.validate_offset(pdu.command_length)
|
|
799
|
+
pdu.validate_packet(validator)
|
|
800
|
+
if pdu.command_length != buffer.size()
|
|
801
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
802
|
+
end
|
|
803
|
+
|
|
804
|
+
# Check txt outputter
|
|
805
|
+
ostreamcsv = String.new()
|
|
806
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
807
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
808
|
+
|
|
809
|
+
if RUBY_VERSION >= "1.9.0"
|
|
810
|
+
# Iterate line by line
|
|
811
|
+
ostreamcsv.each_line do |line|
|
|
812
|
+
continue if line.nil? || line.empty?
|
|
813
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
814
|
+
assert_equal 5, fields.size()
|
|
815
|
+
continue if fields.size() != 5
|
|
816
|
+
result << SMPPDecodedField.new(fields[0],
|
|
817
|
+
fields[1], fields[2], fields[3],
|
|
818
|
+
fields[4])
|
|
819
|
+
end
|
|
820
|
+
else
|
|
821
|
+
# Iterate line by line
|
|
822
|
+
lines.each do |line|
|
|
823
|
+
continue if line.nil? || line.empty?
|
|
824
|
+
fields = CSV.parse_line(line, "|")
|
|
825
|
+
assert_equal 5, fields.size()
|
|
826
|
+
continue if fields.size() != 5
|
|
827
|
+
result << SMPPDecodedField.new(fields[0],
|
|
828
|
+
fields[1], fields[2], fields[3],
|
|
829
|
+
fields[4])
|
|
830
|
+
end
|
|
831
|
+
end
|
|
832
|
+
|
|
833
|
+
rescue RuntimeError => e
|
|
834
|
+
message = e
|
|
835
|
+
assert false
|
|
836
|
+
end
|
|
837
|
+
|
|
838
|
+
end
|
|
839
|
+
|
|
840
|
+
def test_smpp_query_sm
|
|
841
|
+
dump = String.new()
|
|
842
|
+
# read and decode package based on hex dump
|
|
843
|
+
dump << "00 00 00 1A 00 00 00 03 00 00 00 00 00 00 00 0C 31 32 33 00 01 02 33 32 31 00"
|
|
844
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
845
|
+
message = ""
|
|
846
|
+
result = []
|
|
847
|
+
begin
|
|
848
|
+
# Get SMPP command
|
|
849
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
850
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
851
|
+
decoder.append_buffer(buffer)
|
|
852
|
+
pdu = decoder.get_packet()
|
|
853
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
854
|
+
|
|
855
|
+
# Validate SMPP package
|
|
856
|
+
pdu.decode_packet(decoder)
|
|
857
|
+
decoder.validate_offset(pdu.command_length)
|
|
858
|
+
pdu.validate_packet(validator)
|
|
859
|
+
if pdu.command_length != buffer.size()
|
|
860
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
861
|
+
end
|
|
862
|
+
|
|
863
|
+
# Check txt outputter
|
|
864
|
+
ostreamcsv = String.new()
|
|
865
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
866
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
867
|
+
|
|
868
|
+
if RUBY_VERSION >= "1.9.0"
|
|
869
|
+
# Iterate line by line
|
|
870
|
+
ostreamcsv.each_line do |line|
|
|
871
|
+
continue if line.nil? || line.empty?
|
|
872
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
873
|
+
assert_equal 5, fields.size()
|
|
874
|
+
continue if fields.size() != 5
|
|
875
|
+
result << SMPPDecodedField.new(fields[0],
|
|
876
|
+
fields[1], fields[2], fields[3],
|
|
877
|
+
fields[4])
|
|
878
|
+
end
|
|
879
|
+
else
|
|
880
|
+
# Iterate line by line
|
|
881
|
+
lines.each do |line|
|
|
882
|
+
continue if line.nil? || line.empty?
|
|
883
|
+
fields = CSV.parse_line(line, "|")
|
|
884
|
+
assert_equal 5, fields.size()
|
|
885
|
+
continue if fields.size() != 5
|
|
886
|
+
result << SMPPDecodedField.new(fields[0],
|
|
887
|
+
fields[1], fields[2], fields[3],
|
|
888
|
+
fields[4])
|
|
889
|
+
end
|
|
890
|
+
end
|
|
891
|
+
|
|
892
|
+
rescue RuntimeError => e
|
|
893
|
+
message = e
|
|
894
|
+
assert false
|
|
895
|
+
end
|
|
896
|
+
|
|
897
|
+
end
|
|
898
|
+
|
|
899
|
+
def test_smpp_query_sm_resp
|
|
900
|
+
dump = String.new()
|
|
901
|
+
# read and decode package based on hex dump
|
|
902
|
+
dump << "00 00 00 17 80 00 00 03 00 00 00 00 00 00 00 0C 31 32 33 00 00 01 02"
|
|
903
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
904
|
+
message = ""
|
|
905
|
+
result = []
|
|
906
|
+
begin
|
|
907
|
+
# Get SMPP command
|
|
908
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
909
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
910
|
+
decoder.append_buffer(buffer)
|
|
911
|
+
pdu = decoder.get_packet()
|
|
912
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
913
|
+
|
|
914
|
+
# Validate SMPP package
|
|
915
|
+
pdu.decode_packet(decoder)
|
|
916
|
+
decoder.validate_offset(pdu.command_length)
|
|
917
|
+
pdu.validate_packet(validator)
|
|
918
|
+
if pdu.command_length != buffer.size()
|
|
919
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
920
|
+
end
|
|
921
|
+
|
|
922
|
+
# Check txt outputter
|
|
923
|
+
ostreamcsv = String.new()
|
|
924
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
925
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
926
|
+
|
|
927
|
+
if RUBY_VERSION >= "1.9.0"
|
|
928
|
+
# Iterate line by line
|
|
929
|
+
ostreamcsv.each_line do |line|
|
|
930
|
+
continue if line.nil? || line.empty?
|
|
931
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
932
|
+
assert_equal 5, fields.size()
|
|
933
|
+
continue if fields.size() != 5
|
|
934
|
+
result << SMPPDecodedField.new(fields[0],
|
|
935
|
+
fields[1], fields[2], fields[3],
|
|
936
|
+
fields[4])
|
|
937
|
+
end
|
|
938
|
+
else
|
|
939
|
+
# Iterate line by line
|
|
940
|
+
lines.each do |line|
|
|
941
|
+
continue if line.nil? || line.empty?
|
|
942
|
+
fields = CSV.parse_line(line, "|")
|
|
943
|
+
assert_equal 5, fields.size()
|
|
944
|
+
continue if fields.size() != 5
|
|
945
|
+
result << SMPPDecodedField.new(fields[0],
|
|
946
|
+
fields[1], fields[2], fields[3],
|
|
947
|
+
fields[4])
|
|
948
|
+
end
|
|
949
|
+
end
|
|
950
|
+
|
|
951
|
+
rescue RuntimeError => e
|
|
952
|
+
message = e
|
|
953
|
+
assert false
|
|
954
|
+
end
|
|
955
|
+
|
|
956
|
+
end
|
|
957
|
+
|
|
958
|
+
def test_smpp_replace_sm
|
|
959
|
+
dump = String.new()
|
|
960
|
+
# read and decode package based on hex dump
|
|
961
|
+
dump << "00 00 00 26 00 00 00 07 00 00 00 00 00 00 00 0C 33 34 35 00 01 02 "
|
|
962
|
+
dump << "31 32 33 00 00 00 01 07 00 04 24 00 03 01 FF AA"
|
|
963
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
964
|
+
message = ""
|
|
965
|
+
result = []
|
|
966
|
+
begin
|
|
967
|
+
# Get SMPP command
|
|
968
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
969
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
970
|
+
decoder.append_buffer(buffer)
|
|
971
|
+
pdu = decoder.get_packet()
|
|
972
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
973
|
+
|
|
974
|
+
# Validate SMPP package
|
|
975
|
+
pdu.decode_packet(decoder)
|
|
976
|
+
decoder.validate_offset(pdu.command_length)
|
|
977
|
+
pdu.validate_packet(validator)
|
|
978
|
+
if pdu.command_length != buffer.size()
|
|
979
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
980
|
+
end
|
|
981
|
+
|
|
982
|
+
# Check txt outputter
|
|
983
|
+
ostreamcsv = String.new()
|
|
984
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
985
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
986
|
+
|
|
987
|
+
if RUBY_VERSION >= "1.9.0"
|
|
988
|
+
# Iterate line by line
|
|
989
|
+
ostreamcsv.each_line do |line|
|
|
990
|
+
continue if line.nil? || line.empty?
|
|
991
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
992
|
+
assert_equal 5, fields.size()
|
|
993
|
+
continue if fields.size() != 5
|
|
994
|
+
result << SMPPDecodedField.new(fields[0],
|
|
995
|
+
fields[1], fields[2], fields[3],
|
|
996
|
+
fields[4])
|
|
997
|
+
end
|
|
998
|
+
else
|
|
999
|
+
# Iterate line by line
|
|
1000
|
+
lines.each do |line|
|
|
1001
|
+
continue if line.nil? || line.empty?
|
|
1002
|
+
fields = CSV.parse_line(line, "|")
|
|
1003
|
+
assert_equal 5, fields.size()
|
|
1004
|
+
continue if fields.size() != 5
|
|
1005
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1006
|
+
fields[1], fields[2], fields[3],
|
|
1007
|
+
fields[4])
|
|
1008
|
+
end
|
|
1009
|
+
end
|
|
1010
|
+
rescue RuntimeError => e
|
|
1011
|
+
message = e
|
|
1012
|
+
assert false
|
|
1013
|
+
end
|
|
1014
|
+
|
|
1015
|
+
end
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
|
|
1019
|
+
def test_smpp_replace_sm_resp
|
|
1020
|
+
dump = String.new()
|
|
1021
|
+
# read and decode package based on hex dump
|
|
1022
|
+
dump << "00 00 00 10 80 00 00 07 00 00 00 00 00 00 00 0C"
|
|
1023
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1024
|
+
message = ""
|
|
1025
|
+
result = []
|
|
1026
|
+
begin
|
|
1027
|
+
# Get SMPP command
|
|
1028
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1029
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1030
|
+
decoder.append_buffer(buffer)
|
|
1031
|
+
pdu = decoder.get_packet()
|
|
1032
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1033
|
+
|
|
1034
|
+
# Validate SMPP package
|
|
1035
|
+
pdu.decode_packet(decoder)
|
|
1036
|
+
decoder.validate_offset(pdu.command_length)
|
|
1037
|
+
pdu.validate_packet(validator)
|
|
1038
|
+
if pdu.command_length != buffer.size()
|
|
1039
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1040
|
+
end
|
|
1041
|
+
|
|
1042
|
+
# Check txt outputter
|
|
1043
|
+
ostreamcsv = String.new()
|
|
1044
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1045
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1046
|
+
|
|
1047
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1048
|
+
# Iterate line by line
|
|
1049
|
+
ostreamcsv.each_line do |line|
|
|
1050
|
+
continue if line.nil? || line.empty?
|
|
1051
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1052
|
+
assert_equal 5, fields.size()
|
|
1053
|
+
continue if fields.size() != 5
|
|
1054
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1055
|
+
fields[1], fields[2], fields[3],
|
|
1056
|
+
fields[4])
|
|
1057
|
+
end
|
|
1058
|
+
else
|
|
1059
|
+
# Iterate line by line
|
|
1060
|
+
lines.each do |line|
|
|
1061
|
+
continue if line.nil? || line.empty?
|
|
1062
|
+
fields = CSV.parse_line(line, "|")
|
|
1063
|
+
assert_equal 5, fields.size()
|
|
1064
|
+
continue if fields.size() != 5
|
|
1065
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1066
|
+
fields[1], fields[2], fields[3],
|
|
1067
|
+
fields[4])
|
|
1068
|
+
end
|
|
1069
|
+
end
|
|
1070
|
+
|
|
1071
|
+
rescue RuntimeError => e
|
|
1072
|
+
message = e
|
|
1073
|
+
assert false
|
|
1074
|
+
end
|
|
1075
|
+
|
|
1076
|
+
end
|
|
1077
|
+
|
|
1078
|
+
|
|
1079
|
+
def test_smpp_data_sm
|
|
1080
|
+
dump = String.new()
|
|
1081
|
+
# read and decode package based on hex dump
|
|
1082
|
+
dump << "00 00 00 FF 00 00 01 03 00 00 00 00 00 00 00 0C 73 72 76 74 70 00 01 "
|
|
1083
|
+
dump << "02 31 32 33 00 03 04 33 32 31 00 00 01 08 02 0A 00 02 00 01 00 0D 00 "
|
|
1084
|
+
dump << "01 02 00 0E 00 01 03 00 0F 00 01 04 00 10 00 01 05 02 0B 00 02 00 06 "
|
|
1085
|
+
dump << "00 05 00 01 07 00 06 00 01 08 00 07 00 01 09 00 08 00 01 0A 02 0C 00 "
|
|
1086
|
+
dump << "02 00 0B 02 0E 00 01 0C 02 0F 00 01 0D 04 26 00 01 01 00 17 00 04 00 "
|
|
1087
|
+
dump << "00 00 0E 00 19 00 01 0F 04 24 00 05 01 02 03 AF FF 04 21 00 01 10 00 "
|
|
1088
|
+
dump << "1E 00 06 31 32 33 32 31 00 04 27 00 01 01 04 23 00 03 01 00 01 02 04 "
|
|
1089
|
+
dump << "00 02 00 7B 02 01 00 01 01 03 81 00 01 01 03 02 00 01 01 03 03 00 02 "
|
|
1090
|
+
dump << "AA FF 02 02 00 02 AA FF 02 03 00 02 AA FF 02 05 00 01 01 12 01 00 01 "
|
|
1091
|
+
dump << "02 12 03 00 02 00 03 12 04 00 01 04 00 30 00 01 05 03 04 00 01 06 03 "
|
|
1092
|
+
dump << "04 00 01 06 13 0C 00 01 07 02 0D 00 01 08 13 80 00 01 09 13 83 00 02 "
|
|
1093
|
+
dump << "00 0A"
|
|
1094
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1095
|
+
message = ""
|
|
1096
|
+
result = []
|
|
1097
|
+
begin
|
|
1098
|
+
# Get SMPP command
|
|
1099
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1100
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1101
|
+
decoder.append_buffer(buffer)
|
|
1102
|
+
pdu = decoder.get_packet()
|
|
1103
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1104
|
+
|
|
1105
|
+
# Validate SMPP package
|
|
1106
|
+
pdu.decode_packet(decoder)
|
|
1107
|
+
decoder.validate_offset(pdu.command_length)
|
|
1108
|
+
pdu.validate_packet(validator)
|
|
1109
|
+
if pdu.command_length != buffer.size()
|
|
1110
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1111
|
+
end
|
|
1112
|
+
|
|
1113
|
+
# Check txt outputter
|
|
1114
|
+
ostreamcsv = String.new()
|
|
1115
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1116
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1117
|
+
|
|
1118
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1119
|
+
# Iterate line by line
|
|
1120
|
+
ostreamcsv.each_line do |line|
|
|
1121
|
+
continue if line.nil? || line.empty?
|
|
1122
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1123
|
+
assert_equal 5, fields.size()
|
|
1124
|
+
continue if fields.size() != 5
|
|
1125
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1126
|
+
fields[1], fields[2], fields[3],
|
|
1127
|
+
fields[4])
|
|
1128
|
+
end
|
|
1129
|
+
else
|
|
1130
|
+
# Iterate line by line
|
|
1131
|
+
lines.each do |line|
|
|
1132
|
+
continue if line.nil? || line.empty?
|
|
1133
|
+
fields = CSV.parse_line(line, "|")
|
|
1134
|
+
assert_equal 5, fields.size()
|
|
1135
|
+
continue if fields.size() != 5
|
|
1136
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1137
|
+
fields[1], fields[2], fields[3],
|
|
1138
|
+
fields[4])
|
|
1139
|
+
end
|
|
1140
|
+
end
|
|
1141
|
+
|
|
1142
|
+
rescue RuntimeError => e
|
|
1143
|
+
message = e
|
|
1144
|
+
assert false
|
|
1145
|
+
end
|
|
1146
|
+
end
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
def test_smpp_data_sm_resp
|
|
1150
|
+
dump = String.new()
|
|
1151
|
+
# read and decode package based on hex dump
|
|
1152
|
+
dump << "00 00 00 29 80 00 01 03 00 00 00 00 00 00 00 0C 00 04 25 00 01 01 04 "
|
|
1153
|
+
dump << "23 00 03 03 00 01 00 1D 00 03 01 FF AA 04 20 00 01 17 "
|
|
1154
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1155
|
+
message = ""
|
|
1156
|
+
result = []
|
|
1157
|
+
begin
|
|
1158
|
+
# Get SMPP command
|
|
1159
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1160
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1161
|
+
decoder.append_buffer(buffer)
|
|
1162
|
+
pdu = decoder.get_packet()
|
|
1163
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1164
|
+
|
|
1165
|
+
# Validate SMPP package
|
|
1166
|
+
pdu.decode_packet(decoder)
|
|
1167
|
+
decoder.validate_offset(pdu.command_length)
|
|
1168
|
+
pdu.validate_packet(validator)
|
|
1169
|
+
if pdu.command_length != buffer.size()
|
|
1170
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1171
|
+
end
|
|
1172
|
+
|
|
1173
|
+
# Check txt outputter
|
|
1174
|
+
ostreamcsv = String.new()
|
|
1175
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1176
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1177
|
+
|
|
1178
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1179
|
+
# Iterate line by line
|
|
1180
|
+
ostreamcsv.each_line do |line|
|
|
1181
|
+
continue if line.nil? || line.empty?
|
|
1182
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1183
|
+
assert_equal 5, fields.size()
|
|
1184
|
+
continue if fields.size() != 5
|
|
1185
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1186
|
+
fields[1], fields[2], fields[3],
|
|
1187
|
+
fields[4])
|
|
1188
|
+
end
|
|
1189
|
+
else
|
|
1190
|
+
# Iterate line by line
|
|
1191
|
+
lines.each do |line|
|
|
1192
|
+
continue if line.nil? || line.empty?
|
|
1193
|
+
fields = CSV.parse_line(line, "|")
|
|
1194
|
+
assert_equal 5, fields.size()
|
|
1195
|
+
continue if fields.size() != 5
|
|
1196
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1197
|
+
fields[1], fields[2], fields[3],
|
|
1198
|
+
fields[4])
|
|
1199
|
+
end
|
|
1200
|
+
end
|
|
1201
|
+
|
|
1202
|
+
rescue RuntimeError => e
|
|
1203
|
+
message = e
|
|
1204
|
+
assert false
|
|
1205
|
+
end
|
|
1206
|
+
end
|
|
1207
|
+
|
|
1208
|
+
def test_smpp_deliver_sm
|
|
1209
|
+
dump = String.new()
|
|
1210
|
+
# read and decode package based on hex dump
|
|
1211
|
+
dump << "00 00 00 96 00 00 00 05 00 00 00 00 00 00 00 0C 53 4D 53 00 01 02 31 "
|
|
1212
|
+
dump << "32 33 00 04 05 33 32 31 00 06 07 08 00 00 09 0A 0B 0C 00 02 04 00 02 "
|
|
1213
|
+
dump << "00 01 02 0A 00 02 00 02 02 0B 00 02 00 03 02 0C 00 02 00 04 02 0E 00 "
|
|
1214
|
+
dump << "01 05 02 0F 00 01 06 02 05 00 01 07 02 01 00 01 08 00 19 00 01 09 04 "
|
|
1215
|
+
dump << "24 00 03 01 FF AA 03 81 00 03 01 FF AA 02 02 00 03 01 FF AA 02 03 00 "
|
|
1216
|
+
dump << "03 01 FF AA 02 0D 00 01 0A 13 83 00 02 00 0A 04 23 00 03 03 00 0C 04 "
|
|
1217
|
+
dump << "27 00 01 03 00 1E 00 04 31 32 33 00"
|
|
1218
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1219
|
+
message = ""
|
|
1220
|
+
result = []
|
|
1221
|
+
begin
|
|
1222
|
+
# Get SMPP command
|
|
1223
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1224
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1225
|
+
decoder.append_buffer(buffer)
|
|
1226
|
+
pdu = decoder.get_packet()
|
|
1227
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1228
|
+
|
|
1229
|
+
# Validate SMPP package
|
|
1230
|
+
pdu.decode_packet(decoder)
|
|
1231
|
+
decoder.validate_offset(pdu.command_length)
|
|
1232
|
+
pdu.validate_packet(validator)
|
|
1233
|
+
if pdu.command_length != buffer.size()
|
|
1234
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1235
|
+
end
|
|
1236
|
+
|
|
1237
|
+
# Check txt outputter
|
|
1238
|
+
ostreamcsv = String.new()
|
|
1239
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1240
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1241
|
+
|
|
1242
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1243
|
+
# Iterate line by line
|
|
1244
|
+
ostreamcsv.each_line do |line|
|
|
1245
|
+
continue if line.nil? || line.empty?
|
|
1246
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1247
|
+
assert_equal 5, fields.size()
|
|
1248
|
+
continue if fields.size() != 5
|
|
1249
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1250
|
+
fields[1], fields[2], fields[3],
|
|
1251
|
+
fields[4])
|
|
1252
|
+
end
|
|
1253
|
+
else
|
|
1254
|
+
# Iterate line by line
|
|
1255
|
+
lines.each do |line|
|
|
1256
|
+
continue if line.nil? || line.empty?
|
|
1257
|
+
fields = CSV.parse_line(line, "|")
|
|
1258
|
+
assert_equal 5, fields.size()
|
|
1259
|
+
continue if fields.size() != 5
|
|
1260
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1261
|
+
fields[1], fields[2], fields[3],
|
|
1262
|
+
fields[4])
|
|
1263
|
+
end
|
|
1264
|
+
end
|
|
1265
|
+
|
|
1266
|
+
rescue RuntimeError => e
|
|
1267
|
+
message = e
|
|
1268
|
+
assert false
|
|
1269
|
+
end
|
|
1270
|
+
end
|
|
1271
|
+
|
|
1272
|
+
|
|
1273
|
+
def test_smpp_deliver_sm_resp
|
|
1274
|
+
dump = String.new()
|
|
1275
|
+
# read and decode package based on hex dump
|
|
1276
|
+
dump << "00 00 00 24 80 00 00 05 00 00 00 00 00 00 00 0C 00 00 1D 00 03 01 FF "
|
|
1277
|
+
dump << "AA 04 25 00 01 01 04 23 00 03 01 00 02"
|
|
1278
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1279
|
+
message = ""
|
|
1280
|
+
result = []
|
|
1281
|
+
begin
|
|
1282
|
+
# Get SMPP command
|
|
1283
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1284
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1285
|
+
decoder.append_buffer(buffer)
|
|
1286
|
+
pdu = decoder.get_packet()
|
|
1287
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1288
|
+
|
|
1289
|
+
# Validate SMPP package
|
|
1290
|
+
pdu.decode_packet(decoder)
|
|
1291
|
+
decoder.validate_offset(pdu.command_length)
|
|
1292
|
+
pdu.validate_packet(validator)
|
|
1293
|
+
if pdu.command_length != buffer.size()
|
|
1294
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1295
|
+
end
|
|
1296
|
+
|
|
1297
|
+
# Check txt outputter
|
|
1298
|
+
ostreamcsv = String.new()
|
|
1299
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1300
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1301
|
+
|
|
1302
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1303
|
+
# Iterate line by line
|
|
1304
|
+
ostreamcsv.each_line do |line|
|
|
1305
|
+
continue if line.nil? || line.empty?
|
|
1306
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1307
|
+
assert_equal 5, fields.size()
|
|
1308
|
+
continue if fields.size() != 5
|
|
1309
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1310
|
+
fields[1], fields[2], fields[3],
|
|
1311
|
+
fields[4])
|
|
1312
|
+
end
|
|
1313
|
+
else
|
|
1314
|
+
# Iterate line by line
|
|
1315
|
+
lines.each do |line|
|
|
1316
|
+
continue if line.nil? || line.empty?
|
|
1317
|
+
fields = CSV.parse_line(line, "|")
|
|
1318
|
+
assert_equal 5, fields.size()
|
|
1319
|
+
continue if fields.size() != 5
|
|
1320
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1321
|
+
fields[1], fields[2], fields[3],
|
|
1322
|
+
fields[4])
|
|
1323
|
+
end
|
|
1324
|
+
end
|
|
1325
|
+
|
|
1326
|
+
rescue RuntimeError => e
|
|
1327
|
+
message = e
|
|
1328
|
+
assert false
|
|
1329
|
+
end
|
|
1330
|
+
end
|
|
1331
|
+
|
|
1332
|
+
|
|
1333
|
+
|
|
1334
|
+
def test_smpp_broadcast_sm
|
|
1335
|
+
dump = String.new()
|
|
1336
|
+
# read and decode package based on hex dump
|
|
1337
|
+
dump << "00 00 00 C5 00 00 01 11 00 00 00 00 00 00 00 0C 73 72 76 74 70 00 01 "
|
|
1338
|
+
dump << "02 31 32 33 00 33 34 35 00 01 00 00 03 04 05 06 06 00 02 01 FF 06 06 "
|
|
1339
|
+
dump << "00 02 01 AF 06 06 00 02 01 DF 06 01 00 03 01 02 FF 06 04 00 02 00 0A "
|
|
1340
|
+
dump << "06 05 00 03 01 02 FF 13 0C 00 01 01 06 00 00 01 02 06 02 00 03 01 FF "
|
|
1341
|
+
dump << "AA 06 03 00 01 03 06 0A 00 03 01 FF AA 03 81 00 01 10 03 03 00 03 01 "
|
|
1342
|
+
dump << "FF AA 03 02 00 01 04 02 03 00 03 01 FF AA 02 0B 00 02 00 05 12 01 00 "
|
|
1343
|
+
dump << "01 06 02 0D 00 01 07 04 24 00 03 01 FF AA 12 04 00 01 08 00 19 00 01 "
|
|
1344
|
+
dump << "09 02 01 00 01 0A 12 03 00 02 00 0B 00 0D 00 01 0C 02 0A 00 02 00 0D "
|
|
1345
|
+
dump << "02 02 00 03 01 FF AA 02 04 00 02 00 16"
|
|
1346
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1347
|
+
message = ""
|
|
1348
|
+
result = []
|
|
1349
|
+
begin
|
|
1350
|
+
# Get SMPP command
|
|
1351
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1352
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1353
|
+
decoder.append_buffer(buffer)
|
|
1354
|
+
pdu = decoder.get_packet()
|
|
1355
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1356
|
+
|
|
1357
|
+
# Validate SMPP package
|
|
1358
|
+
pdu.decode_packet(decoder)
|
|
1359
|
+
decoder.validate_offset(pdu.command_length)
|
|
1360
|
+
pdu.validate_packet(validator)
|
|
1361
|
+
if pdu.command_length != buffer.size()
|
|
1362
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1363
|
+
end
|
|
1364
|
+
|
|
1365
|
+
# Check txt outputter
|
|
1366
|
+
ostreamcsv = String.new()
|
|
1367
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1368
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1369
|
+
|
|
1370
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1371
|
+
# Iterate line by line
|
|
1372
|
+
ostreamcsv.each_line do |line|
|
|
1373
|
+
continue if line.nil? || line.empty?
|
|
1374
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1375
|
+
assert_equal 5, fields.size()
|
|
1376
|
+
continue if fields.size() != 5
|
|
1377
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1378
|
+
fields[1], fields[2], fields[3],
|
|
1379
|
+
fields[4])
|
|
1380
|
+
end
|
|
1381
|
+
else
|
|
1382
|
+
# Iterate line by line
|
|
1383
|
+
lines.each do |line|
|
|
1384
|
+
continue if line.nil? || line.empty?
|
|
1385
|
+
fields = CSV.parse_line(line, "|")
|
|
1386
|
+
assert_equal 5, fields.size()
|
|
1387
|
+
continue if fields.size() != 5
|
|
1388
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1389
|
+
fields[1], fields[2], fields[3],
|
|
1390
|
+
fields[4])
|
|
1391
|
+
end
|
|
1392
|
+
end
|
|
1393
|
+
|
|
1394
|
+
rescue RuntimeError => e
|
|
1395
|
+
message = e
|
|
1396
|
+
assert false
|
|
1397
|
+
end
|
|
1398
|
+
end
|
|
1399
|
+
|
|
1400
|
+
def test_smpp_broadcast_sm_resp
|
|
1401
|
+
dump = String.new()
|
|
1402
|
+
# read and decode package based on hex dump
|
|
1403
|
+
dump << "00 00 00 2E 80 00 01 11 00 00 00 00 00 00 00 0C 31 32 33 00 06 07 00 "
|
|
1404
|
+
dump << "04 00 00 00 01 06 06 00 02 01 FF 06 06 00 02 01 AF 06 06 00 02 01 DF"
|
|
1405
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1406
|
+
message = ""
|
|
1407
|
+
result = []
|
|
1408
|
+
begin
|
|
1409
|
+
# Get SMPP command
|
|
1410
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1411
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1412
|
+
decoder.append_buffer(buffer)
|
|
1413
|
+
pdu = decoder.get_packet()
|
|
1414
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1415
|
+
|
|
1416
|
+
# Validate SMPP package
|
|
1417
|
+
pdu.decode_packet(decoder)
|
|
1418
|
+
decoder.validate_offset(pdu.command_length)
|
|
1419
|
+
pdu.validate_packet(validator)
|
|
1420
|
+
if pdu.command_length != buffer.size()
|
|
1421
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1422
|
+
end
|
|
1423
|
+
|
|
1424
|
+
# Check txt outputter
|
|
1425
|
+
ostreamcsv = String.new()
|
|
1426
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1427
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1428
|
+
|
|
1429
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1430
|
+
# Iterate line by line
|
|
1431
|
+
ostreamcsv.each_line do |line|
|
|
1432
|
+
continue if line.nil? || line.empty?
|
|
1433
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1434
|
+
assert_equal 5, fields.size()
|
|
1435
|
+
continue if fields.size() != 5
|
|
1436
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1437
|
+
fields[1], fields[2], fields[3],
|
|
1438
|
+
fields[4])
|
|
1439
|
+
end
|
|
1440
|
+
else
|
|
1441
|
+
# Iterate line by line
|
|
1442
|
+
lines.each do |line|
|
|
1443
|
+
continue if line.nil? || line.empty?
|
|
1444
|
+
fields = CSV.parse_line(line, "|")
|
|
1445
|
+
assert_equal 5, fields.size()
|
|
1446
|
+
continue if fields.size() != 5
|
|
1447
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1448
|
+
fields[1], fields[2], fields[3],
|
|
1449
|
+
fields[4])
|
|
1450
|
+
end
|
|
1451
|
+
end
|
|
1452
|
+
|
|
1453
|
+
rescue RuntimeError => e
|
|
1454
|
+
message = e
|
|
1455
|
+
assert false
|
|
1456
|
+
end
|
|
1457
|
+
end
|
|
1458
|
+
|
|
1459
|
+
def test_smpp_cancel_broadcast_sm
|
|
1460
|
+
dump = String.new()
|
|
1461
|
+
# read and decode package based on hex dump
|
|
1462
|
+
dump << "00 00 00 2C 00 00 01 13 00 00 00 00 00 00 00 0C 73 72 76 74 70 00 31 "
|
|
1463
|
+
dump << "32 33 00 01 01 31 32 33 00 06 01 00 02 01 FF 02 04 00 02 00 0A"
|
|
1464
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1465
|
+
message = ""
|
|
1466
|
+
result = []
|
|
1467
|
+
begin
|
|
1468
|
+
# Get SMPP command
|
|
1469
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1470
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1471
|
+
decoder.append_buffer(buffer)
|
|
1472
|
+
pdu = decoder.get_packet()
|
|
1473
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1474
|
+
|
|
1475
|
+
# Validate SMPP package
|
|
1476
|
+
pdu.decode_packet(decoder)
|
|
1477
|
+
decoder.validate_offset(pdu.command_length)
|
|
1478
|
+
pdu.validate_packet(validator)
|
|
1479
|
+
if pdu.command_length != buffer.size()
|
|
1480
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1481
|
+
end
|
|
1482
|
+
|
|
1483
|
+
# Check txt outputter
|
|
1484
|
+
ostreamcsv = String.new()
|
|
1485
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1486
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1487
|
+
|
|
1488
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1489
|
+
# Iterate line by line
|
|
1490
|
+
ostreamcsv.each_line do |line|
|
|
1491
|
+
continue if line.nil? || line.empty?
|
|
1492
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1493
|
+
assert_equal 5, fields.size()
|
|
1494
|
+
continue if fields.size() != 5
|
|
1495
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1496
|
+
fields[1], fields[2], fields[3],
|
|
1497
|
+
fields[4])
|
|
1498
|
+
end
|
|
1499
|
+
else
|
|
1500
|
+
# Iterate line by line
|
|
1501
|
+
lines.each do |line|
|
|
1502
|
+
continue if line.nil? || line.empty?
|
|
1503
|
+
fields = CSV.parse_line(line, "|")
|
|
1504
|
+
assert_equal 5, fields.size()
|
|
1505
|
+
continue if fields.size() != 5
|
|
1506
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1507
|
+
fields[1], fields[2], fields[3],
|
|
1508
|
+
fields[4])
|
|
1509
|
+
end
|
|
1510
|
+
end
|
|
1511
|
+
|
|
1512
|
+
rescue RuntimeError => e
|
|
1513
|
+
message = e
|
|
1514
|
+
assert false
|
|
1515
|
+
end
|
|
1516
|
+
end
|
|
1517
|
+
|
|
1518
|
+
def test_smpp_cancel_broadcast_sm_resp
|
|
1519
|
+
dump = String.new()
|
|
1520
|
+
# read and decode package based on hex dump
|
|
1521
|
+
dump << "00 00 00 10 80 00 01 13 00 00 00 00 00 00 00 0C"
|
|
1522
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1523
|
+
message = ""
|
|
1524
|
+
result = []
|
|
1525
|
+
begin
|
|
1526
|
+
# Get SMPP command
|
|
1527
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1528
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1529
|
+
decoder.append_buffer(buffer)
|
|
1530
|
+
pdu = decoder.get_packet()
|
|
1531
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1532
|
+
|
|
1533
|
+
# Validate SMPP package
|
|
1534
|
+
pdu.decode_packet(decoder)
|
|
1535
|
+
decoder.validate_offset(pdu.command_length)
|
|
1536
|
+
pdu.validate_packet(validator)
|
|
1537
|
+
if pdu.command_length != buffer.size()
|
|
1538
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1539
|
+
end
|
|
1540
|
+
|
|
1541
|
+
# Check txt outputter
|
|
1542
|
+
ostreamcsv = String.new()
|
|
1543
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1544
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1545
|
+
|
|
1546
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1547
|
+
# Iterate line by line
|
|
1548
|
+
ostreamcsv.each_line do |line|
|
|
1549
|
+
continue if line.nil? || line.empty?
|
|
1550
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1551
|
+
assert_equal 5, fields.size()
|
|
1552
|
+
continue if fields.size() != 5
|
|
1553
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1554
|
+
fields[1], fields[2], fields[3],
|
|
1555
|
+
fields[4])
|
|
1556
|
+
end
|
|
1557
|
+
else
|
|
1558
|
+
# Iterate line by line
|
|
1559
|
+
lines.each do |line|
|
|
1560
|
+
continue if line.nil? || line.empty?
|
|
1561
|
+
fields = CSV.parse_line(line, "|")
|
|
1562
|
+
assert_equal 5, fields.size()
|
|
1563
|
+
continue if fields.size() != 5
|
|
1564
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1565
|
+
fields[1], fields[2], fields[3],
|
|
1566
|
+
fields[4])
|
|
1567
|
+
end
|
|
1568
|
+
end
|
|
1569
|
+
|
|
1570
|
+
rescue RuntimeError => e
|
|
1571
|
+
message = e
|
|
1572
|
+
assert false
|
|
1573
|
+
end
|
|
1574
|
+
end
|
|
1575
|
+
|
|
1576
|
+
def test_smpp_query_broadcast_sm
|
|
1577
|
+
dump = String.new()
|
|
1578
|
+
# read and decode package based on hex dump
|
|
1579
|
+
dump << "00 00 00 20 00 00 01 12 00 00 00 00 00 00 00 0C 31 32 33 00 01 02 33 34 35 00 02 04 00 02 00 02"
|
|
1580
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1581
|
+
message = ""
|
|
1582
|
+
result = []
|
|
1583
|
+
begin
|
|
1584
|
+
# Get SMPP command
|
|
1585
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1586
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1587
|
+
decoder.append_buffer(buffer)
|
|
1588
|
+
pdu = decoder.get_packet()
|
|
1589
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1590
|
+
|
|
1591
|
+
# Validate SMPP package
|
|
1592
|
+
pdu.decode_packet(decoder)
|
|
1593
|
+
decoder.validate_offset(pdu.command_length)
|
|
1594
|
+
pdu.validate_packet(validator)
|
|
1595
|
+
if pdu.command_length != buffer.size()
|
|
1596
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1597
|
+
end
|
|
1598
|
+
|
|
1599
|
+
# Check txt outputter
|
|
1600
|
+
ostreamcsv = String.new()
|
|
1601
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1602
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1603
|
+
|
|
1604
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1605
|
+
# Iterate line by line
|
|
1606
|
+
ostreamcsv.each_line do |line|
|
|
1607
|
+
continue if line.nil? || line.empty?
|
|
1608
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1609
|
+
assert_equal 5, fields.size()
|
|
1610
|
+
continue if fields.size() != 5
|
|
1611
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1612
|
+
fields[1], fields[2], fields[3],
|
|
1613
|
+
fields[4])
|
|
1614
|
+
end
|
|
1615
|
+
else
|
|
1616
|
+
# Iterate line by line
|
|
1617
|
+
lines.each do |line|
|
|
1618
|
+
continue if line.nil? || line.empty?
|
|
1619
|
+
fields = CSV.parse_line(line, "|")
|
|
1620
|
+
assert_equal 5, fields.size()
|
|
1621
|
+
continue if fields.size() != 5
|
|
1622
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1623
|
+
fields[1], fields[2], fields[3],
|
|
1624
|
+
fields[4])
|
|
1625
|
+
end
|
|
1626
|
+
end
|
|
1627
|
+
|
|
1628
|
+
rescue RuntimeError => e
|
|
1629
|
+
message = e
|
|
1630
|
+
assert false
|
|
1631
|
+
end
|
|
1632
|
+
end
|
|
1633
|
+
|
|
1634
|
+
def test_smpp_query_broadcast_sm_resp
|
|
1635
|
+
dump = String.new()
|
|
1636
|
+
# read and decode package based on hex dump
|
|
1637
|
+
dump << "00 00 00 36 80 00 01 12 00 00 00 00 00 00 00 0C 31 32 33 00 04 27 00 01 02 "
|
|
1638
|
+
dump << "06 06 00 02 01 FF 06 06 00 02 01 AF 06 06 00 02 01 DF 06 08 00 01 66 02 04 "
|
|
1639
|
+
dump << "00 02 00 7B"
|
|
1640
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1641
|
+
message = ""
|
|
1642
|
+
result = []
|
|
1643
|
+
begin
|
|
1644
|
+
# Get SMPP command
|
|
1645
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1646
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1647
|
+
decoder.append_buffer(buffer)
|
|
1648
|
+
pdu = decoder.get_packet()
|
|
1649
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1650
|
+
|
|
1651
|
+
# Validate SMPP package
|
|
1652
|
+
pdu.decode_packet(decoder)
|
|
1653
|
+
decoder.validate_offset(pdu.command_length)
|
|
1654
|
+
pdu.validate_packet(validator)
|
|
1655
|
+
if pdu.command_length != buffer.size()
|
|
1656
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1657
|
+
end
|
|
1658
|
+
|
|
1659
|
+
# Check txt outputter
|
|
1660
|
+
ostreamcsv = String.new()
|
|
1661
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1662
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1663
|
+
|
|
1664
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1665
|
+
# Iterate line by line
|
|
1666
|
+
ostreamcsv.each_line do |line|
|
|
1667
|
+
continue if line.nil? || line.empty?
|
|
1668
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1669
|
+
assert_equal 5, fields.size()
|
|
1670
|
+
continue if fields.size() != 5
|
|
1671
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1672
|
+
fields[1], fields[2], fields[3],
|
|
1673
|
+
fields[4])
|
|
1674
|
+
end
|
|
1675
|
+
else
|
|
1676
|
+
# Iterate line by line
|
|
1677
|
+
lines.each do |line|
|
|
1678
|
+
continue if line.nil? || line.empty?
|
|
1679
|
+
fields = CSV.parse_line(line, "|")
|
|
1680
|
+
assert_equal 5, fields.size()
|
|
1681
|
+
continue if fields.size() != 5
|
|
1682
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1683
|
+
fields[1], fields[2], fields[3],
|
|
1684
|
+
fields[4])
|
|
1685
|
+
end
|
|
1686
|
+
end
|
|
1687
|
+
|
|
1688
|
+
rescue RuntimeError => e
|
|
1689
|
+
message = e
|
|
1690
|
+
assert false
|
|
1691
|
+
end
|
|
1692
|
+
end
|
|
1693
|
+
|
|
1694
|
+
|
|
1695
|
+
def test_smpp_query_broadcast_sm_resp_1
|
|
1696
|
+
dump = String.new()
|
|
1697
|
+
# read and decode package based on hex dump
|
|
1698
|
+
dump << "00 00 00 3B 80 00 01 12 00 00 00 00 00 00 00 0C 31 32 33 00 04 27 00 01 02 "
|
|
1699
|
+
dump << "06 06 00 02 01 FF 06 06 00 02 01 AF 06 06 00 02 01 DF 06 08 00 01 66 02 04 "
|
|
1700
|
+
dump << "00 02 00 7B 06 09 00 01 00"
|
|
1701
|
+
buffer = Majoron::AntHill::ByteBuffer.decode_hex(dump)
|
|
1702
|
+
message = ""
|
|
1703
|
+
result = []
|
|
1704
|
+
begin
|
|
1705
|
+
# Get SMPP command
|
|
1706
|
+
decoder = Majoron::AntHill::SMPP::SMPPDecoder.new()
|
|
1707
|
+
validator = Majoron::AntHill::SMPP::SMPPValidator.new()
|
|
1708
|
+
decoder.append_buffer(buffer)
|
|
1709
|
+
pdu = decoder.get_packet()
|
|
1710
|
+
raise Errors::INVALID_COMMAND_ID if pdu.nil?
|
|
1711
|
+
|
|
1712
|
+
# Validate SMPP package
|
|
1713
|
+
pdu.decode_packet(decoder)
|
|
1714
|
+
decoder.validate_offset(pdu.command_length)
|
|
1715
|
+
pdu.validate_packet(validator)
|
|
1716
|
+
if pdu.command_length != buffer.size()
|
|
1717
|
+
message = Errors::MORE_THAN_ONE_PACKAGE
|
|
1718
|
+
end
|
|
1719
|
+
|
|
1720
|
+
# Check txt outputter
|
|
1721
|
+
ostreamcsv = String.new()
|
|
1722
|
+
pdu.output_packet(Majoron::AntHill::SMPP::SMPPCSVOutputter.new(ostreamcsv))
|
|
1723
|
+
assert_not_equal 0, ostreamcsv.size()
|
|
1724
|
+
|
|
1725
|
+
if RUBY_VERSION >= "1.9.0"
|
|
1726
|
+
# Iterate line by line
|
|
1727
|
+
ostreamcsv.each_line do |line|
|
|
1728
|
+
continue if line.nil? || line.empty?
|
|
1729
|
+
fields = CSV.parse_line(line, {:col_sep => "|"})
|
|
1730
|
+
assert_equal 5, fields.size()
|
|
1731
|
+
continue if fields.size() != 5
|
|
1732
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1733
|
+
fields[1], fields[2], fields[3],
|
|
1734
|
+
fields[4])
|
|
1735
|
+
end
|
|
1736
|
+
else
|
|
1737
|
+
# Iterate line by line
|
|
1738
|
+
lines.each do |line|
|
|
1739
|
+
continue if line.nil? || line.empty?
|
|
1740
|
+
fields = CSV.parse_line(line, "|")
|
|
1741
|
+
assert_equal 5, fields.size()
|
|
1742
|
+
continue if fields.size() != 5
|
|
1743
|
+
result << SMPPDecodedField.new(fields[0],
|
|
1744
|
+
fields[1], fields[2], fields[3],
|
|
1745
|
+
fields[4])
|
|
1746
|
+
end
|
|
1747
|
+
end
|
|
1748
|
+
|
|
1749
|
+
rescue RuntimeError => e
|
|
1750
|
+
message = e
|
|
1751
|
+
assert false
|
|
1752
|
+
end
|
|
1753
|
+
end
|
|
1754
|
+
|
|
1755
|
+
|
|
1756
|
+
|
|
1757
|
+
|
|
1758
|
+
end
|