Project

General

Profile

Actions

Bug #3928

open

Missing PCU_Tests.ttcn for various timers / time-outs

Added by laforge almost 5 years ago. Updated over 2 years ago.

Status:
Stalled
Priority:
High
Assignee:
Target version:
-
Start date:
04/15/2019
Due date:
% Done:

70%

Spec Reference:
Tags:

Description

We should have automatically-executed tests that test the various RLC/MAC related timers and timeouts


Checklist

  • T3172
  • T3169
  • T3191
  • T3193
  • T3195
  • T3197
  • T3199
  • T3227
  • T3229
  • T3237
  • T3249
  • N3101
  • N3103
  • N3105
  • N3107
  • N3109
  • T3190
  • X2000
  • X2001
  • X2002
  • X2030
  • X2031

Related issues

Related to OsmoPCU - Bug #5033: N3101 potentially being updated only during RBBP poll but not during USF pollResolvedpespin02/17/2021

Actions
Actions #1

Updated by pespin over 4 years ago

  • Status changed from New to In Progress
  • Assignee changed from lynxis to pespin
  • % Done changed from 0 to 50

Added first TTCN3 test for t3169:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15676 pcu: Introduce test TC_t3169

Actions #2

Updated by pespin over 4 years ago

Actions #3

Updated by pespin about 4 years ago

We also have test for T3193 and other tests implicitly testing other timers too.

Actions #4

Updated by fixeria about 4 years ago

I think there must be a list of all timers to be covered by TTCN-3 test cases.

% Done changed from 0 to 50

... otherwise it looks like we only have two timers in OsmoPCU.

Actions #5

Updated by pespin about 3 years ago

  • Checklist item T3169 added
  • Checklist item T3191 added
  • Checklist item T3193 added
  • Checklist item T3195 added
  • Checklist item T3197 added
  • Checklist item T3199 added
  • Checklist item T3227 added
  • Checklist item T3229 added
  • Checklist item T3237 added
  • Checklist item T3249 added
  • Checklist item N3101 added
  • Checklist item N3103 added
  • Checklist item N3105 added
  • Checklist item N3107 added
  • Checklist item N3109 added

References: TS 44.060
"13.2 Timers on the network side"
"13.4 Counters on the Network side"

Actions #6

Updated by pespin about 3 years ago

  • Checklist item T3169 set to Done
  • Checklist item T3191 set to Done
  • Checklist item T3193 set to Done
  • Checklist item T3195 set to Done
  • Checklist item N3101 set to Done
  • Checklist item N3103 set to Done
  • Checklist item N3105 set to Done
Actions #7

Updated by pespin almost 3 years ago

  • Related to Bug #5033: N3101 potentially being updated only during RBBP poll but not during USF poll added
Actions #8

Updated by pespin almost 3 years ago

I added a test for T3142 and fixed the value from BTS not being passed (value encoded was hadcoded):
https://gerrit.osmocom.org/c/osmo-pcu/+/23905 Make use of T3142 received from BTS
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/23904 f_TC_egprs_pkt_chan_req_reject: Validate WaitIndication in ImmAssRej

Following timers seem not applicable as per current features:
  • T3197: DTM CS release
  • N3109, T3199: MBMS
  • T3227, T3229, T3249: EC-GSM-IoT
  • T3237: EC TBF
  • N3107: Iu mode

Still Need to check:

    { .T=1,     .default_val=30,  .unit=OSMO_TDEF_S,  .desc="BSSGP (un)blocking procedures timer (s)",  .val=0 },
    { .T=2,     .default_val=30,  .unit=OSMO_TDEF_S,  .desc="BSSGP reset procedure timer (s)",          .val=0 },
    { .T=3190,  .default_val=5,   .unit=OSMO_TDEF_S,  .desc="Return to packet idle mode after Packet DL Assignment on CCCH (s)", .val=0},
    { .T=-2000, .default_val=2,   .unit=OSMO_TDEF_MS, .desc="Tbf reject for PRR timer (ms)",            .val=0 },
    { .T=-2001, .default_val=2,   .unit=OSMO_TDEF_S,  .desc="PACCH assignment timer (s)",               .val=0 },
    { .T=-2002, .default_val=200, .unit=OSMO_TDEF_MS, .desc="Waiting after IMM.ASS confirm timer (ms)", .val=0 },
    { .T=-2030, .default_val=60,  .unit=OSMO_TDEF_S,  .desc="Time to keep an idle MS object alive (s)", .val=0 }, /* slightly above T3314 (default 44s, 24.008, 11.2.2) */
    { .T=-2031, .default_val=2000, .unit=OSMO_TDEF_MS, .desc="Time to keep an idle DL TBF alive (ms)",  .val=0 },
    { .T=0, .default_val=0, .unit=OSMO_TDEF_S, .desc=NULL, .val=0 } /* empty item at the end */

Some of those above (non-spec) may not be needed anymore, since we drop the tbf through N3101/N3103 correctly nowadays.

Actions #9

Updated by pespin almost 3 years ago

  • Checklist item T3197 set to Done
  • Checklist item T3199 set to Done
  • Checklist item T3227 set to Done
  • Checklist item T3229 set to Done
  • Checklist item T3237 set to Done
  • Checklist item T3249 set to Done
  • Checklist item N3107 set to Done
  • Checklist item N3109 set to Done
Actions #10

Updated by pespin almost 3 years ago

  • Checklist item T3190 added
  • Checklist item X2000 added
  • Checklist item X2001 added
  • Checklist item X2002 added
  • Checklist item X2030 added
  • Checklist item X2031 added

I don't see an easy/good way to trigger and test T3190 and/or X2031 (Idle TBF).
They are used to increase the priority of a given TBF if some time has passed since last sent DL data (to avoid MS expiring T3190 and releasing the TBF).
IIUC that should only be an issue if we'd had an incredible amount of DL TBFs and we used really small values of T3190/X2031. Not sure if it's worth spending time on those, T3190 is anyway defined/set by MS itself.

    unsigned long msecs_t3190 = osmo_tdef_get(the_pcu->T_defs, 3190, OSMO_TDEF_MS, -1);
    unsigned long dl_tbf_idle_msec = osmo_tdef_get(the_pcu->T_defs, -2031, OSMO_TDEF_MS, -1);
    int age_thresh1 = msecs_to_frames(200);
    int age_thresh2 = msecs_to_frames(OSMO_MIN(msecs_t3190/2, dl_tbf_idle_msec));

    if (tbf->is_control_ts(ts) && tbf->need_control_ts())
        return DL_PRIO_CONTROL;

    if (tbf->is_control_ts(ts) && age > age_thresh2 && age_thresh2 > 0)
        return DL_PRIO_HIGH_AGE;

    if ((tbf->state_is(GPRS_RLCMAC_FLOW) && tbf->have_data()) || w->resend_needed() >= 0)
        return DL_PRIO_NEW_DATA;

    if (tbf->is_control_ts(ts) && age > age_thresh1 && tbf->keep_open(fn))
        return DL_PRIO_LOW_AGE;

Actions #11

Updated by pespin over 2 years ago

  • Checklist item X2002 set to Done
  • Status changed from In Progress to Stalled
  • % Done changed from 50 to 70

X2002 is tested in lots of different places since it's used in order to know when to expect the first DL block.

It should be easier to understand and add tests for remaining timers after the big refactoring towards osmo_fsm in #2709.

Marking as Stalled since I didn't work on this ticket for a while and I won't be able to work on this for a few weeks.

Actions #12

Updated by pespin over 2 years ago

  • Checklist item T3190 set to Done
  • Checklist item X2031 set to Done

T3910 and X2031 only control tbf priority during tbf selection by the schedulder. Hence it's difficult and not practial to test in current ttcn3 infrastructure. For those having some sched unit tests would be far better. We can implement those unit tests in the future whenever there's a need to improve the scheduler. There's far higher prio stuff to do for osmo-pcu right now anyway.

Actions #13

Updated by pespin over 2 years ago

  • Checklist item T3172 added
Actions #14

Updated by pespin over 2 years ago

  • Checklist item T3172 set to Done

T3172 is validated here:
https://gerrit.osmocom.org/c/osmo-pcu/+/26255 Move T3172 T_defs_bts->T_defs_pcu to have it configurable in VTY
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/26256 pcu: Introduce test TC_t3172_*

Actions

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)