aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/tests/gbproxy/gbproxy_test.c
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2014-09-22 19:16:06 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2014-10-27 10:51:40 +0100
commitfb83ed32d2985362d35151e1fdebc5a62e8b874a (patch)
treedcaf303822f6cd92f99dacd8f2f8162a35d95c88 /openbsc/tests/gbproxy/gbproxy_test.c
parent78ecaf0561bfed3f09ce9c180434da59e71202bd (diff)
gbproxy/test: Add expect_msg checks to test_gbproxy_keep_info
This patch adds assertions to check the LLC/GMM message received from the gbproxy by the test framework within the function test_gbproxy_keep_info. It also fixes the source address of the DETACH ACC messages. Sponsored-by: On-Waves ehf
Diffstat (limited to 'openbsc/tests/gbproxy/gbproxy_test.c')
-rw-r--r--openbsc/tests/gbproxy/gbproxy_test.c105
1 files changed, 101 insertions, 4 deletions
diff --git a/openbsc/tests/gbproxy/gbproxy_test.c b/openbsc/tests/gbproxy/gbproxy_test.c
index 16dbf5b46..350c9f0eb 100644
--- a/openbsc/tests/gbproxy/gbproxy_test.c
+++ b/openbsc/tests/gbproxy/gbproxy_test.c
@@ -3247,6 +3247,8 @@ static void test_gbproxy_keep_info()
unsigned bss_nu = 0;
unsigned sgsn_nu = 0;
+ LLIST_HEAD(rcv_list);
+
OSMO_ASSERT(local_tlli == gprs_tmsi2tlli(ptmsi, TLLI_LOCAL));
bssgp_nsi = nsi;
@@ -3288,11 +3290,15 @@ static void test_gbproxy_keep_info()
printf("--- Send message from BSS 1 to SGSN, BVCI 0x1002 ---\n\n");
+ received_messages = &rcv_list;
+
send_llc_ul_ui(nsi, "ATTACH REQUEST", &bss_peer[0], 0x1002,
foreign_tlli, &rai_bss, cell_id,
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_req, sizeof(dtap_attach_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ID_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli);
@@ -3306,6 +3312,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_identity_resp, sizeof(dtap_identity_resp));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli);
@@ -3318,6 +3326,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_identity_req, sizeof(dtap_identity_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ID_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
send_llc_ul_ui(nsi, "IDENT RESPONSE", &bss_peer[0], 0x1002,
@@ -3325,6 +3335,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_identity_resp, sizeof(dtap_identity_resp));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ID_RESP));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli);
@@ -3337,6 +3349,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_attach_acc, sizeof(dtap_attach_acc));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ATTACH_ACK));
+
dump_peers(stdout, 0, 0, &gbcfg);
send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002,
@@ -3344,6 +3358,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_complete, sizeof(dtap_attach_complete));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_COMPL));
+
dump_peers(stdout, 0, 0, &gbcfg);
send_llc_dl_ui(nsi, "GMM INFO", &sgsn_peer, 0x1002,
@@ -3351,6 +3367,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_gmm_information, sizeof(dtap_gmm_information));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_INFO));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, local_tlli);
@@ -3362,6 +3380,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_detach_req, sizeof(dtap_detach_req));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_DETACH_REQ));
+
link_info = gbproxy_link_info_by_tlli(peer, local_tlli);
OSMO_ASSERT(link_info);
@@ -3372,6 +3392,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_detach_acc, sizeof(dtap_detach_acc));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_DETACH_ACK));
+
dump_peers(stdout, 0, 0, &gbcfg);
OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, local_tlli));
@@ -3379,12 +3401,16 @@ static void test_gbproxy_keep_info()
OSMO_ASSERT(link_info);
OSMO_ASSERT(link_info->is_deregistered);
+ OSMO_ASSERT(!expect_msg());
+
/* Re-Attach */
send_llc_ul_ui(nsi, "ATTACH REQUEST", &bss_peer[0], 0x1002,
foreign_tlli, &rai_bss, cell_id,
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_req3, sizeof(dtap_attach_req3));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi));
@@ -3400,6 +3426,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_attach_acc, sizeof(dtap_attach_acc));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ATTACH_ACK));
+
dump_peers(stdout, 0, 0, &gbcfg);
send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002,
@@ -3407,6 +3435,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_complete, sizeof(dtap_attach_complete));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_COMPL));
+
dump_peers(stdout, 0, 0, &gbcfg);
/* Detach (MT) */
@@ -3415,16 +3445,21 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_mt_detach_rea_req, sizeof(dtap_mt_detach_rea_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_DETACH_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, local_tlli);
OSMO_ASSERT(link_info);
- send_llc_ul_ui(nsi, "DETACH ACC", &sgsn_peer, 0x1002,
+ send_llc_ul_ui(nsi, "DETACH ACC", &bss_peer[0], 0x1002,
local_tlli, &rai_bss, cell_id,
GPRS_SAPI_GMM, bss_nu++,
dtap_mt_detach_acc, sizeof(dtap_mt_detach_acc));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_DETACH_ACK));
+ OSMO_ASSERT(!expect_msg());
+
dump_peers(stdout, 0, 0, &gbcfg);
OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, local_tlli));
@@ -3438,6 +3473,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_req3, sizeof(dtap_attach_req3));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi));
@@ -3453,6 +3490,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_attach_acc, sizeof(dtap_attach_acc));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ATTACH_ACK));
+
dump_peers(stdout, 0, 0, &gbcfg);
send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002,
@@ -3460,6 +3499,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_complete, sizeof(dtap_attach_complete));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_COMPL));
+
dump_peers(stdout, 0, 0, &gbcfg);
/* Detach (MT) */
@@ -3468,16 +3509,21 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_mt_detach_req, sizeof(dtap_mt_detach_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_DETACH_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, local_tlli);
OSMO_ASSERT(link_info);
- send_llc_ul_ui(nsi, "DETACH ACC", &sgsn_peer, 0x1002,
+ send_llc_ul_ui(nsi, "DETACH ACC", &bss_peer[0], 0x1002,
local_tlli, &rai_bss, cell_id,
GPRS_SAPI_GMM, bss_nu++,
dtap_mt_detach_acc, sizeof(dtap_mt_detach_acc));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_DETACH_ACK));
+ OSMO_ASSERT(!expect_msg());
+
dump_peers(stdout, 0, 0, &gbcfg);
OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, local_tlli));
@@ -3491,6 +3537,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_req3, sizeof(dtap_attach_req3));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi));
@@ -3506,6 +3554,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_attach_acc, sizeof(dtap_attach_acc));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ATTACH_ACK));
+
dump_peers(stdout, 0, 0, &gbcfg);
send_llc_ul_ui(nsi, "ATTACH COMPLETE", &bss_peer[0], 0x1002,
@@ -3513,6 +3563,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_complete, sizeof(dtap_attach_complete));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_COMPL));
+
dump_peers(stdout, 0, 0, &gbcfg);
/* RA update procedure (reject -> Detach) */
@@ -3521,11 +3573,16 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_ra_upd_req, sizeof(dtap_ra_upd_req));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_RA_UPD_REQ));
+
send_llc_dl_ui(nsi, "RA UDP REJ", &sgsn_peer, 0x1002,
local_tlli, 1, imsi, sizeof(imsi),
GPRS_SAPI_GMM, sgsn_nu++,
dtap_ra_upd_rej, sizeof(dtap_ra_upd_rej));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_RA_UPD_REJ));
+ OSMO_ASSERT(!expect_msg());
+
dump_peers(stdout, 0, 0, &gbcfg);
OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, local_tlli));
@@ -3539,6 +3596,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_req, sizeof(dtap_attach_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ID_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi));
@@ -3554,6 +3613,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_identity_resp, sizeof(dtap_identity_resp));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi));
@@ -3569,6 +3630,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_attach_acc, sizeof(dtap_attach_acc));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ATTACH_ACK));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi));
@@ -3582,6 +3645,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_complete, sizeof(dtap_attach_complete));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_COMPL));
+
dump_peers(stdout, 0, 0, &gbcfg);
/* Detach (MT) */
@@ -3590,16 +3655,20 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_mt_detach_req, sizeof(dtap_mt_detach_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_DETACH_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, local_tlli);
OSMO_ASSERT(link_info);
- send_llc_ul_ui(nsi, "DETACH ACC", &sgsn_peer, 0x1002,
+ send_llc_ul_ui(nsi, "DETACH ACC", &bss_peer[0], 0x1002,
local_tlli, &rai_bss, cell_id,
GPRS_SAPI_GMM, bss_nu++,
dtap_mt_detach_acc, sizeof(dtap_mt_detach_acc));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_DETACH_ACK));
+
dump_peers(stdout, 0, 0, &gbcfg);
OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, local_tlli));
@@ -3607,6 +3676,8 @@ static void test_gbproxy_keep_info()
OSMO_ASSERT(link_info);
OSMO_ASSERT(link_info->is_deregistered);
+ OSMO_ASSERT(!expect_msg());
+
/* Attach rejected */
gbproxy_delete_link_infos(peer);
@@ -3616,6 +3687,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_req, sizeof(dtap_attach_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ID_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli);
@@ -3629,6 +3702,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_identity_resp, sizeof(dtap_identity_resp));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info2 = gbproxy_link_info_by_imsi(peer, imsi, sizeof(imsi));
@@ -3644,10 +3719,14 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_attach_rej7, sizeof(dtap_attach_rej7));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ATTACH_REJ));
+
dump_peers(stdout, 0, 0, &gbcfg);
OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, foreign_tlli));
+ OSMO_ASSERT(!expect_msg());
+
/* Attach (incomplete) and Detach (MO) */
gbproxy_delete_link_infos(peer);
@@ -3657,6 +3736,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_req, sizeof(dtap_attach_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ID_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli);
@@ -3670,8 +3751,12 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_detach_req, sizeof(dtap_detach_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_DETACH_ACK));
+
dump_peers(stdout, 0, 0, &gbcfg);
+ OSMO_ASSERT(!expect_msg());
+
/* Attach (incomplete) and Detach (MT) */
gbproxy_delete_link_infos(peer);
@@ -3681,6 +3766,8 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, bss_nu++,
dtap_attach_req, sizeof(dtap_attach_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_ID_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli);
@@ -3694,16 +3781,23 @@ static void test_gbproxy_keep_info()
GPRS_SAPI_GMM, sgsn_nu++,
dtap_mt_detach_req, sizeof(dtap_mt_detach_req));
+ OSMO_ASSERT(expect_gmm_msg(0x1000, 0x1002, GSM48_MT_GMM_DETACH_REQ));
+
dump_peers(stdout, 0, 0, &gbcfg);
link_info = gbproxy_link_info_by_tlli(peer, foreign_tlli);
OSMO_ASSERT(link_info);
- send_llc_ul_ui(nsi, "DETACH ACC", &sgsn_peer, 0x1002,
+ send_llc_ul_ui(nsi, "DETACH ACC", &bss_peer[0], 0x1002,
foreign_tlli, &rai_bss, cell_id,
GPRS_SAPI_GMM, bss_nu++,
dtap_mt_detach_acc, sizeof(dtap_mt_detach_acc));
+ /* TODO: The stored messaged should be cleaned when receiving a Detach
+ * Ack. Remove the first OSMO_ASSERT when this is fixed. */
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_ATTACH_REQ));
+ OSMO_ASSERT(expect_gmm_msg(SGSN_NSEI, 0x1002, GSM48_MT_GMM_DETACH_ACK));
+
dump_peers(stdout, 0, 0, &gbcfg);
OSMO_ASSERT(!gbproxy_link_info_by_tlli(peer, foreign_tlli));
@@ -3711,6 +3805,9 @@ static void test_gbproxy_keep_info()
OSMO_ASSERT(link_info);
OSMO_ASSERT(link_info->is_deregistered);
+ OSMO_ASSERT(!expect_msg());
+ received_messages = NULL;
+
dump_global(stdout, 0);
gbprox_reset(&gbcfg);