summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2018-03-31 05:23:09 +0700
committerVadim Yanitskiy <axilirator@gmail.com>2018-05-31 16:12:14 +0000
commit36c7b33ccc66eee29efa98120e00952532c8e122 (patch)
tree13b207fdb20dca1a0dd78ed8441c70178351e424 /tests
parent72696040dfac41512c672f71f2b3712656641a7f (diff)
GSUP: introduce new messages for SS/USSD payloads
In order to be able to transfer SS/USSD messages via GSUP, this change introduces the following new message types: - OSMO_GSUP_MSGT_PROC_SS_*, and the following new IE: - OSMO_GSUP_SS_INFO_IE which represents an ASN.1 encoded MAP payload coming to/from the mobile station 'as is', without any transcoding. Change-Id: Ie17a78043a35fffbdd59e80fd2b2da39cce5e532 Related: OS#1597
Diffstat (limited to 'tests')
-rw-r--r--tests/gsup/gsup_test.c47
-rw-r--r--tests/gsup/gsup_test.err10
-rw-r--r--tests/gsup/gsup_test.ok4
3 files changed, 60 insertions, 1 deletions
diff --git a/tests/gsup/gsup_test.c b/tests/gsup/gsup_test.c
index 6ead7d28..9712d77b 100644
--- a/tests/gsup/gsup_test.c
+++ b/tests/gsup/gsup_test.c
@@ -180,6 +180,43 @@ static void test_gsup_messages_dec_enc(void)
0x31, 0x01, 0x01,
};
+ static const uint8_t send_ussd_req[] = {
+ 0x20, /* OSMO_GSUP_MSGT_PROC_SS_REQUEST */
+ TEST_IMSI_IE,
+
+ /* Session ID and state */
+ 0x30, 0x04, 0xde, 0xad, 0xbe, 0xef,
+ 0x31, 0x01, 0x01,
+
+ /* SS/USSD information IE */
+ 0x35, 0x14,
+ /* ASN.1 encoded MAP payload */
+ 0xa1, 0x12,
+ 0x02, 0x01, /* Component: invoke */
+ 0x01, /* invokeID = 1 */
+ /* opCode: processUnstructuredSS-Request */
+ 0x02, 0x01, 0x3b, 0x30, 0x0a, 0x04, 0x01, 0x0f,
+ 0x04, 0x05, 0xaa, 0x18, 0x0c, 0x36, 0x02,
+ };
+
+ static const uint8_t send_ussd_res[] = {
+ 0x22, /* OSMO_GSUP_MSGT_PROC_SS_RESULT */
+ TEST_IMSI_IE,
+
+ /* Session ID and state */
+ 0x30, 0x04, 0xde, 0xad, 0xbe, 0xef,
+ 0x31, 0x01, 0x03,
+
+ /* SS/USSD information IE */
+ 0x35, 0x08,
+ /* ASN.1 encoded MAP payload */
+ 0xa3, 0x06,
+ 0x02, 0x01, /* Component: returnError */
+ 0x01, /* invokeID = 1 */
+ /* localValue: unknownAlphabet */
+ 0x02, 0x01, 0x47,
+ };
+
static const struct test {
char *name;
const uint8_t *data;
@@ -215,6 +252,10 @@ static void test_gsup_messages_dec_enc(void)
send_auth_info_req_auts, sizeof(send_auth_info_req_auts)},
{"Dummy message with session IEs",
dummy_session_ies, sizeof(dummy_session_ies)},
+ {"SS/USSD processUnstructuredSS-Request / Invoke",
+ send_ussd_req, sizeof(send_ussd_req)},
+ {"SS/USSD processUnstructuredSS-Request / ReturnResult",
+ send_ussd_res, sizeof(send_ussd_res)},
};
printf("Test GSUP message decoding/encoding\n");
@@ -278,7 +319,11 @@ static void test_gsup_messages_dec_enc(void)
osmo_hexdump(t->data + j, ie_end - j));
OSMO_ASSERT(j <= ie_end - 2);
- OSMO_ASSERT(t->data[j+0] <= OSMO_GSUP_SESSION_STATE_IE);
+ /**
+ * FIXME: share the maximal IE value somehow
+ * in order to avoid manual updating of this
+ */
+ OSMO_ASSERT(t->data[j+0] <= OSMO_GSUP_SS_INFO_IE);
OSMO_ASSERT(t->data[j+1] <= ie_end - j - 2);
ie_end = j;
diff --git a/tests/gsup/gsup_test.err b/tests/gsup/gsup_test.err
index 5c010e6c..ac71ac24 100644
--- a/tests/gsup/gsup_test.err
+++ b/tests/gsup/gsup_test.err
@@ -43,6 +43,12 @@
generated message: 2b 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 01
original message: 2b 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 01
IMSI: 123456789012345
+ generated message: 20 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 01 35 14 a1 12 02 01 01 02 01 3b 30 0a 04 01 0f 04 05 aa 18 0c 36 02
+ original message: 20 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 01 35 14 a1 12 02 01 01 02 01 3b 30 0a 04 01 0f 04 05 aa 18 0c 36 02
+ IMSI: 123456789012345
+ generated message: 22 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 03 35 08 a3 06 02 01 01 02 01 47
+ original message: 22 01 08 21 43 65 87 09 21 43 f5 30 04 de ad be ef 31 01 03 35 08 a3 06 02 01 01 02 01 47
+ IMSI: 123456789012345
message 0: tested 11 truncations, 11 parse failures
message 1: tested 14 truncations, 13 parse failures
message 2: tested 83 truncations, 81 parse failures
@@ -58,6 +64,8 @@
message 12: tested 211 truncations, 209 parse failures
message 13: tested 45 truncations, 43 parse failures
message 14: tested 20 truncations, 18 parse failures
+ message 15: tested 42 truncations, 39 parse failures
+ message 16: tested 30 truncations, 27 parse failures
DLGSUP Stopping DLGSUP logging
message 0: tested 2816 modifications, 510 parse failures
message 1: tested 3584 modifications, 768 parse failures
@@ -74,3 +82,5 @@ DLGSUP Stopping DLGSUP logging
message 12: tested 54016 modifications, 4622 parse failures
message 13: tested 11520 modifications, 1026 parse failures
message 14: tested 5120 modifications, 1026 parse failures
+ message 15: tested 10752 modifications, 1256 parse failures
+ message 16: tested 7680 modifications, 1265 parse failures
diff --git a/tests/gsup/gsup_test.ok b/tests/gsup/gsup_test.ok
index 1f599025..d63dd2d6 100644
--- a/tests/gsup/gsup_test.ok
+++ b/tests/gsup/gsup_test.ok
@@ -29,4 +29,8 @@ Test GSUP message decoding/encoding
Send Authentication Info Request with AUTS and RAND (UMTS) OK
Testing Dummy message with session IEs
Dummy message with session IEs OK
+ Testing SS/USSD processUnstructuredSS-Request / Invoke
+ SS/USSD processUnstructuredSS-Request / Invoke OK
+ Testing SS/USSD processUnstructuredSS-Request / ReturnResult
+ SS/USSD processUnstructuredSS-Request / ReturnResult OK
Done.