bsc: verify new CTRL 'rf_states' and 'bts.N.rf_states'

Related: SYS#5542
Depends: I14fa2678fc8f2c11a879c5e9615ac552782c5b7e (osmo-bsc)
Change-Id: I01e6f391a5e71b0606c42be9b57f8a1687d59bcb
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index cbe6bad..965a448 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -2850,6 +2850,31 @@
 	f_ctrl_get_exp(IPA_CTRL, "stat_item.last.bsc.0.num_trx:rsl_connected", int2str(nr_bts));
 	f_ctrl_get_exp(IPA_CTRL, "stat_item.last.bsc.0.num_trx:total", int2str(NUM_BTS_CFG));
 
+	/* Verify rf_states exposed on CTRL interface */
+	var charstring expect_net_rf_states := "";
+	for (var integer i := 0; i < NUM_BTS_CFG; i := i + 1) {
+		var charstring expect_bts_rf_states := int2str(i) & ",0,";
+		if (i < NUM_BTS) {
+			/* In these tests, OML for the first NUM_BTS are always connected via osmo-bts-omldummy */
+			expect_bts_rf_states := expect_bts_rf_states & "operational,unlocked,";
+		} else {
+			/* For remaining i < NUM_BTS_CFG, OML is not connected, i.e. inoperational */
+			expect_bts_rf_states := expect_bts_rf_states & "inoperational,locked,";
+		}
+		/* The RF policy is still global in osmo-bsc, i.e. always "on" */
+		expect_bts_rf_states := expect_bts_rf_states & "on,";
+		if (i < nr_bts) {
+			/* For BTS where RSL is connected, the RSL state will be "up" */
+			expect_bts_rf_states := expect_bts_rf_states & "rsl-up;";
+		} else {
+			expect_bts_rf_states := expect_bts_rf_states & "rsl-down;";
+		}
+
+		f_ctrl_get_exp(IPA_CTRL, "bts." & int2str(i) & ".rf_states", expect_bts_rf_states);
+		expect_net_rf_states := expect_net_rf_states & expect_bts_rf_states;
+	}
+	f_ctrl_get_exp(IPA_CTRL, "rf_states", expect_net_rf_states);
+
 	f_shutdown_helper();
 }