SGSN: add TC_hlr_location_cancel_request_unknown_subscriber_{withdraw,update}

Cancel Location using an unknown IMSI.

HLR -> SGSN: Cancel Location Request
HLR <- SGSN: Cancel Location Error

Change-Id: Iad90c3cc25d72b9ab40e358fe60aa6f62163f146
diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn
index 1a68014..0685e30 100644
--- a/sgsn/SGSN_Tests.ttcn
+++ b/sgsn/SGSN_Tests.ttcn
@@ -1280,6 +1280,53 @@
 }
 
 
+private function f_hlr_location_cancel_request_unknown_subscriber(
+		charstring id,
+		GSUP_CancelType canceltype) runs on BSSGP_ConnHdlr {
+
+	/* HLR: cancel the location request */
+	GSUP.send(ts_GSUP_CL_REQ(g_pars.imsi, canceltype));
+
+	/* cause 2 = IMSI_UNKNOWN */
+	GSUP.receive(tr_GSUP_CL_ERR(g_pars.imsi, 2));
+
+	setverdict(pass);
+}
+
+private function f_TC_hlr_location_cancel_request_unknown_subscriber_withdraw(charstring id) runs on BSSGP_ConnHdlr {
+        f_hlr_location_cancel_request_unknown_subscriber(id, OSMO_GSUP_CANCEL_TYPE_WITHDRAW);
+}
+
+testcase TC_hlr_location_cancel_request_unknown_subscriber_withdraw() runs on test_CT {
+	/* HLR -> SGSN: Cancel Location Request
+	 * HLR <- SGSN: Cancel Location Error
+	 */
+
+	var BSSGP_ConnHdlr vc_conn;
+	f_init();
+	f_sleep(1.0);
+	vc_conn := f_start_handler(refers(f_TC_hlr_location_cancel_request_unknown_subscriber_withdraw), testcasename(), g_gb[0], 30);
+	vc_conn.done;
+}
+
+private function f_TC_hlr_location_cancel_request_unknown_subscriber_update(charstring id) runs on BSSGP_ConnHdlr {
+        f_hlr_location_cancel_request_unknown_subscriber(id, OSMO_GSUP_CANCEL_TYPE_WITHDRAW);
+}
+
+testcase TC_hlr_location_cancel_request_unknown_subscriber_update() runs on test_CT {
+	/* HLR -> SGSN: Cancel Location Request
+	 * HLR <- SGSN: Cancel Location Error
+	 */
+
+	var BSSGP_ConnHdlr vc_conn;
+	f_init();
+	f_sleep(1.0);
+	vc_conn := f_start_handler(refers(f_TC_hlr_location_cancel_request_unknown_subscriber_update), testcasename(), g_gb[0], 30);
+	vc_conn.done;
+}
+
+
+
 control {
 	execute( TC_attach() );
 	execute( TC_attach_mnc3() );
@@ -1294,6 +1341,8 @@
 	execute( TC_attach_accept_all() );
 	execute( TC_attach_closed() );
 	execute( TC_hlr_location_cancel_request_withdraw(), 5.0 );
+	execute( TC_hlr_location_cancel_request_unknown_subscriber_withdraw(), 5.0 );
+	execute( TC_hlr_location_cancel_request_unknown_subscriber_update(), 5.0 );
 	execute( TC_rau_unknown() );
 	execute( TC_attach_rau() );
 	execute( TC_detach_unknown_nopoweroff() );