BSC: add a test case for BCCH carrier power reduction mode

Change-Id: I084f7736cd7d09b68ed49f8ba52a14de928d4c01
Depends: I765d5e38cb0746e0458773abf3717ee9bf1cb7d1
Related: SYS#4919
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 5f58a9e..6b079a6 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -6921,6 +6921,32 @@
 	f_shutdown_helper();
 }
 
+/* Verify activation and deactivation of the BCCH carrier power reduction mode */
+testcase TC_c0_power_red_mode() runs on test_CT {
+	f_init(1);
+
+	for (var integer red := 6; red >= 0; red := red - 2) {
+		/* Configure BCCH carrier power reduction mode via the VTY */
+		f_vty_transceive(BSCVTY, "bts 0 c0-power-reduction " & int2str(red));
+
+		/* Expect Osmocom specific BS Power Control message on the RSL */
+		var template RSL_Message tr_rsl_pdu := tr_RSL_BS_PWR_CTRL(
+			chan_nr := t_RslChanNr_BCCH(0),
+			bs_power := tr_RSL_IE_BS_Power(red / 2));
+		tr_rsl_pdu.msg_disc := tr_RSL_MsgDisc(RSL_MDISC_CCHAN, false);
+		var RSL_Message unused := f_exp_ipa_rx(0, tr_rsl_pdu);
+
+		/* Additionally verify the applied value over the CTRL interface */
+		var CtrlValue cred := f_ctrl_get_bts(IPA_CTRL, 0, "c0-power-reduction");
+		if (cred != int2str(red)) {
+			setverdict(fail, "Unexpected BCCH carrier power reduction value ",
+					 cred, " (expected ", red, ")");
+		}
+	}
+
+	f_shutdown_helper();
+}
+
 /***********************************************************************
  * MSC Pooling
  ***********************************************************************/
@@ -9341,6 +9367,7 @@
 
 	/* Power control related */
 	execute( TC_assignment_verify_ms_power_params_ie() );
+	execute( TC_c0_power_red_mode() );
 
 	/* MSC pooling */
 	/* FIXME: in SCCPlite, indicating how many MSCs should be connected does currently not work. Since