2010-11-17 09:21:48 +00:00
|
|
|
TestCase subclass: GSM0808Test [
|
|
|
|
testLAI [
|
|
|
|
| lai res |
|
|
|
|
res := #(16r72 16rF4 16r80) asByteArray.
|
|
|
|
lai := LAI generateLAI: 274 mnc: 8.
|
|
|
|
|
|
|
|
self assert: lai = res.
|
|
|
|
]
|
|
|
|
|
|
|
|
testCellIE [
|
|
|
|
| ie res msg |
|
|
|
|
|
|
|
|
res := #(5 8 0 114 244 128 32 18 117 48) asByteArray.
|
|
|
|
msg := Osmo.MessageBuffer new.
|
|
|
|
|
|
|
|
ie := GSMCellIdentifier initWith: 274 mnc: 8 lac: 8210 ci: 30000.
|
2010-11-20 00:20:00 +00:00
|
|
|
ie writeOn: msg.
|
2010-11-17 09:21:48 +00:00
|
|
|
|
2010-11-20 00:14:57 +00:00
|
|
|
self assert: msg asByteArray = res.
|
2010-11-23 19:08:49 +00:00
|
|
|
|
|
|
|
ie := GSMCellIdentifier parseFrom: res.
|
|
|
|
self assert: ie mcc = 274.
|
|
|
|
self assert: ie mnc = 8.
|
|
|
|
self assert: ie lac = 8210.
|
|
|
|
self assert: ie ci = 30000.
|
2010-11-17 09:21:48 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
testLayer3IE [
|
|
|
|
| ie res msg |
|
|
|
|
|
|
|
|
res := #(23 3 1 2 3) asByteArray.
|
|
|
|
msg := Osmo.MessageBuffer new.
|
|
|
|
ie := GSMLayer3Info initWith: #(1 2 3) asByteArray.
|
2010-11-20 00:20:00 +00:00
|
|
|
ie writeOn: msg.
|
2010-11-17 09:21:48 +00:00
|
|
|
|
2010-11-20 00:14:57 +00:00
|
|
|
self assert: msg asByteArray = res.
|
2010-11-23 19:15:01 +00:00
|
|
|
|
|
|
|
ie := GSMLayer3Info parseFrom: res.
|
|
|
|
self assert: ie data = #(1 2 3) asByteArray.
|
2010-11-17 09:21:48 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
testComplL3 [
|
|
|
|
| msg buf ie res |
|
2010-11-17 09:26:28 +00:00
|
|
|
msg := IEMessage initWith: GSM0808Helper msgComplL3.
|
2010-11-17 09:21:48 +00:00
|
|
|
|
|
|
|
msg addIe: (GSMCellIdentifier initWith: 274 mnc: 8 lac: 8210 ci: 30000).
|
|
|
|
msg addIe: (GSMLayer3Info initWith: #(1 2 3) asByteArray).
|
|
|
|
|
|
|
|
buf := Osmo.MessageBuffer new.
|
2010-11-20 00:20:00 +00:00
|
|
|
msg writeOn: buf.
|
2010-11-17 09:21:48 +00:00
|
|
|
|
|
|
|
res := #(16r57 16r05 16r08 16r00 16r72 16rF4 16r80 16r20 16r12
|
|
|
|
16r75 16r30 16r17 16r03 16r01 16r02 16r03) asByteArray.
|
2010-11-20 00:14:57 +00:00
|
|
|
self assert: buf asByteArray = res
|
2010-11-17 09:21:48 +00:00
|
|
|
]
|
2010-11-22 16:11:08 +00:00
|
|
|
|
2010-11-24 14:33:19 +00:00
|
|
|
testCuaseIE [
|
|
|
|
| buf ie res |
|
|
|
|
res := #(4 1 32) asByteArray.
|
|
|
|
|
|
|
|
ie := GSMCauseIE initWith: 32.
|
|
|
|
buf := ie toMessage asByteArray.
|
|
|
|
self assert: buf = res.
|
|
|
|
|
|
|
|
ie := GSMCauseIE parseFrom: res.
|
|
|
|
self assert: ie cause = 32.
|
|
|
|
]
|
|
|
|
|
2010-11-22 16:11:08 +00:00
|
|
|
testIEDecoding [
|
|
|
|
| inp res |
|
|
|
|
inp := #(16r57 16r05 16r08 16r00 16r72 16rF4 16r80 16r20 16r12
|
|
|
|
16r75 16r30 16r17 16r03 16r01 16r02 16r03) asByteArray.
|
|
|
|
|
|
|
|
res := IEMessage decode: inp with: GSM0808IE.
|
|
|
|
self assert: res type = GSM0808Helper msgComplL3.
|
|
|
|
self assert: res ies size = 2.
|
|
|
|
]
|
2010-11-17 09:21:48 +00:00
|
|
|
]
|
2010-11-17 15:57:09 +00:00
|
|
|
|
|
|
|
TestCase subclass: BSSAPTest [
|
|
|
|
testPrependManagment [
|
|
|
|
| msg |
|
|
|
|
msg := Osmo.MessageBuffer new.
|
|
|
|
msg putByteArray: #(1 2 3) asByteArray.
|
|
|
|
|
|
|
|
BSSAPHelper prependManagement: msg.
|
2010-11-20 00:14:57 +00:00
|
|
|
self assert: msg asByteArray = #(0 3 1 2 3) asByteArray.
|
2010-11-17 15:57:09 +00:00
|
|
|
]
|
|
|
|
|
2010-11-20 00:32:09 +00:00
|
|
|
testManagment [
|
|
|
|
| man |
|
|
|
|
|
|
|
|
man := BSSAPManagement initWith: #(1 2 3) asByteArray.
|
|
|
|
self assert: man toMessage asByteArray = #(0 3 1 2 3) asByteArray.
|
|
|
|
]
|
|
|
|
|
2010-11-22 16:11:08 +00:00
|
|
|
testParseManagement [
|
|
|
|
| man |
|
|
|
|
|
|
|
|
man := BSSAPMessage decode: #(0 3 1 2 3) asByteArray.
|
|
|
|
self assert: (man isKindOf: BSSAPManagement).
|
|
|
|
self assert: man data = #(1 2 3) asByteArray.
|
|
|
|
]
|
|
|
|
|
2010-11-17 15:57:09 +00:00
|
|
|
testPrependDTAP [
|
|
|
|
| msg |
|
|
|
|
msg := Osmo.MessageBuffer new.
|
|
|
|
msg putByteArray: #(1 2 3) asByteArray.
|
|
|
|
|
|
|
|
BSSAPHelper prependDTAP: msg dlci: 0.
|
2010-11-20 00:14:57 +00:00
|
|
|
self assert: msg asByteArray = #(1 0 3 1 2 3) asByteArray.
|
2010-11-17 15:57:09 +00:00
|
|
|
]
|
|
|
|
]
|
2010-11-17 21:39:41 +00:00
|
|
|
|
|
|
|
TestCase subclass: GSM48Test [
|
|
|
|
testKeySeqLu [
|
2010-11-23 21:02:39 +00:00
|
|
|
| gsm msg res |
|
|
|
|
res := #(16r70) asByteArray.
|
2010-11-17 21:39:41 +00:00
|
|
|
msg := Osmo.MessageBuffer new.
|
|
|
|
gsm := GSM48KeySeqLuType createDefault.
|
2010-11-20 00:20:00 +00:00
|
|
|
gsm writeOnDirect: msg.
|
2010-11-17 21:39:41 +00:00
|
|
|
|
2010-11-23 21:02:39 +00:00
|
|
|
self assert: msg asByteArray = res.
|
2010-11-23 22:37:27 +00:00
|
|
|
|
|
|
|
self assert: (GSM48KeySeqLuType length: res) = 1.
|
|
|
|
gsm := GSM48KeySeqLuType parseFrom: res.
|
|
|
|
self assert: gsm val = 16r70.
|
2010-11-17 21:39:41 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
testLai [
|
2010-11-23 21:02:39 +00:00
|
|
|
| gsm msg res |
|
|
|
|
res := #(16r02 16rF2 16r50 16rFF 16rFE) asByteArray.
|
2010-11-17 21:39:41 +00:00
|
|
|
msg := Osmo.MessageBuffer new.
|
|
|
|
gsm := GSM48Lai createDefault.
|
|
|
|
gsm mcc: 202; mnc: 5; lac: 65534.
|
2010-11-20 00:20:00 +00:00
|
|
|
gsm writeOnDirect: msg.
|
2010-11-17 21:39:41 +00:00
|
|
|
|
2010-11-23 21:02:39 +00:00
|
|
|
self assert: msg asByteArray = res.
|
2010-11-23 22:45:11 +00:00
|
|
|
|
|
|
|
self assert: (GSM48Lai length: res) = res size.
|
|
|
|
gsm := GSM48Lai parseFrom: res.
|
|
|
|
self assert: gsm mcc = 202.
|
|
|
|
self assert: gsm mnc = 5.
|
|
|
|
self assert: gsm lac = 65534.
|
2010-11-17 21:39:41 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
testCM1 [
|
2010-11-23 21:02:39 +00:00
|
|
|
| gsm msg res |
|
|
|
|
res := #(16r33) asByteArray.
|
2010-11-17 21:39:41 +00:00
|
|
|
msg := Osmo.MessageBuffer new.
|
|
|
|
gsm := GSM48Classmark1 createDefault.
|
2010-11-20 00:20:00 +00:00
|
|
|
gsm writeOnDirect: msg.
|
2010-11-17 21:39:41 +00:00
|
|
|
|
2010-11-23 21:02:39 +00:00
|
|
|
self assert: msg asByteArray = res.
|
2010-11-23 22:48:52 +00:00
|
|
|
|
|
|
|
self assert: (GSM48Classmark1 length: res) = res size.
|
|
|
|
gsm := GSM48Classmark1 parseFrom: res.
|
|
|
|
self assert: gsm cm1 = 16r33.
|
2010-11-17 21:39:41 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
testMI [
|
2010-11-23 23:12:36 +00:00
|
|
|
| gsm msg res imsi |
|
2010-11-23 21:02:39 +00:00
|
|
|
res := #(8 41 71 128 0 0 0 116 8) asByteArray.
|
2010-11-23 23:12:36 +00:00
|
|
|
imsi := '274080000004780'.
|
|
|
|
|
2010-11-17 21:39:41 +00:00
|
|
|
msg := Osmo.MessageBuffer new.
|
|
|
|
gsm := GSM48MIdentity createDefault.
|
2010-11-23 23:12:36 +00:00
|
|
|
gsm imsi: imsi.
|
2010-11-20 00:20:00 +00:00
|
|
|
gsm writeOnDirect: msg.
|
2010-11-17 21:39:41 +00:00
|
|
|
|
2010-11-23 21:02:39 +00:00
|
|
|
self assert: msg asByteArray = res.
|
2010-11-23 23:12:36 +00:00
|
|
|
|
|
|
|
self assert: (GSM48MIdentity length: res) = res size.
|
|
|
|
gsm := GSM48MIdentity parseFrom: res.
|
|
|
|
self assert: gsm imsi = imsi.
|
2010-11-17 21:39:41 +00:00
|
|
|
]
|
|
|
|
|
2010-11-24 14:12:48 +00:00
|
|
|
testRejectCause [
|
|
|
|
| rej msg target |
|
|
|
|
target := #(11) asByteArray.
|
|
|
|
|
|
|
|
msg := Osmo.MessageBuffer new.
|
|
|
|
rej := GSM48RejectCause createDefault.
|
|
|
|
rej writeOnDirect: msg.
|
|
|
|
self assert: msg asByteArray = target.
|
|
|
|
|
|
|
|
self assert: (GSM48RejectCause length: target) = 1.
|
|
|
|
rej := GSM48RejectCause parseFrom: target.
|
|
|
|
self assert: rej cause = 11.
|
|
|
|
]
|
|
|
|
|
2010-11-17 21:39:41 +00:00
|
|
|
testLU [
|
2010-11-23 21:02:39 +00:00
|
|
|
| gsm msg res |
|
2010-11-17 21:39:41 +00:00
|
|
|
|
2010-11-23 21:02:39 +00:00
|
|
|
res := #(5 8 112 2 242 80 255 254 51 8 105 102 1 69 0 114 131 136) asByteArray.
|
2010-11-19 19:26:59 +00:00
|
|
|
msg := Osmo.MessageBuffer new.
|
|
|
|
gsm := LocationUpdatingRequest new.
|
|
|
|
(gsm lai) mcc: 202; mnc: 5; lac: 65534.
|
|
|
|
(gsm mi) imsi: '666105400273888'.
|
2010-11-20 00:20:00 +00:00
|
|
|
gsm writeOn: msg.
|
2010-11-17 21:39:41 +00:00
|
|
|
|
2010-11-23 21:02:39 +00:00
|
|
|
self assert: msg asByteArray = res
|
2010-11-17 21:39:41 +00:00
|
|
|
]
|
|
|
|
]
|
2010-11-20 00:15:52 +00:00
|
|
|
|
|
|
|
TestCase subclass: TestMessages [
|
|
|
|
testLU [
|
2010-11-20 08:35:12 +00:00
|
|
|
| sccp handler |
|
2010-11-20 00:15:52 +00:00
|
|
|
|
2010-11-24 09:58:30 +00:00
|
|
|
handler := SCCPHandler new.
|
2010-11-20 08:35:12 +00:00
|
|
|
sccp := MessageTests createLU: handler.
|
2010-11-24 09:58:30 +00:00
|
|
|
self assert: sccp asByteArray = #(1 154 2 0 2 2 4 2 66 254 15 32 0 30 87 5 8 0 114 244 128 16 3 156 64 23 17 5 8 112 0 240 0 0 0 51 7 97 102 102 102 102 102 246 0 ) asByteArray.
|
2010-11-20 00:15:52 +00:00
|
|
|
]
|
2010-11-22 16:13:26 +00:00
|
|
|
|
|
|
|
testMsgParser [
|
2010-11-23 23:41:38 +00:00
|
|
|
| msg bssap bssmap ies l3 gsm48 inp |
|
2010-11-22 16:13:26 +00:00
|
|
|
|
2010-11-23 23:41:38 +00:00
|
|
|
inp := #(1 154 2 0 2 2 4 2 66 254 15 32 0 30 87
|
|
|
|
5 8 0 114 244 128 16 3 156 64 23 17 5 8
|
|
|
|
112 0 240 0 0 0 51 7 97 102 102 102 102
|
|
|
|
102 246 0 ) asByteArray.
|
|
|
|
msg := MSGParser parse: inp.
|
2010-11-22 16:13:26 +00:00
|
|
|
self assert: (msg isKindOf: Osmo.SCCPConnectionRequest).
|
|
|
|
|
|
|
|
bssap := msg data.
|
|
|
|
self assert: (bssap isKindOf: BSSAPManagement).
|
2010-11-22 16:14:50 +00:00
|
|
|
|
|
|
|
bssmap := bssap data.
|
|
|
|
self assert: (bssmap isKindOf: IEMessage).
|
2010-11-23 19:55:31 +00:00
|
|
|
|
|
|
|
ies := bssmap ies.
|
|
|
|
self assert: ies size = 2.
|
|
|
|
|
|
|
|
l3 := bssmap findIE: (GSMLayer3Info elementId) ifAbsent: [
|
|
|
|
self assert: false.
|
|
|
|
].
|
2010-11-23 23:41:38 +00:00
|
|
|
|
|
|
|
self assert: (l3 isKindOf: GSMLayer3Info).
|
|
|
|
|
|
|
|
gsm48 := l3 data.
|
|
|
|
self assert: (gsm48 isKindOf: LocationUpdatingRequest).
|
|
|
|
|
|
|
|
self assert: gsm48 mi imsi = '666666666666'.
|
|
|
|
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
2010-11-22 16:13:26 +00:00
|
|
|
]
|
2010-11-24 14:17:10 +00:00
|
|
|
|
|
|
|
testMsgParserDt1 [
|
|
|
|
| inp msg bssap gsm48 |
|
|
|
|
inp := #(6 154 2 0 0 1 6 1 0 3 5 4 11 ) asByteArray.
|
|
|
|
|
|
|
|
msg := MSGParser parse: inp.
|
|
|
|
self assert: (msg isKindOf: Osmo.SCCPConnectionData).
|
|
|
|
|
|
|
|
bssap := msg data.
|
|
|
|
self assert: (bssap isKindOf: BSSAPDTAP).
|
|
|
|
|
|
|
|
gsm48 := bssap data.
|
|
|
|
self assert: (gsm48 isKindOf: LocationUpdatingReject).
|
|
|
|
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
|
|
|
]
|
2010-11-24 14:33:19 +00:00
|
|
|
|
|
|
|
testMsgparserDt1Clear [
|
|
|
|
| inp msg bssap bssmap |
|
|
|
|
inp := #(6 154 2 0 0 1 6 0 4 32 4 1 32) asByteArray.
|
|
|
|
msg := MSGParser parse: inp.
|
|
|
|
self assert: (msg isKindOf: Osmo.SCCPConnectionData).
|
|
|
|
|
|
|
|
bssap := msg data.
|
|
|
|
self assert: (bssap isKindOf: BSSAPManagement).
|
|
|
|
|
|
|
|
bssmap := bssap data.
|
|
|
|
self assert: (bssmap isKindOf: IEMessage).
|
|
|
|
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
|
|
|
]
|
2010-11-24 20:46:34 +00:00
|
|
|
|
|
|
|
testRandomMessages [
|
|
|
|
| inp msg |
|
|
|
|
"This only tests some parsing... it does not verify the content"
|
|
|
|
|
|
|
|
inp := #(6 1 8 101 0 1 3 0 1 33 ) asByteArray.
|
|
|
|
msg := MSGParser parse: inp.
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
|
|
|
|
|
|
|
inp := #(6 48 4 5 0 1 22 1 0 19 5 18 1 83 3 123 16 155 119 176 138 215 28 107 26 47 193 59 248 ) asByteArray.
|
|
|
|
msg := MSGParser parse: inp.
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
2010-11-24 21:18:48 +00:00
|
|
|
|
|
|
|
inp := #(6 1 8 104 0 1 9 1 0 6 5 84 253 230 198 47) asByteArray.
|
|
|
|
msg := MSGParser parse: inp.
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
2010-11-26 15:18:06 +00:00
|
|
|
|
|
|
|
inp := #(6 46 4 5 0 1 20 1 0 17 5 2 114 244 128 16 3 23 8 41 34 1 96 16 85 37 115) asByteArray.
|
|
|
|
msg := MSGParser parse: inp.
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
2010-11-26 21:55:13 +00:00
|
|
|
|
|
|
|
|
|
|
|
"Identity Request"
|
|
|
|
inp := #(16r06 16r3A 16r04 16r05 16r00 16r01 16r06 16r01 16r00 16r03 16r05 16r18 16r01) asByteArray.
|
|
|
|
msg := MSGParser parse: inp.
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
2010-11-26 23:17:34 +00:00
|
|
|
|
|
|
|
"Identity Response"
|
|
|
|
inp := #(16r06 16r01 16r08 16r76 16r00 16r01 16r0E 16r01 16r00 16r0B 16r05 16r59 16r08 16r29 16r20 16r10 16r31 16r61 16r35 16r45 16r06) asByteArray.
|
|
|
|
msg := MSGParser parse: inp.
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
2010-11-27 13:25:41 +00:00
|
|
|
|
|
|
|
"CM Service Request"
|
|
|
|
inp := #(1 205 4 5 2 2 4 2 66 254 15 33 0 31 87 5 8 0 114 244 128 16 3 156 64 23 16 5 36 17 3 51 25 129 8 41 32 1 153 118 6 1 152 33 1 0) asByteArray.
|
|
|
|
msg := MSGParser parse: inp.
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
2010-11-27 13:33:19 +00:00
|
|
|
|
|
|
|
"IMSI Detach Ind"
|
|
|
|
inp := #(1 255 4 5 2 2 4 2 66 254 15 29 0 27 87 5 8 0 114 244 128 16 3 156 64 23 12 5 1 51 8 41 65 112 6 16 9 71 34 33 1 0 ) asByteArray.
|
|
|
|
msg := MSGParser parse: inp.
|
|
|
|
self assert: msg toMessage asByteArray = inp.
|
2010-11-24 20:46:34 +00:00
|
|
|
]
|
2010-11-20 00:15:52 +00:00
|
|
|
]
|