diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2021-05-11 17:21:30 +0200 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2021-05-28 17:22:59 +0000 |
commit | 69def1f97e427fa65d242f21110f01cb5d0a2818 (patch) | |
tree | 3ba7e009ec003962160b718685599151c4d46768 | |
parent | 651fda903baa3636694c1b3db2bd44cbc6f96e05 (diff) |
hodec 2: do intra-cell congestion resolution by Assignment
So far we do all channel reassignments by Handover Command. Since
osmo-bsc now supports rassignment of ongoing voice calls, do intra-cell
congestion resolution by Assignment Command.
In effect, add support for expecting an Assignment Command in
handover_test, and expect assignments instead of handovers for
intra-cell congestion resolution test cases.
Related: SYS#5330 OS#3277
Change-Id: Id56a890106b93fcee67ac9401b890e7b63bba421
16 files changed, 172 insertions, 50 deletions
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h index 58ec1243c..348735e64 100644 --- a/include/osmocom/bsc/gsm_data.h +++ b/include/osmocom/bsc/gsm_data.h @@ -130,6 +130,7 @@ struct channel_mode_and_rate { enum assign_for { ASSIGN_FOR_NONE, ASSIGN_FOR_BSSMAP_REQ, + ASSIGN_FOR_CONGESTION_RESOLUTION, }; extern const struct value_string assign_for_names[]; diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c index 09fb64f28..0c8550333 100644 --- a/src/osmo-bsc/gsm_data.c +++ b/src/osmo-bsc/gsm_data.c @@ -942,6 +942,7 @@ const struct value_string lchan_modify_for_names[] = { const struct value_string assign_for_names[] = { OSMO_VALUE_STRING(ASSIGN_FOR_NONE), OSMO_VALUE_STRING(ASSIGN_FOR_BSSMAP_REQ), + OSMO_VALUE_STRING(ASSIGN_FOR_CONGESTION_RESOLUTION), {} }; diff --git a/src/osmo-bsc/handover_decision_2.c b/src/osmo-bsc/handover_decision_2.c index 5b7d4b16c..84ddfa444 100644 --- a/src/osmo-bsc/handover_decision_2.c +++ b/src/osmo-bsc/handover_decision_2.c @@ -29,6 +29,7 @@ #include <osmocom/bsc/debug.h> #include <osmocom/bsc/gsm_data.h> +#include <osmocom/bsc/assignment_fsm.h> #include <osmocom/bsc/handover_fsm.h> #include <osmocom/bsc/handover_decision.h> #include <osmocom/bsc/handover_decision_2.h> @@ -812,7 +813,6 @@ static void check_requirements_remote_bss(struct ho_candidate *c) /* Trigger handover or assignment depending on the target BTS */ static int trigger_local_ho_or_as(struct ho_candidate *c, uint8_t requirements) { - struct handover_out_req req; int afs_bias = 0; bool full_rate = false; @@ -868,23 +868,25 @@ static int trigger_local_ho_or_as(struct ho_candidate *c, uint8_t requirements) } /* trigger handover or assignment */ - if (c->current.bts == c->target.bts) + if (c->current.bts == c->target.bts) { LOGPHOLCHAN(c->current.lchan, LOGL_NOTICE, "Triggering assignment to %s, due to %s\n", full_rate ? "TCH/F" : "TCH/H", ho_reason_name(global_ho_reason)); - else + reassignment_request_to_chan_type(ASSIGN_FOR_CONGESTION_RESOLUTION, c->current.lchan, + full_rate? GSM_LCHAN_TCH_F : GSM_LCHAN_TCH_H); + } else { + struct handover_out_req req = { + .from_hodec_id = HODEC2, + .old_lchan = c->current.lchan, + .new_lchan_type = full_rate? GSM_LCHAN_TCH_F : GSM_LCHAN_TCH_H, + }; + bts_cell_ab(&req.target_cell_ab, c->target.bts); LOGPHOLCHANTOBTS(c->current.lchan, c->target.bts, LOGL_INFO, "Triggering handover to %s, due to %s\n", full_rate ? "TCH/F" : "TCH/H", ho_reason_name(global_ho_reason)); - - req = (struct handover_out_req){ - .from_hodec_id = HODEC2, - .old_lchan = c->current.lchan, - .new_lchan_type = full_rate? GSM_LCHAN_TCH_F : GSM_LCHAN_TCH_H, - }; - bts_cell_ab(&req.target_cell_ab, c->target.bts); - handover_request(&req); + handover_request(&req); + } return 0; } diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c index 6f633cdb0..b2eb5ccf2 100644 --- a/tests/handover/handover_test.c +++ b/tests/handover/handover_test.c @@ -35,6 +35,7 @@ #include <osmocom/bsc/bsc_subscriber.h> #include <osmocom/bsc/lchan_select.h> #include <osmocom/bsc/lchan_fsm.h> +#include <osmocom/bsc/assignment_fsm.h> #include <osmocom/bsc/handover_decision.h> #include <osmocom/bsc/system_information.h> #include <osmocom/bsc/handover.h> @@ -372,6 +373,10 @@ void create_conn(struct gsm_lchan *lchan) snprintf(imsi, sizeof(imsi), "%06u", next_imsi); lchan->conn->bsub = bsc_subscr_find_or_create_by_imsi(net->bsc_subscribers, imsi, BSUB_USE_CONN); + /* Set RTP data that the MSC normally would have sent */ + OSMO_STRLCPY_ARRAY(conn->user_plane.msc_assigned_rtp_addr, "1.2.3.4"); + conn->user_plane.msc_assigned_rtp_port = 1234; + /* kick the FSM from INIT through to the ACTIVE state */ osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_MO_COMPL_L3, NULL); osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_A_CONN_CFM, NULL); @@ -535,6 +540,9 @@ static struct gsm_lchan *last_chan_req = NULL; static struct gsm_lchan *new_ho_cmd = NULL; static struct gsm_lchan *last_ho_cmd = NULL; +static struct gsm_lchan *new_as_cmd = NULL; +static struct gsm_lchan *last_as_cmd = NULL; + /* send channel activation ack */ static void send_chan_act_ack(struct gsm_lchan *lchan, int act) { @@ -553,6 +561,44 @@ static void send_chan_act_ack(struct gsm_lchan *lchan, int act) abis_rsl_rcvmsg(msg); } +/* Send RR Assignment Complete for SAPI[0] */ +static void send_assignment_complete(struct gsm_lchan *lchan) +{ + struct msgb *msg = msgb_alloc_headroom(256, 64, "RSL"); + struct abis_rsl_rll_hdr *rh; + uint8_t chan_nr = gsm_lchan2chan_nr(lchan); + uint8_t *buf; + struct gsm48_hdr *gh; + struct gsm48_ho_cpl *hc; + + fprintf(stderr, "- Send RR Assignment Complete for %s\n", gsm_lchan_name(lchan)); + + rh = (struct abis_rsl_rll_hdr *) msgb_put(msg, sizeof(*rh)); + rh->c.msg_discr = ABIS_RSL_MDISC_RLL; + rh->c.msg_type = RSL_MT_DATA_IND; + rh->ie_chan = RSL_IE_CHAN_NR; + rh->chan_nr = chan_nr; + rh->ie_link_id = RSL_IE_LINK_IDENT; + rh->link_id = 0x00; + + buf = msgb_put(msg, 3); + buf[0] = RSL_IE_L3_INFO; + buf[1] = (sizeof(*gh) + sizeof(*hc)) >> 8; + buf[2] = (sizeof(*gh) + sizeof(*hc)) & 0xff; + + gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh)); + hc = (struct gsm48_ho_cpl *) msgb_put(msg, sizeof(*hc)); + + gh->proto_discr = GSM48_PDISC_RR; + gh->msg_type = GSM48_MT_RR_ASS_COMPL; + + msg->dst = lchan->ts->trx->rsl_link; + msg->l2h = (unsigned char *)rh; + msg->l3h = (unsigned char *)gh; + + abis_rsl_rcvmsg(msg); +} + /* Send RLL Est Ind for SAPI[0] */ static void send_est_ind(struct gsm_lchan *lchan) { @@ -700,14 +746,21 @@ int __wrap_abis_rsl_sendmsg(struct msgb *msg) gh = (struct gsm48_hdr*)msg->l3h; switch (gh->msg_type) { case GSM48_MT_RR_HANDO_CMD: - case GSM48_MT_RR_ASS_CMD: - if (new_ho_cmd) { + if (new_ho_cmd || new_as_cmd) { fprintf(stderr, "Test script is erratic: seen a Handover Command" - " while a previous Handover Command is still unhandled\n"); + " while a previous Assignment or Handover Command is still unhandled\n"); exit(1); } new_ho_cmd = lchan; break; + case GSM48_MT_RR_ASS_CMD: + if (new_ho_cmd || new_as_cmd) { + fprintf(stderr, "Test script is erratic: seen an Assignment Command" + " while a previous Assignment or Handover Command is still unhandled\n"); + exit(1); + } + new_as_cmd = lchan; + break; } break; case RSL_MT_IPAC_CRCX: @@ -1037,22 +1090,40 @@ static void _expect_chan_activ(struct gsm_lchan *lchan) static void _expect_ho_cmd(struct gsm_lchan *lchan) { - fprintf(stderr, "- Expecting Handover/Assignment Command at %s\n", + fprintf(stderr, "- Expecting Handover Command at %s\n", gsm_lchan_name(lchan)); if (!new_ho_cmd) { fprintf(stderr, "Test failed, no Handover Command\n"); exit(1); } - fprintf(stderr, " * Got Handover/Assignment Command at %s\n", gsm_lchan_name(new_ho_cmd)); + fprintf(stderr, " * Got Handover Command at %s\n", gsm_lchan_name(new_ho_cmd)); if (new_ho_cmd != lchan) { - fprintf(stderr, "Test failed, Handover/Assignment Command not on the expected lchan\n"); + fprintf(stderr, "Test failed, Handover Command not on the expected lchan\n"); exit(1); } last_ho_cmd = new_ho_cmd; new_ho_cmd = NULL; } +static void _expect_as_cmd(struct gsm_lchan *lchan) +{ + fprintf(stderr, "- Expecting Assignment Command at %s\n", + gsm_lchan_name(lchan)); + + if (!new_as_cmd) { + fprintf(stderr, "Test failed, no Assignment Command\n"); + exit(1); + } + fprintf(stderr, " * Got Assignment Command at %s\n", gsm_lchan_name(new_as_cmd)); + if (new_as_cmd != lchan) { + fprintf(stderr, "Test failed, Assignment Command not on the expected lchan\n"); + exit(1); + } + last_as_cmd = new_as_cmd; + new_as_cmd = NULL; +} + DEFUN(expect_chan, expect_chan_cmd, "expect-chan " LCHAN_ARGS, "Expect RSL Channel Activation of a specific lchan\n" @@ -1073,6 +1144,16 @@ DEFUN(expect_handover_command, expect_handover_command_cmd, return CMD_SUCCESS; } +DEFUN(expect_assignment_command, expect_assignment_command_cmd, + "expect-as-cmd " LCHAN_ARGS, + "Expect Assignment Command for a given lchan\n" + LCHAN_ARGS_DOC) +{ + VTY_ECHO(); + _expect_as_cmd(parse_lchan_args(argv)); + return CMD_SUCCESS; +} + DEFUN(ho_detection, ho_detection_cmd, "ho-detect", "Send Handover Detection to the most recent HO target lchan\n") @@ -1109,7 +1190,7 @@ DEFUN(expect_ho, expect_ho_cmd, "Expect a handover of a specific lchan to a specific target lchan;" " shorthand for expect-chan, ack-chan, expect-ho, ho-complete.\n" "lchan to handover from\n" LCHAN_ARGS_DOC - "lchan that to handover to\n" LCHAN_ARGS_DOC) + "lchan to handover to\n" LCHAN_ARGS_DOC) { struct gsm_lchan *from = parse_lchan_args(argv); struct gsm_lchan *to = parse_lchan_args(argv+4); @@ -1119,6 +1200,31 @@ DEFUN(expect_ho, expect_ho_cmd, _expect_ho_cmd(from); send_ho_detect(to); send_ho_complete(to, true); + + lchan_release_ack(from); + return CMD_SUCCESS; +} + +DEFUN(expect_as, expect_as_cmd, + "expect-as from " LCHAN_ARGS " to " LCHAN_ARGS, + "Expect an intra-cell re-assignment of a specific lchan to a specific target lchan;" + " shorthand for expect-chan, ack-chan, expect-as, TODO.\n" + "lchan to be re-assigned elsewhere\n" LCHAN_ARGS_DOC + "new lchan to re-assign to\n" LCHAN_ARGS_DOC) +{ + struct gsm_lchan *from = parse_lchan_args(argv); + struct gsm_lchan *to = parse_lchan_args(argv+4); + VTY_ECHO(); + + _expect_chan_activ(to); + if (from->ts->trx->bts != to->ts->trx->bts) { + vty_out(vty, "%% Error: re-assignment only works within the same BTS%s", VTY_NEWLINE); + return CMD_WARNING; + } + _expect_as_cmd(from); + send_assignment_complete(to); + send_est_ind(to); + lchan_release_ack(from); return CMD_SUCCESS; } @@ -1209,9 +1315,11 @@ static void ho_test_vty_init() install_element(CONFIG_NODE, &expect_no_chan_cmd); install_element(CONFIG_NODE, &expect_chan_cmd); install_element(CONFIG_NODE, &expect_handover_command_cmd); + install_element(CONFIG_NODE, &expect_assignment_command_cmd); install_element(CONFIG_NODE, &ho_detection_cmd); install_element(CONFIG_NODE, &ho_complete_cmd); install_element(CONFIG_NODE, &expect_ho_cmd); + install_element(CONFIG_NODE, &expect_as_cmd); install_element(CONFIG_NODE, &ho_failed_cmd); install_element(CONFIG_NODE, &expect_ts_use_cmd); install_element(CONFIG_NODE, &codec_f_cmd); @@ -1330,7 +1438,8 @@ int main(int argc, char **argv) osmo_init_logging2(ctx, &log_info); - log_set_print_filename2(osmo_stderr_target, LOG_FILENAME_NONE); + log_set_print_filename2(osmo_stderr_target, LOG_FILENAME_BASENAME); + log_set_print_filename_pos(osmo_stderr_target, LOG_FILENAME_POS_LINE_END); log_set_print_category(osmo_stderr_target, 1); log_set_print_category_hex(osmo_stderr_target, 0); log_set_print_level(osmo_stderr_target, 1); @@ -1349,6 +1458,7 @@ int main(int argc, char **argv) lchan_fsm_init(); bsc_subscr_conn_fsm_init(); handover_fsm_init(); + assignment_fsm_init(); ho_set_algorithm(bsc_gsmnet->ho, 2); ho_set_ho_active(bsc_gsmnet->ho, true); @@ -1437,3 +1547,12 @@ const char *osmo_mgcpc_ep_ci_name(const struct osmo_mgcpc_ep_ci *ci) { return "fake-ci"; } +const struct mgcp_conn_peer *osmo_mgcpc_ep_ci_get_rtp_info(const struct osmo_mgcpc_ep_ci *ci) +{ + static struct mgcp_conn_peer ret = { + .addr = "1.2.3.4", + .port = 1234, + .endpoint = "fake-endpoint", + }; + return &ret; +} diff --git a/tests/handover/test_amr_tch_f_to_h_congestion_assignment.ho_vty b/tests/handover/test_amr_tch_f_to_h_congestion_assignment.ho_vty index d6515fc6e..84f34ff61 100644 --- a/tests/handover/test_amr_tch_f_to_h_congestion_assignment.ho_vty +++ b/tests/handover/test_amr_tch_f_to_h_congestion_assignment.ho_vty @@ -14,6 +14,5 @@ meas-rep lchan 0 0 5 1 rxlev 34 rxqual 0 ta 0 meas-rep lchan 0 0 6 0 rxlev 20 rxqual 0 ta 0 expect-no-chan congestion-check -expect-ho from lchan 0 0 6 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 6 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F - - - TCH/HH - - - diff --git a/tests/handover/test_amr_tch_f_to_h_congestion_assignment_2.ho_vty b/tests/handover/test_amr_tch_f_to_h_congestion_assignment_2.ho_vty index e7778d0fa..2fa08da17 100644 --- a/tests/handover/test_amr_tch_f_to_h_congestion_assignment_2.ho_vty +++ b/tests/handover/test_amr_tch_f_to_h_congestion_assignment_2.ho_vty @@ -15,10 +15,10 @@ meas-rep lchan 0 0 5 1 rxlev 34 rxqual 0 ta 0 meas-rep lchan 0 0 6 0 rxlev 20 rxqual 0 ta 0 expect-no-chan congestion-check -expect-ho from lchan 0 0 6 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 6 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F - - - TCH/HH - - congestion-check -expect-ho from lchan 0 0 5 0 to lchan 0 0 2 0 +expect-as from lchan 0 0 5 0 to lchan 0 0 2 0 expect-ts-use trx 0 0 states * TCH/F TCH/F - - TCH/-H - - congestion-check expect-no-chan diff --git a/tests/handover/test_amr_tch_f_to_h_congestion_assignment_3.ho_vty b/tests/handover/test_amr_tch_f_to_h_congestion_assignment_3.ho_vty index ffa361489..0dca250d2 100644 --- a/tests/handover/test_amr_tch_f_to_h_congestion_assignment_3.ho_vty +++ b/tests/handover/test_amr_tch_f_to_h_congestion_assignment_3.ho_vty @@ -10,6 +10,6 @@ set-ts-use trx 0 0 states * TCH/F TCH/F - - TCH/H- - - meas-rep lchan 0 0 1 0 rxlev 30 rxqual 0 ta 0 neighbors 30 expect-no-chan congestion-check -expect-ho from lchan 0 0 1 0 to lchan 0 0 5 1 +expect-as from lchan 0 0 1 0 to lchan 0 0 5 1 expect-ts-use trx 0 0 states * - TCH/F - - TCH/HH - - diff --git a/tests/handover/test_amr_tch_h_to_f_congestion.ho_vty b/tests/handover/test_amr_tch_h_to_f_congestion.ho_vty index 4d1194c47..0252d9f23 100644 --- a/tests/handover/test_amr_tch_h_to_f_congestion.ho_vty +++ b/tests/handover/test_amr_tch_h_to_f_congestion.ho_vty @@ -10,5 +10,5 @@ set-ts-use trx 0 0 states * - - - TCH/H- - - * meas-rep lchan 0 0 4 0 rxlev 30 rxqual 0 ta 0 expect-no-chan congestion-check -expect-ho from lchan 0 0 4 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 4 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F - - - - - * diff --git a/tests/handover/test_amr_tch_h_to_f_congestion_two_cells.ho_vty b/tests/handover/test_amr_tch_h_to_f_congestion_two_cells.ho_vty index 7cbcd4b92..fecd06853 100644 --- a/tests/handover/test_amr_tch_h_to_f_congestion_two_cells.ho_vty +++ b/tests/handover/test_amr_tch_h_to_f_congestion_two_cells.ho_vty @@ -12,6 +12,6 @@ set-ts-use trx 1 0 states * - - - TCH/H- - - * meas-rep repeat 10 lchan 1 0 4 0 rxlev 30 rxqual 0 ta 0 neighbors 20 expect-no-chan congestion-check -expect-ho from lchan 1 0 4 0 to lchan 1 0 1 0 +expect-as from lchan 1 0 4 0 to lchan 1 0 1 0 expect-ts-use trx 0 0 states * - - - - - - * expect-ts-use trx 1 0 states * TCH/F - - - - - * diff --git a/tests/handover/test_balance_congestion_tchf_tchh.ho_vty b/tests/handover/test_balance_congestion_tchf_tchh.ho_vty index 62f07bff2..f151b2a41 100644 --- a/tests/handover/test_balance_congestion_tchf_tchh.ho_vty +++ b/tests/handover/test_balance_congestion_tchf_tchh.ho_vty @@ -23,7 +23,7 @@ expect-no-chan set-ts-use trx 0 0 states * TCH/F TCH/F - - TCH/HH TCH/HH TCH/HH meas-rep lchan * * * * rxlev 10 rxqual 0 ta 0 congestion-check -expect-ho from lchan 0 0 5 0 to lchan 0 0 3 0 +expect-as from lchan 0 0 5 0 to lchan 0 0 3 0 # Now similar load percentages, just with different min-free-slots settings for tch/f vs tch/h. @@ -50,4 +50,4 @@ expect-no-chan set-ts-use trx 0 0 states * TCH/F TCH/F - - TCH/HH TCH/HH TCH/H- meas-rep lchan * * * * rxlev 20 rxqual 0 ta 0 congestion-check -expect-ho from lchan 0 0 5 0 to lchan 0 0 3 0 +expect-as from lchan 0 0 5 0 to lchan 0 0 3 0 diff --git a/tests/handover/test_congestion_intra_vs_inter_cell.ho_vty b/tests/handover/test_congestion_intra_vs_inter_cell.ho_vty index d93f56cee..ddf6802f9 100644 --- a/tests/handover/test_congestion_intra_vs_inter_cell.ho_vty +++ b/tests/handover/test_congestion_intra_vs_inter_cell.ho_vty @@ -12,7 +12,7 @@ meas-rep lchan 0 0 6 0 rxlev 30 rxqual 0 ta 0 neighbors 20 expect-no-chan congestion-check -expect-ho from lchan 0 0 6 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 6 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F - - - TCH/H- - * expect-ts-use trx 1 0 states * - - - - - - * @@ -27,7 +27,7 @@ meas-rep lchan 0 0 6 0 rxlev 31 rxqual 0 ta 0 neighbors 20 expect-no-chan congestion-check -expect-ho from lchan 0 0 5 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 5 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F - - - - TCH/H- * expect-ts-use trx 1 0 states * - - - - - - * @@ -42,7 +42,7 @@ meas-rep lchan 0 0 6 0 rxlev 31 rxqual 0 ta 0 neighbors 21 expect-no-chan congestion-check -expect-ho from lchan 0 0 5 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 5 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F - - - - TCH/H- * expect-ts-use trx 1 0 states * - - - - - - * @@ -57,7 +57,7 @@ meas-rep lchan 0 0 6 0 rxlev 31 rxqual 0 ta 0 neighbors 20 expect-no-chan congestion-check -expect-ho from lchan 0 0 5 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 5 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F - - - - TCH/H- * expect-ts-use trx 1 0 states * - - - - - - * @@ -72,7 +72,7 @@ meas-rep lchan 0 0 6 0 rxlev 31 rxqual 0 ta 0 neighbors 31 expect-no-chan congestion-check -expect-ho from lchan 0 0 5 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 5 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F - - - - TCH/H- * expect-ts-use trx 1 0 states * - - - - - - * @@ -87,7 +87,7 @@ meas-rep lchan 0 0 6 0 rxlev 30 rxqual 0 ta 0 neighbors 30 expect-no-chan congestion-check -expect-ho from lchan 0 0 6 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 6 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F - - - TCH/H- - * expect-ts-use trx 1 0 states * - - - - - - * diff --git a/tests/handover/test_disabled_ho_and_as.ho_vty b/tests/handover/test_disabled_ho_and_as.ho_vty index ffd031147..586c3a70d 100644 --- a/tests/handover/test_disabled_ho_and_as.ho_vty +++ b/tests/handover/test_disabled_ho_and_as.ho_vty @@ -19,7 +19,7 @@ network bts 0 handover2 assignment 1 meas-rep lchan 0 0 5 0 rxlev 0 rxqual 0 ta 0 neighbors 30 -expect-ho from lchan 0 0 5 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 5 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F - - - - - - network bts 0 diff --git a/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty b/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty index 85b00e87d..6990132ee 100644 --- a/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty +++ b/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment.ho_vty @@ -22,11 +22,11 @@ meas-rep lchan 0 0 5 0 rxlev 40 rxqual 0 ta 0 neighbors 30 expect-ts-use trx 0 0 states * TCH/F TCH/F TCH/F TCH/F TCH/F pdch * congestion-check -expect-ho from lchan 0 0 5 0 to lchan 0 0 6 0 +expect-as from lchan 0 0 5 0 to lchan 0 0 6 0 expect-ts-use trx 0 0 states * TCH/F TCH/F TCH/F TCH/F pdch TCH/H- * congestion-check -expect-ho from lchan 0 0 4 0 to lchan 0 0 6 1 +expect-as from lchan 0 0 4 0 to lchan 0 0 6 1 expect-ts-use trx 0 0 states * TCH/F TCH/F TCH/F pdch pdch TCH/HH * congestion-check @@ -37,11 +37,11 @@ meas-rep lchan 0 0 4 0 rxlev 40 rxqual 0 ta 0 neighbors 30 expect-ts-use trx 0 0 states * TCH/F TCH/F TCH/F TCH/F pdch TCH/HH * congestion-check -expect-ho from lchan 0 0 4 0 to lchan 0 0 5 0 +expect-as from lchan 0 0 4 0 to lchan 0 0 5 0 expect-ts-use trx 0 0 states * TCH/F TCH/F TCH/F pdch TCH/H- TCH/HH * congestion-check -expect-ho from lchan 0 0 1 0 to lchan 0 0 5 1 +expect-as from lchan 0 0 1 0 to lchan 0 0 5 1 expect-ts-use trx 0 0 states * - TCH/F TCH/F pdch TCH/HH TCH/HH * congestion-check @@ -52,11 +52,11 @@ meas-rep lchan 0 0 1 0 rxlev 40 rxqual 0 ta 0 neighbors 30 expect-ts-use trx 0 0 states * TCH/F TCH/F TCH/F pdch TCH/HH TCH/HH * congestion-check -expect-ho from lchan 0 0 1 0 to lchan 0 0 4 0 +expect-as from lchan 0 0 1 0 to lchan 0 0 4 0 expect-ts-use trx 0 0 states * - TCH/F TCH/F TCH/H- TCH/HH TCH/HH * congestion-check -expect-ho from lchan 0 0 2 0 to lchan 0 0 4 1 +expect-as from lchan 0 0 2 0 to lchan 0 0 4 1 expect-ts-use trx 0 0 states * - - TCH/F TCH/HH TCH/HH TCH/HH * congestion-check diff --git a/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment_2.ho_vty b/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment_2.ho_vty index a7984572d..08bc151ec 100644 --- a/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment_2.ho_vty +++ b/tests/handover/test_dyn_ts_amr_tch_f_to_h_congestion_assignment_2.ho_vty @@ -14,14 +14,14 @@ set-ts-use trx 0 0 states * TCH/F - - - * * * # (there must be at least one measurement report on each lchan for congestion check to work) meas-rep lchan * * * * rxlev 40 rxqual 0 ta 0 neighbors 30 congestion-check -expect-ho from lchan 0 0 1 0 to lchan 0 0 4 0 +expect-as from lchan 0 0 1 0 to lchan 0 0 4 0 expect-ts-use trx 0 0 states * pdch - - TCH/H- * * * # Again with one more TCH/H occupied, there will still be two free TCH/H after HO on the dyn TS set-ts-use trx 0 0 states * TCH/F - - TCH/H- * * * meas-rep lchan * * * * rxlev 40 rxqual 0 ta 0 neighbors 30 congestion-check -expect-ho from lchan 0 0 1 0 to lchan 0 0 4 1 +expect-as from lchan 0 0 1 0 to lchan 0 0 4 1 expect-ts-use trx 0 0 states * pdch - - TCH/HH * * * # Again, with the target being a dyn TS @@ -36,12 +36,12 @@ network set-ts-use trx 1 0 states * TCH/F TCH/F - pdch * * * meas-rep lchan 1 * * * rxlev 40 rxqual 0 ta 0 neighbors 30 congestion-check -expect-ho from lchan 1 0 1 0 to lchan 1 0 4 0 +expect-as from lchan 1 0 1 0 to lchan 1 0 4 0 expect-ts-use trx 1 0 states * pdch TCH/F - TCH/H- * * * # Again with one more TCH/H occupied, there will still be two free TCH/H after HO on the dyn TS set-ts-use trx 1 0 states * TCH/F TCH/F - TCH/H- * * * meas-rep lchan 1 * * * rxlev 40 rxqual 0 ta 0 neighbors 30 congestion-check -expect-ho from lchan 1 0 1 0 to lchan 1 0 4 1 +expect-as from lchan 1 0 1 0 to lchan 1 0 4 1 expect-ts-use trx 1 0 states * pdch TCH/F - TCH/HH * * * diff --git a/tests/handover/test_dyn_ts_amr_tch_h_to_f_congestion_assignment_2.ho_vty b/tests/handover/test_dyn_ts_amr_tch_h_to_f_congestion_assignment_2.ho_vty index de9595b48..bf1edf22b 100644 --- a/tests/handover/test_dyn_ts_amr_tch_h_to_f_congestion_assignment_2.ho_vty +++ b/tests/handover/test_dyn_ts_amr_tch_h_to_f_congestion_assignment_2.ho_vty @@ -14,14 +14,14 @@ set-ts-use trx 0 0 states * TCH/H- - - - * * * # (there must be at least one measurement report on each lchan for congestion check to work) meas-rep lchan * * * * rxlev 40 rxqual 0 ta 0 neighbors 30 congestion-check -expect-ho from lchan 0 0 1 0 to lchan 0 0 2 0 +expect-as from lchan 0 0 1 0 to lchan 0 0 2 0 expect-ts-use trx 0 0 states * pdch TCH/F - - * * * # Again with one more TCH/F occupied, there will still be two free TCH/F after HO on the dyn TS set-ts-use trx 0 0 states * TCH/H- - - TCH/F * * * meas-rep lchan * * * * rxlev 40 rxqual 0 ta 0 neighbors 30 congestion-check -expect-ho from lchan 0 0 1 0 to lchan 0 0 2 0 +expect-as from lchan 0 0 1 0 to lchan 0 0 2 0 expect-ts-use trx 0 0 states * pdch TCH/F - TCH/F * * * # (TCH/H -> TCH/F onto a dyn TS will always make TCH/H congestion worse, so there is no useful test case left here) diff --git a/tests/handover/test_dyn_ts_favor_moving_half_used_tch_h.ho_vty b/tests/handover/test_dyn_ts_favor_moving_half_used_tch_h.ho_vty index b25cf96a6..6548360e8 100644 --- a/tests/handover/test_dyn_ts_favor_moving_half_used_tch_h.ho_vty +++ b/tests/handover/test_dyn_ts_favor_moving_half_used_tch_h.ho_vty @@ -10,7 +10,7 @@ network set-ts-use trx 0 0 states * - TCH/HH TCH/H- TCH/HH pdch - - meas-rep lchan * * * * rxlev 30 rxqual 0 ta 0 congestion-check -expect-ho from lchan 0 0 3 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 3 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F TCH/HH pdch TCH/HH pdch - - # clear measurements for the next run @@ -24,7 +24,7 @@ meas-rep lchan 0 0 3 0 rxlev 31 rxqual 0 ta 0 meas-rep lchan 0 0 4 0 rxlev 32 rxqual 0 ta 0 meas-rep lchan 0 0 4 1 rxlev 33 rxqual 0 ta 0 congestion-check -expect-ho from lchan 0 0 3 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 3 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F TCH/HH pdch TCH/HH pdch - - # clear measurements for the next run @@ -38,5 +38,5 @@ meas-rep lchan 0 0 3 0 rxlev 33 rxqual 0 ta 0 meas-rep lchan 0 0 4 0 rxlev 32 rxqual 0 ta 0 meas-rep lchan 0 0 4 1 rxlev 31 rxqual 0 ta 0 congestion-check -expect-ho from lchan 0 0 3 0 to lchan 0 0 1 0 +expect-as from lchan 0 0 3 0 to lchan 0 0 1 0 expect-ts-use trx 0 0 states * TCH/F TCH/HH pdch TCH/HH pdch - - |