bsc: Add TC_classmark to test RR CLASSMARK -> BSSMAP CLASSMARK conversion

Related: OS#2902
Change-Id: Idd86b5505e1a4fee666287680a20dc235970be93
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 8b44a25..b9d61dd 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1404,12 +1404,64 @@
 	vc_conn.done;
 }
 
+/* test if L3 RR CLASSMARK CHANGE is translated to BSSMAP CLASSMARK UPDATE */
+private function f_tc_classmark(charstring id) runs on MSC_ConnHdlr {
+	var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
+	f_create_chan_and_exp(pars);
+	/* we should now have a COMPL_L3 at the MSC */
+	BSSAP.receive(tr_BSSMAP_ComplL3);
+
+	f_rsl_send_l3(ts_RRM_CM_CHG(valueof(ts_CM2)));
+	BSSAP.receive(tr_BSSMAP_ClassmarkUpd(?, omit));
+	setverdict(pass);
+}
+testcase TC_classmark() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	f_init(1, true);
+	f_sleep(1.0);
+	vc_conn := f_start_handler(refers(f_tc_classmark), testcasename());
+	vc_conn.done;
+}
+
+/* unsolicited ASSIGNMENT FAIL (without ASSIGN) from MS shouldn't bring BSC down */
+private function f_tc_unsol_ass_fail(charstring id) runs on MSC_ConnHdlr {
+	var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
+	f_create_chan_and_exp(pars);
+	/* we should now have a COMPL_L3 at the MSC */
+	BSSAP.receive(tr_BSSMAP_ComplL3);
+
+	f_rsl_send_l3(ts_RRM_AssignmentFailure('00'O));
+	timer T := 5.0;
+	T.start;
+	alt {
+	[] BSSAP.receive(tr_BSSMAP_AssignmentFail) {
+		setverdict(fail, "Unexpeted BSSMAP Assignment Failure");
+		}
+	[] BSSAP.receive(tr_BSSMAP_ClearRequest) {
+		setverdict(fail, "Unexpected BSSMAP Clear Requst");
+		}
+	[] T.timeout {
+		setverdict(pass);
+		}
+	}
+}
+
+testcase TC_unsol_ass_fail() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	f_init(1, true);
+	f_sleep(1.0);
+	vc_conn := f_start_handler(refers(f_tc_unsol_ass_fail), testcasename());
+	vc_conn.done;
+}
 
 
 control {
+	/* CTRL interface testing */
 	execute( TC_ctrl_msc_connection_status() );
 	execute( TC_ctrl_msc0_connection_status() );
 	execute( TC_ctrl() );
+
+	/* RSL DCHAN Channel ACtivation / Deactivation */
 	execute( TC_chan_act_noreply() );
 	execute( TC_chan_act_counter() );
 	execute( TC_chan_act_ack_noest() );
@@ -1424,6 +1476,8 @@
 	execute( TC_chan_rel_a_reset() );
 
 	execute( TC_outbound_connect() );
+
+	/* Assignment related */
 	execute( TC_assignment_cic_only() );
 	execute( TC_assignment_csd() );
 	execute( TC_assignment_ctm() );
@@ -1434,11 +1488,13 @@
 	execute( TC_assignment_fr_a5_3() );
 	execute( TC_assignment_fr_a5_4() );
 
+	/* RLL Establish Indication on inactive DCHAN / SAPI */
 	execute( TC_rll_est_ind_inact_lchan() );
 	execute( TC_rll_est_ind_inval_sapi1() );
 	execute( TC_rll_est_ind_inval_sapi3() );
 	execute( TC_rll_est_ind_inval_sacch() );
 
+	/* Paging related tests */
 	execute( TC_paging_imsi_nochan() );
 	execute( TC_paging_tmsi_nochan() );
 	execute( TC_paging_tmsi_any() );
@@ -1460,6 +1516,9 @@
 	execute( TC_paging_imsi_load() );
 
 	execute( TC_rsl_drop_counter() );
+
+	execute( TC_classmark() );
+	execute( TC_unsol_ass_fail() );
 }
 
 }