Bug #4800
closedSI2quater parsing error in BTS_Tests.ttcn
100%
Description
21:38:37.344963 bts mtc BTS_Tests.ttcn:3972 Message with id 8 was extracted from the queue of L1CTL. 21:38:37.345042 bts mtc GSM_SystemInformation.ttcn:270 dec_SystemInformationSafeBT(): Stream before decoding: '050607A8A0364AA698D72FF424FEEE0506D5E7FFF02043'O 21:38:37.345840 bts mtc GSM_SystemInformation.ttcn:270 Warning: While RAW-decoding type '@GSM_SystemInformation.SystemInformation': There is not enough bits in the buffer to decode type @GSM_RestOctets.UTRAN_GPRSMeasParamsDescOpt.presence. 21:38:37.345977 bts mtc GSM_SystemInformation.ttcn:270 Warning: While RAW-decoding type '@GSM_SystemInformation.SystemInformation': There is not enough bits in the buffer to decode type @GSM_RestOctets.SI2quaterAdditions.rel5_presence. 21:38:37.346111 bts mtc GSM_SystemInformation.ttcn:270 dec_SystemInformationSafeBT(): Decoded @GSM_SystemInformation.SystemInformation: { header := { l2_plen : = { l2_plen := 1, zero_one := '01'B }, skip_indicator := 0, rr_protocol_discriminator := 6, message_type := SYSTEM_INFORMATION_TYPE_2quater (7) }, payload := { si2quater := { rest_octets := { ba_ind := '1'B, ba_3g_ind := '0'B, mp_change_mark := '1'B, si2quater_index := 4, si2quater_count := 5, meas_params_desc := { p resence := '0'B, desc := omit }, gprs := { rt_diff_desc := { presence := '0'B, desc := omit }, bsic_desc := { presence := '0'B, desc := omit }, rep_prio_desc : = { presence := '0'B, desc := omit }, meas_params_desc := { presence := '0'B, desc := omit } }, nc_meas_params := { presence := '0'B, params := omit }, ext_inf o := { presence := '0'B, info := omit }, utran_neigh_desc := { presence := '1'B, desc := omit }, utran_meas_params_desc := { presence := '1'B, desc := '0100001 1001000001111000011111111111001111101010100000110000001011110111011111110001001001111010000101111110101111001100010100110010010100110'B }, utran_gprs_meas_para ms_desc := { presence := ''B, desc := omit }, rel_additions := { rel5_presence := ''B, rel5 := omit } } } } } 21:38:37.346499 bts mtc GSM_SystemInformation.ttcn:271 Failed to decode (RR) System Information: '050607A8A0364AA698D72FF424FEEE0506D5E7FFF02043'O 21:38:37.346791 bts mtc BTS_Tests.ttcn:3975 Ignoring non-RR or invalid SI { header := { msg_type := L1CTL_DATA_IND (3), flags := { padding := '0000000'B, f_don e := false }, padding := '0000'O }, dl_info := { chan_nr := { u := { ch0 := RSL_CHAN_NR_BCCH (16) }, tn := 0 }, link_id := { c := FACCH_SDCCH (0), na := false, prio := SAPI0_PRIO_NORMAL (0), sapi := 0 }, arfcn := { pcs := false, arfcn := 871 }, frame_nr := 206, rx_level := 0, snr := 0, num_biterr := 0, fire_crc := 0 }, payload := { data_ind := { payload := '050607A8A0364AA698D72FF424FEEE0506D5E7FFF02043'O } } }
I guess either the SI2quater binary the test is feeding to the BTS via RSL is incorrect, or the decoder has a bug. Either way, the SI2quater related tests fail, which is not good.
Related issues
Updated by fixeria over 3 years ago
- Related to Bug #4662: ttcn3-bts-test: both TC_si_sched_13_2bis_2ter_2quater and TC_si_sched_2quater are broken added
Updated by fixeria over 3 years ago
There is not enough bits in the buffer to decode type @GSM_RestOctets.UTRAN_GPRSMeasParamsDescOpt.presence.
AFAIR, the UTRAN part of the Rest Octets is incomplete because the specs. define a very tricky encoding, that was impossible to describe using TITAN's RAW codec. I'll have a closer look soon.
Updated by laforge over 3 years ago
On Sun, Oct 11, 2020 at 08:21:04PM +0000, fixeria [REDMINE] wrote:
AFAIR, the UTRAN part of the Rest Octets is incomplete because the specs. define a very tricky encoding, that was impossible to describe using TITAN's RAW codec. I'll have a closer look soon.
well, then we simply don't decode that part and leave some bitstring at the end of our definition. This way, the decoder will not fail, and the testcase then have to perform binary matching of that bitstring.
Updated by fixeria over 3 years ago
- Status changed from New to Feedback
- % Done changed from 0 to 100
well, then we simply don't decode that part and leave some bitstring at the end of our definition.
This is exactly what we do in our Rest Octets definitions: all unimplemented IEs have a flexible bitstring at the end. However, this does not help in situations where an incomplete record definition is a repeated IE (CSN.1 recursion): the TITAN's RAW decoder never finds the terminating bit and throws an exception when the last bit is reached.
This way, the decoder will not fail, and the testcase then have to perform binary matching of that bitstring.
I found a simpler solution: use different SI2quater message samples containing E-UTRAN Parameters Description instead. These test cases are not supposed to verify parsing of the SI messages, they check the scheduling. While the E-UTRAN Parameters is exactly what our SI2quater Rest Octets definitions cover the most.
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20883 BTS_Tests: fix both TC_si_sched[_13_2bis_2ter]_2quater
This change makes both test cases pass on my machine.