cbc: Send Write-Replace-Warn-Ind after ACKing the request

This way we can test how does osmo-cbc behave when receiving such
message.

Related: OS#4945
Change-Id: Ifcdcddc7dccb5439126a5fa29bb540669ed25908
diff --git a/cbc/CBC_Tests.ttcn b/cbc/CBC_Tests.ttcn
index 76fc3be..8e7e1c5 100644
--- a/cbc/CBC_Tests.ttcn
+++ b/cbc/CBC_Tests.ttcn
@@ -115,7 +115,9 @@
 		cbc_host := cbc_host,
 		cbc_sbcap_port := cbc_sbcap_port,
 		start_fn := refers(f_MME_ConnHdlr_start_fn_void),
-		exp_cbs_msg := omit
+		exp_cbs_msg := omit,
+		write_replace_warning_ind_cause := omit,
+		bcast_cell_id_list := omit
 	};
 	return pars;
 }
@@ -298,6 +300,12 @@
 
 private function f_mme_create_and_delete() runs on MME_ConnHdlr {
 	f_sbcap_handle_write_replace_warn_req(g_pars.exp_cbs_msg, 0);
+	if (ispresent(g_pars.write_replace_warning_ind_cause) and
+	    ispresent(g_pars.bcast_cell_id_list)) {
+		f_sbcap_tx_write_replace_warn_ind(0, g_pars.exp_cbs_msg,
+						  g_pars.write_replace_warning_ind_cause,
+						  g_pars.bcast_cell_id_list)
+	}
 	f_sbcap_handle_stop_warn_req(0, g_pars.exp_cbs_msg);
 }
 
@@ -411,10 +419,33 @@
 	f_shutdown_helper();
 }
 
+/* Create and delete message with MME available. MME reports
+ * Write-Replace-Warning-Indication and Stop-Warning-Indication to CBC
+ */
+testcase TC_ecbe_create_delete_mme_indication() runs on test_CT {
+	var template (value) CellId_Broadcast_List bcast_cell_id_li;
+	var template (value) CBS_Message msg := t_CBSmsg(48, 16752);
+
+	f_init(num_bsc := 0, num_mme := 1);
+
+	bcast_cell_id_li := {
+		ts_SBCAP_CellId_Broadcast_List_Item(ts_SBCAP_ECGI(f_enc_mcc_mnc('901'H, '70'H), 1234)),
+		ts_SBCAP_CellId_Broadcast_List_Item(ts_SBCAP_ECGI(f_enc_mcc_mnc('901'H, '70'H), 5678))
+	};
+	g_pars_MME[0].start_fn := refers(f_mme_create_and_delete);
+	g_pars_MME[0].exp_cbs_msg := valueof(msg);
+	g_pars_MME[0].write_replace_warning_ind_cause := SBC_AP_Cause_message_accepted;
+	g_pars_MME[0].bcast_cell_id_list := valueof(bcast_cell_id_li);
+	f_start();
+	f_create_and_delete(valueof(msg));
+	f_shutdown_helper();
+}
+
 /* Create and delete message with both BSC and MME available */
 testcase TC_ecbe_create_delete_bsc_and_mme() runs on test_CT {
 	f_init(num_bsc := 1, num_mme := 1);
 	var template (value) BSSMAP_FIELD_CellIdentificationList cell_list_success;
+	var template (value) CellId_Broadcast_List bcast_cell_id_li;
 	var template (value) CBS_Message msg := t_CBSmsg(43, 16752);
 
 	cell_list_success := ts_BSSMAP_CIL_CGI({
@@ -425,8 +456,14 @@
 	g_pars_BSC[0].start_fn := refers(f_bsc_create_and_delete);
 	g_pars_BSC[0].exp_cbs_msg := valueof(msg);
 	g_pars_BSC[0].cell_list_success := valueof(cell_list_success);
+
+	bcast_cell_id_li := {
+		ts_SBCAP_CellId_Broadcast_List_Item(ts_SBCAP_ECGI(f_enc_mcc_mnc('901'H, '70'H), 1234))
+	};
 	g_pars_MME[0].start_fn := refers(f_mme_create_and_delete);
 	g_pars_MME[0].exp_cbs_msg := valueof(msg);
+	g_pars_MME[0].write_replace_warning_ind_cause := SBC_AP_Cause_message_accepted;
+	g_pars_MME[0].bcast_cell_id_list := valueof(bcast_cell_id_li);
 	f_start();
 	f_create_and_delete(valueof(msg));
 	f_shutdown_helper();
@@ -440,6 +477,7 @@
 	execute( TC_ecbe_create_delete_lac() );
 	execute( TC_ecbe_create_delete_ci() );
 	execute( TC_ecbe_create_delete_lai() );
+	execute( TC_ecbe_create_delete_mme_indication() );
 	execute( TC_ecbe_create_delete_bsc_and_mme() );
 }