Commit Graph

867 Commits

Author SHA1 Message Date
Vadim Yanitskiy 27b3801bed library/GSM_RR_Types: add minimalistic AssignmentCommand
Unfortunately, the existing implementation [1] is somewhat
incomplete and unfriendly to build templates on:

  - some fields holding integer numbers defined as BITx,
    so we would have to do bit2int() / int2bit();

  - some bit-map fields defined as octetstrings;

  - some fields are not decoded at all (raw octetstrings).

Let's work this around by defining a minimalistic implementation
of (RR) Assignment Command with all mandatory and some optional
fields.  Reuse some IEs directly from MobileL3_RRM_Types.

[1] titan.ProtocolModules.MobileL3_v13.4.0
    MobileL3_RRM_Types.PDU_RRM_AssignmentCommand_NW_MS

Change-Id: If1a5244a688abed6e6de2bf3f6e19e0e28129ea5
Related: SYS#4868, OS#4545
2020-09-01 14:43:33 +07:00
Neels Hofmeyr 1393d02d0d comment: Osmocom_CTRL: fix example for f_counter_name_vals_list_add()
Change-Id: I2ff77176267058ced3639a42127f0063bed2fd60
2020-08-31 16:40:11 +00:00
Vadim Yanitskiy e02dbcce9f library/RSL_Types: add missing Channel Identification IE
Change-Id: I4698fd15a14ee55aa4004d80e65912531f78cf06
2020-08-31 15:05:57 +00:00
Vadim Yanitskiy c3156ed104 library/GSM_RR_Types: add receive templates tr_ChanDesc{H0,H1}
Change-Id: I1ff98c97f2670e47be5e03f3540a4e2ec8e4c373
2020-08-31 15:05:57 +00:00
Vadim Yanitskiy 7d6eef3a72 library/GSM_RR_Types: restrict Mobile Allocation length
Change-Id: I8333900949c0f39dc1cb777904e207ed1e212440
2020-08-31 15:05:57 +00:00
Vadim Yanitskiy 27057e0e23 library/Osmocom_Types: fix f_rnd_ra_cs(): ensure non-emergency RA
Change-Id: Idbb2a2c7c2024adea5ff5ee639aeca6eab8ebb3b
2020-08-31 15:05:57 +00:00
Vadim Yanitskiy 146efe6391 library/Osmocom_Types: fix: '10111111'B is a valid emergency RA
Most likely, the second part of the condition was copy-pasted
from ra_is_ps(), where the specs. require that at least one
of the three LSB's shall be zero.  This requirement does not
apply to emergency RA values in range '101xxxxx'B.

Change-Id: I4c923682edfeee9c6bf3aeeeb67438809a54109f
2020-08-31 15:05:57 +00:00
Harald Welte a803b72488 library: Add BSSLAP_LE_{CodecPort,Emulation}
Those two modules are analogous to BSSAP/BSSMAP CodecPort and Emulation,
but for the Lb interface (BSC-SMLC) instead of the A interface.

Change-Id: I92fd91056731abb8d3c01560f80c01c6a48a6fc9
2020-08-30 16:07:00 +00:00
Harald Welte f7c2b20741 TTCN-3 definitions for BSSMAP-LE and BSSLAP protocols
Both are part of GSM LCS and are spoken between BSC and SMLC

Change-Id: If31830be2c8e1b624579f6663e74955763db9d0e
2020-08-30 16:07:00 +00:00
Pau Espin c03eb12b58 pcu: Test Downlink UNIT_DATA messages from SGSN containing IMSI IE
osmo-pcu.git 0052051c07af63da98137c9f8e3b3119642eb587 introduced a bug
(fixed in 1d68cdff928f32941aff36c70e4543203c283d15) where no MS could
GMM attach to the network, but no test showed the issue.
This couple test verifies both correct behavior and also ensures wrong
IMSI is detected and reported.

Related: OS#4729
Change-Id: I5072d80b7ed9945a6083cdf3254efb8b8f119c54
2020-08-29 07:56:46 +00:00
Vadim Yanitskiy 4806396589 BSSMAP_Templates: add tr_BSSMAP_IE_Cause and tr_BSSMAP_SAPInReject
Change-Id: Ibf80419df4d198a1aa6f52087bd9356231de65f5
Related: SYS#5047, OS#4728
2020-08-28 18:18:11 +07:00
Vadim Yanitskiy 8352af7502 library/BSSAP_CodecPort: turn conn_id into a template param
Change-Id: I9b9ccee970b3a5bf608f2bdba51b317e35e678c7
2020-08-28 18:17:55 +07:00
Vadim Yanitskiy 6f9f7d2662 library/Osmocom_Types: share RA generation helpers from BTS_Tests
Change-Id: I7c9c3d243b39bbd3d521009d23c1043df729ee10
2020-08-28 05:56:39 +07:00
Vadim Yanitskiy 74e1f6b5d6 library/GSM_SystemInformation: move 'MobileAllocationT' to GSM_RR_Types
Change-Id: I149cf58c4bc1a8e08c69c52eb567706a0de4f9f1
2020-08-28 05:55:58 +07:00
Vadim Yanitskiy 3b464a9812 library/GSM_RR_Types: s/MobileAllocation/MobileAllocationLV/g
Change-Id: Ica803221e885b4746fd42c17cd2828c0ef35a6aa
2020-08-28 05:55:58 +07:00
Vadim Yanitskiy d8051724ff library/PCUIF_Types: fixup: keep PCUIF_InfoV10Trx aligned
Change-Id: I92ba84c5d1f77c86f7871c488965f6345c2dbbe2
Related: SYS#4868, OS#4547
2020-08-22 02:33:26 +07:00
Vadim Yanitskiy 0d59080469 library/PCUIF_Types: fix typo: s/local_pprt/local_port/g
Change-Id: Ic81469107d16c47f02db93a4fe9c35b7825d74b5
2020-08-21 11:59:00 +00:00
Harald Welte bae6be8acc GSM_RR_Types: Fix compiler warning
GSM_RR_Types.ttcn: In TTCN-3 module `GSM_RR_Types':
 GSM_RR_Types.ttcn:957.2-983.2: In template definition `ts_IMM_ASS':
  GSM_RR_Types.ttcn:957.2-983.2: While checking template restriction `value':
   GSM_RR_Types.ttcn:146.14-16: warning: Inadequate restriction on the referenced template parameter `len', this may cause a dynamic test case error at runtime
   GSM_RR_Types.ttcn:145.44-63: note: Referenced template parameter is here

Change-Id: I0d17102294430d23eb683e16d5ac66abe806f2c1
2020-08-21 13:17:59 +02:00
Harald Welte bd98295fcb L3_Templates: Fix compiler warning about missing qualifier
L3_Templates.ttcn: In TTCN-3 module `L3_Templates':
 L3_Templates.ttcn:120.1-125.1: In template definition `tr_MI_IMSI':
  L3_Templates.ttcn:122.25-124.2: In template for record field `oddEvenInd_identity':
   L3_Templates.ttcn:123.11-28: In template for union field `imsi':
    L3_Templates.ttcn:123.23-28: In actual parameter list of function `@L3_Templates.f_tr_MI_IMSI':
     L3_Templates.ttcn:123.24-27: In parameter #1 for `digits':
      L3_Templates.ttcn:123.24-27: warning: Inadequate restriction on the referenced template parameter `imsi', this may cause a dynamic test case error at runtime
      L3_Templates.ttcn:120.37-59: note: Referenced template parameter is here

Change-Id: Ia6979dff7d3c58f8609ebe55de2550446c3f1781
2020-08-21 13:17:58 +02:00
Harald Welte 9bf43cc30d L3_Templates: fix compiler warning
L3_Templates.ttcn:1099.1-1108.1: In template definition `ts_ML3_MO_CC':
  L3_Templates.ttcn:1099.53-1108.1: warning: Field `msgs' is missing from template for record type `@MobileL3_Types.PDU_ML3_MS_NW'

Change-Id: Id131274ae7832846df6c09cbe6763b9e147ef372
2020-08-21 13:17:58 +02:00
Harald Welte 88ee36088c RAN_Emulation: Fix compiler warnings about unreachable code
RAN_Emulation.ttcn: In TTCN-3 module `RAN_Emulation':
 RAN_Emulation.ttcnpp:1294.1-1343.1: In function definition `ExpectedCreateCallback':
  RAN_Emulation.ttcnpp:1309.4-1313.2: In else statement:
   RAN_Emulation.ttcnpp:1312.3-12: warning: Control never reaches this statement
  RAN_Emulation.ttcnpp:1342.2-11: warning: Control never reaches this statement

Change-Id: I4e7cc0a7e6bff5c5e569458548fa70e814bd200c
2020-08-21 13:17:58 +02:00
Harald Welte 09daa2e6cc StatsD_Types: Use 'present' qualifier; use template hierarchy
Change-Id: Ic9207e465bbee77d898d4d710a696656e43eac8d
2020-08-21 11:16:33 +00:00
Harald Welte aecdcec8ca StatsD_Types: Fix compiler warnings about missing record fields
StatsD_Types.ttcn: In TTCN-3 module `StatsD_Types':
 StatsD_Types.ttcn:51.1-55.1: In template definition `tr_StatsDMetric':
  StatsD_Types.ttcn:51.126-55.1: warning: Field `srate' is missing from template for record type `@StatsD_Types.StatsDMetric'
 StatsD_Types.ttcn:57.1-61.1: In template definition `tr_StatsDMetricCounter':
  StatsD_Types.ttcn:57.106-61.1: warning: Field `srate' is missing from template for record type `@StatsD_Types.StatsDMetric'
 StatsD_Types.ttcn:63.1-67.1: In template definition `tr_StatsDMetricGauge':
  StatsD_Types.ttcn:63.104-67.1: warning: Field `srate' is missing from template for record type `@StatsD_Types.StatsDMetric'

Change-Id: I6d3b40dc719b42481dacb5599eb7eeb3be0426b4
2020-08-21 12:39:40 +02:00
Harald Welte b75bbf89c4 RSL_Emulation: Fix compiler warning about dead code
RSL_Emulation.ttcn: In TTCN-3 module `RSL_Emulation':
 RSL_Emulation.ttcn:478.1-713.1: In function definition `main':
  RSL_Emulation.ttcn:500.2-712.2: In while statement:
   RSL_Emulation.ttcn:501.3-711.3: In alt construct:
    RSL_Emulation.ttcn:695.4-28: In function instance:
     RSL_Emulation.ttcn:725.9-744.1: In function definition `f_WaitingQueue_dispatch':
      RSL_Emulation.ttcn:729.2-740.2: In for statement:
       RSL_Emulation.ttcn:732.3-736.3: In if statement:
        RSL_Emulation.ttcn:735.4-8: warning: Control never reaches this statement

Change-Id: I1e080a8543a9f26b45b345e47881b6f6d4c9b362
2020-08-21 12:39:40 +02:00
Harald Welte afd87efcd1 CBSP_Templates: Fix tons of compiler warnings
CBSP_Templates.ttcn:385.1-401.1: In function definition `ts_CBSP_REPLACE_CBS_COMPL':
  CBSP_Templates.ttcn:396.2-398.2: In if statement:
   CBSP_Templates.ttcn:397.3-50: In variable assignment:
    CBSP_Templates.ttcn:397.40-50: In actual parameter list of template `@CBSP_Templates.ts_CbspCellList':
     CBSP_Templates.ttcn:397.41-49: In parameter #1 for `list':
      CBSP_Templates.ttcn:397.41-49: warning: Inadequate restriction on the referenced template parameter `cell_list', this may cause a dynamic test case error at runtime
      CBSP_Templates.ttcn:387.8-68: note: Referenced template parameter is here

Change-Id: I54c21d17ab3235ec37d5f07867d8c6c83d699088
2020-08-21 12:39:40 +02:00
Harald Welte 420c6b0bea BSSMAP_Templates: fix compiler warnings
BSSMAP_Templates.ttcn: In TTCN-3 module `BSSMAP_Templates':
 BSSMAP_Templates.ttcn:181.1-192.1: In template definition `ts_BSSMAP_Reset':
  BSSMAP_Templates.ttcn:181.1-192.1: While checking template restriction `value':
   BSSMAP_Templates.ttcn:188.21-54: warning: Inadequate restriction on the referenced function `f_enc_osmux_support(osmux_enabled)', this may cause a dynamic test case error at runtime
   BSSMAP_Templates.ttcn:174.9-179.1: note: Referenced function is here
 BSSMAP_Templates.ttcn:207.1-217.1: In template definition `ts_BSSMAP_ResetAck':
  BSSMAP_Templates.ttcn:207.1-217.1: While checking template restriction `value':
   BSSMAP_Templates.ttcn:213.21-54: warning: Inadequate restriction on the referenced function `f_enc_osmux_support(osmux_enabled)', this may cause a dynamic test case error at runtime
   BSSMAP_Templates.ttcn:174.9-179.1: note: Referenced function is here

Change-Id: I947e1a6aeb1fe40167eb268906906edd7e857232
2020-08-21 11:55:23 +02:00
Harald Welte cc5e159c61 GSM_Types: Fix compiler warning
GSM_Types.ttcn:45.4-12: warning: Control never reaches this statement

Change-Id: I3572f59f4c2a266e8f549a805c3dffeae0570a8c
2020-08-21 11:55:23 +02:00
Neels Hofmeyr cb11a97aaf bsc CBSP: fix tr_CBSP_KILL_FAIL, no lengthof() on record-of with '*'
Keep a local next_idx so that lengthof() doesn't fail after adding a '*' entry.
Fixes this error in BSC_Tests_CBSP.TC_cbsp_write_then_kill:

 Dynamic test case error: Performing lengthof() operation on a template of type @CBSP_Types.CBSP_IEs with no exact length.

Change-Id: I4d95a8ca311f145fa5ea371b6aed099db771d7b8
2020-08-13 19:31:23 +00:00
Daniel Willmann 742372880b Add parsing and checking of StatsD metrics
Change-Id: Icd1317b5f192d98e6cdc6635788d450501992bf1
Related: SYS#4877
2020-08-13 15:02:15 +00:00
Neels Hofmeyr f793a7e464 comment: Osmocom_Types.ttcn: clarify f_rnd_int() return val
Change-Id: I0841b037d39fcadb75e1c13cf97d22917b68e2aa
2020-08-13 05:36:26 +00:00
Neels Hofmeyr 95a5edc308 bsc: test RR Channel Release cause codes from Clear Command cause codes
Invoke Clear Command with various Cause codes and verify that the RR Channel
Release reflects them.

Depends: I734cc55c501d61bbdadee81a223b26f9df57f959 (osmo-bsc)
Change-Id: Ie6c99f28b610a67f2d59ec00b3541940e882251b
2020-08-12 18:21:24 +00:00
Neels Hofmeyr 0edf4ac242 bsc: test RR Channel Release EARFCNs
Add a DCHAN and release to recently added SI2quater tests (because these tests
already configure various amounts of EARFCNs in osmo-bsc).

Verify that the RR Channel Release for CSFB contains all configured EARFCNs.

In GSM_RR_Types.ttcn, add coding for "Cell selection indicator after release of
all TCH and SDCCH IE".

In f_expect_chan_rel(), add optional arg csfb_expect_cells, and, if present,
decode the RR Channel Release message's L3 part, and in turn the Cell Selection
Indicator Value contained. Match against csfb_expect_cells.

In f_tc_si2quater_n_earfcns(), also compose a list of EARFCNs as found in the
RR Channel Release, and pass to f_expect_chan_rel().

Depends: I59e427e4ebb1c6af99b27a15c40fed82457ac8ab (osmo-bsc)
Change-Id: I882c5e1f70bcc4833fc837a95c900ce291919cc5
2020-08-12 18:21:24 +00:00
Neels Hofmeyr 5c59a8f04a another fixup for "fix mscpool cleanup (fixes LCLS tests)"
During patch grooming of the previous fixup, one patch line went missing, which
breaks the ttcn3-bsc-test-latest completely. Add that change now.

Change-Id: I75295d638072df9f5213a7e74e4a960c009c2865
2020-08-12 11:19:23 +00:00
Neels Hofmeyr 345a15f213 log: for VTY Unknown Command, fix weird log message
In f_vty_wait_for_prompt(), this:

   testcase.stop(fail, "VTY: Unknown Command")

outputs:

   failVTY: Unknown Command

The first stop() argument 'fail' is not actually a test verdict, but gets
rolled into a log output string, becoming "failVTY".

Fix that by simply using the normal pattern of setverdict() followed by
mtc.stop().

Change-Id: Id09986444de02c10b4fba582d454d54568b6e8a2
2020-08-12 01:05:59 +00:00
Neels Hofmeyr e4b0a662ca fixup for "fix mscpool cleanup (fixes LCLS tests)"
For the VTY "Unknown Command" code path, we must actually call 'repeat', to
avoid racey VTY behavior from cruft stuck in the VTY pipe.

The missing 'repeat' caused massive random fallout in the 'latest' builds,
which often hits the 'Unknown Command' code path; fixed by this patch.

Change-Id: Ibd5adb359b3fb302e2c70700d911878aef605ff3
2020-08-12 01:05:48 +00:00
Neels Hofmeyr 2fe5ad171d f_vty_transceive: allow to ignore unknown vty commands
When a new test uses a VTY configuration that may not yet be available in the
'latest' build, it can be useful to ignore the "Unknown VTY Command" error.

To be used by f_init() for multiple MSCs, setting a default 'allow-attach' flag
per MSC implicitly -- such vty config is not yet supported in the latest build.

Change-Id: I284c42e10c0cb282c8410db87959b471867edef6
2020-08-10 20:16:09 +00:00
Vadim Yanitskiy 355604cbcf library/PCUIF_Types: add receive templates for PCUIF_InfoTrxTs
Change-Id: I062079de4440d2c9c0a079cc4cc4328ea0ea37dd
2020-08-09 20:03:38 +07:00
Vadim Yanitskiy 9e1206c791 library/PCUIF_Types: version 10: add frequency hopping parameters
This change introduces new version 10 specific extensions, in
particular: the frequency hopping parameters of each timeslot.
These parameters are used to compose Channel Description IE
in the packet resource assignment messages.

In order to maintain backwards compatibility with version 9 of
the PCUIF, and thus to still be able to run test cases against
the latest release of osmo-pcu, I kept the old parts of the
INFO.ind and gruoped them together with the new records
into union 'PCUIF_InfoTrxs'.

During decoding, the content of this union is resolved by the
TITAN's RAW codec itself, depending on value of the 'version'
field.  During the encoding, it's the responsibility of the
API user to set a proper field of the union.  I implemented
both f_PCUIF_ver_INFO_{Trxs,PDCHMask} helpers for that.

Version 9 is kept as default, so this change can be merged
independently of the actual implementation.  We can bump
it and remove the compatibility glue once the new versions
of both osmo-bts and osmo-pcu are released.

Change-Id: Idf11bc4ba3ff0b00b32f2beab8fd020c67119d05
Related: SYS#4868, OS#4547
2020-08-09 19:58:25 +07:00
Neels Hofmeyr 7944004f28 bsc CBSP: add log context for CBSP port errors
Change-Id: Ifd90e84ee65d0cb03eefc7ae1da2605650daf7ac
2020-07-29 20:03:50 +00:00
Vadim Yanitskiy e2a6fdf304 fixup library/GSM_RR_Types: fix BYTEORDER in MobileAllocation
The following bitstring in TITAN:

   0                 N    // N = NF - 1
  -------------------->
   0001 1011 1110 0100    // '0001101111100100'B

needs to be be encoded as follows 'on the wire':

   N                 0    // N = NF - 1
  <--------------------
   0010 0111 1101 1000    // '0010011111011000'B

so it basically gets inversed => we need to use BYTEORDER(first).

Change-Id: Iea2e3a9a7a0557d1ab5d935877d2161ee0988077
Fixes: I70b1baf01859d0cf3b8cec1aed04d73fc097a9b1
Related: SYS#4868, OS#4547
2020-07-23 04:53:16 +07:00
Vadim Yanitskiy 06c416125e library/RLCMAC_CSN1_Types: fix length field in GprsMobileAllication
- Length of field 'MA_BITMAP' is specified in bits, not bytes;
  - The value range of field MA_LENGTH is 0..63, therefore:
    - value  0 means that field 'MA_BITMAP' is  1 bit long,
    - value  1 means that field 'MA_BITMAP' is  2 bits long,
    - value 63 means that field 'MA_BITMAP' is 64 bits long.

Change-Id: Iec19da18637febfa15bc09175bc51504c721c42f
Related: SYS#4868, OS#4547
2020-07-23 04:50:59 +07:00
Vadim Yanitskiy 9fa1db5572 library/RLCMAC_CSN1_Types: fix byte/bit order in GprsMobileAllication
According to 3GPP TS 44.060, table 12.10a.2, given that the number
of bit positions in MA_BITMAP equals NF, the first bit position
in MA_BITMAP corresponds to ARFCN_INDEX = NF-1, the last position
corresponds to ARFCN_INDEX = 0.

To put differently, the following bitstring in TITAN:

   0                 N    // N = NF - 1
  -------------------->
   0001 1011 1110 0100    // '0001101111100100'B

needs to be be encoded as follows 'on the wire':

   N                 0    // N = NF - 1
  <--------------------
   0010 0111 1101 1000    // '0010011111011000'B

so it basically gets inversed.  Let's add both BYTEORDER and
BITORDER attributes to achieve that.

Change-Id: I8f2c8c7b234605523a4fd518210b45ea3c088ff6
Related: SYS#4868, OS#4547
2020-07-23 04:50:59 +07:00
Vadim Yanitskiy 41b4dd8957 library/RLCMAC_CSN1_Types: fix definition of PacketDlAssignment
- s/PacketDlAssignmentRel1999SubStruct/PktDlAssR99EGPRS/g,
  - fix Additions in Release 1999 (missing spare bit),
  - fix RLC_MODE field (it takes 1 bit, not 2),
  - fix PRESENCE(p0) attribute (defined twice).

Change-Id: I98efe66bf43853b580f38bed36487fa10a53298a
2020-07-22 14:49:41 +07:00
Vadim Yanitskiy fdbfd6eff2 library/RLCMAC_CSN1_Types: fix definition of COMPACTreducedMA
Change-Id: If16359edf5f0a270af3223522b9bf5efb14412e3
2020-07-22 14:48:33 +07:00
Vadim Yanitskiy 4728e09ce8 library/RLCMAC_CSN1_Types: fix definition of ZeroOneGamma
Change-Id: I197f300cdfe22bba1be6341381399420e38d81ad
2020-07-22 14:48:28 +07:00
Vadim Yanitskiy a01a05531c library/Osmocom_Types: add f_rnd_bitstring() and f_pad_bit()
Change-Id: I9be55f6979c8ce1cbf5b2ef317c998ae30488e0e
2020-07-21 16:14:20 +00:00
Vadim Yanitskiy c227ea93ae library/RLCMAC_Templates: cosmetic coding style change
Change-Id: I76931373fe9e1cf0de4263c09e36442bad7c3ce1
2020-07-21 16:14:20 +00:00
Vadim Yanitskiy f3cb4ddc86 library/RLCMAC_Templates: make ts_RLC_UL_CTRL_ACK accept a template
Change-Id: Ia71401b5c0d439eeb0dc58739ef0e68b15d4123f
2020-07-21 16:14:20 +00:00
Vadim Yanitskiy cb33c74383 library/RLCMAC_CSN1_Types: make use of 'LENGTHTO(...)+N' syntax
Thanks to LaF0rge, this syntax is now supported by TITAN.

Change-Id: I16ddc3e9f57dffba3e0f2ea80eeb63be3468da06
Related: SYS#4868, OS#4547
2020-07-21 16:14:20 +00:00
Vadim Yanitskiy c155930c22 library/PCUIF_Types: make PCUIF version configurable
When changing the PCUIF, we have to maintain backwards compatibility
with the release versions of both osmo-pcu and osmo-bts, not only
with the recent master.  In order to achieve that, let's introduce
'mp_pcuif_version', so the PCUIF version can be adjusted.

Change-Id: I3cf7f908e606b91dd2cbddc168827dd074aed052
Related: SYS#4868, OS#4547
2020-07-20 04:32:59 +07:00