path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
5 daystests: test encoding of egprs ul ack/nacksHEADmasterAlexander Couzens2-0/+304
Test the encoding with uncompressed and compressed acknowledgements. Change-Id: I35d6b5e312faeb116ddda6b33c550840da1496fe
12 daysRemove undefined param passed to {logging,osmo_stats}_vty_add_cmdsPau Espin Pedrol5-5/+5
Since March 15th 2017, libosmocore API logging_vty_add_cmds() had its parameter removed (c65c5b4ea075ef6cef11fff9442ae0b15c1d6af7). However, definition in C file doesn't contain "(void)", which means number of parameters is undefined and thus compiler doesn't complain. Let's remove parameters from all callers before enforcing "(void)" on it. API osmo_stats_vty_add_cmds never had a param list but has seem problem (no "void"), so some users decided to pass a parameter to it. Related: OS#4138 Change-Id: Ic1ac815eafab49577ff883a5d700ecca5936d216
2019-06-24decompress_crbb: add length argument for search_runlenAlexander Couzens2-10/+4
search_runlen() must know the exact size in bits when parsing the bits otherwise it read over the buffer. Fixes testcase #7 which was wrongly decoded. Change-Id: Ie34a0651e7e7efea4e9ecff1e3a467588113cf47
2019-06-22tests/BitcompTest: fix wording in log messageAlexander Couzens2-10/+10
The testcase is showing the compressed rbb. Change-Id: Ie7a2b31e305dffb2776698d1bc8e80d6a435c135
2019-06-07gprs_bssgp_pcu: explicit allocate & initialize bssgp_nsi instanceAlexander Couzens2-0/+37
The instance bssgp_nsi is a global instance to be used by all NS related functions. Previous the PCU allocated and initialized the bssgp_nsi instance when (re-)connecting and freeing on disconnect. The problem of the implicit initialisation is gprs_ns_vty_init(bssgp_nsi). All vty init functions must be called before the configuration is read, otherwise a previous vty written configuration is invalid. Furthermore the vty modifications to the `ns` object were lost when the PCU has to reconnect to the SGSN. Fixes: OS#4024 Change-Id: I2aa53ea54e9352577f6280ad7b9d1d9da9f57eaf
2019-04-11Add test for MS mode and (M)CS settingsMax3-0/+86
Right now set_mode() on GprsMs behaves in pretty counter-intuitive way: * it's possible to set current DL MCS higher than max value * EGPRS and EGPRS_GMSK have the same max DL MCS * setting EGPRS* mode drops current/max MCS values to unknown Let's capture this in a unit-test before attempting any further modifications. Change-Id: Ibf917f4b49d927a21cbd467775806fa6ea06a6a6
2019-03-28TS alloc: expand tests logMax2-274/+274
* restructure code for easier reading * use consistent formatting for output * log essential allocation parameters on failure Change-Id: I4b78951a79ddbc0745b39d091080a4e0e247d3c5 Related: OS#2282
2019-03-27Use Timing Advance Index in UL assignmentsMax2-4/+4
Write TAI (if available) when generating Rest Octets for UL Assignment. This should not affect actual PCU behavior because TAI is not yet supported by upper layers but we have to adjust corresponding tests anyway. That's updated version of reverted commit. Change-Id: I69407793bdb863be5fc42adadf75842d22f27335 Related: OS#3014
2019-03-27Rewrite Packet Uplink IA Rest Octets for SBAMax2-2/+2
Use bitvec_set_*() directly without external write pointer tracking to simplify the code. This is part of IA Rest Octets (3GPP TS 44.018 ยง10.5.2.16) which is the last part of the message so it should not interfere with the rest of encoding functions. The difference in the expected test output is due to proper handling of TAI which should not be transmitted for SBA according to the Note in Table in 3GPP TS 44.018. The change was manually tested against real mobile phone using options 'gprs mode gprs' in osmo-bsc.cfg and 'two-phase-access' in osmo-pcu.cfg to make sure appropriate code path is actually triggered. That's partially based on reverted commit 93d947f5e8a30acc9250c124bf9d5bb6a8863526. Change-Id: I97d53c27c1ca9e032d431b3aa7f915027d63ddc0 Related: OS#3014
2019-03-27Fix Channel Coding Command for MCSMax3-6/+6
Previously result of ".to_num() - 1" was used without any checks which means that in case of to_num() returning zero we would effectively try to encode (uint8_t)(-1). Let's fix this by using proper mcs_chan_code() function which returns Channel Coding Command for MCS without the need to further correct it and adjust expected tests output accordingly. Change-Id: I868062a81fffe6714a811c032215f25a79259905
2019-03-27MCS: add Channel Coding Command encoderMax2-4/+4
Add function to encode MCS value as proper EDGE or GPRS Channel Coding value according to 3GPP TS 44.060 and corresponding helpers. Use it for everything except IA Rest Octet encoding which is done in a follow-up patches to make sure that we distinguish between encoding-related changes to test output and unrelated changes. Change-Id: I127fb29f5aaf77a7f6c4c565dfeb3b711af9845d
2019-03-26MCS: add mcs_is_*() helpersMax1-8/+8
In preparation for Channel Coding Command encoder in follow-up patches let's add necessary helpers. Those are similar to previously used helpers from GprsCodingScheme class but without CamelCase and with less typo chances between Gprs and Egprs cases. Change-Id: I6699cbc8d7ae766fa4d2b3d37e5f9ff1cf158b7e
2019-03-24MCS: move Mode enum outside of class definitionMax1-7/+7
Move Mode (EDGE/GPRS) definition and related functions outside of GprsCodingScheme class. This allows us to use standard libosmocore value_string functions. Change-Id: I3baaac7f1ca3f5b88917a23c1679d63847455f47
2019-03-19TBF-DL: log MCS as stringMax1-23/+23
Log MCS name instead of numeric value. Change-Id: I3e1925a010a6def5fd14da63b73e0b75feddfafc
2019-03-19MCS: use value_string for conversionMax1-1/+1
Change-Id: I212ebb892ab162821633974d5a6c7e315d308370
2019-03-19MCS: move HeaderType enum outside of class definitionMax1-5/+4
Move functions which compute number of blocks or bits depending on header type and corresponding enum outside of GprsCodingScheme class. This will allows us to use standard libosmocore value_sting functions in upcoming patches for IA Rest Octet encoding/decoding. Change-Id: Id0873f85e1f16a72e17e7fbc4ad76b194917067f
2019-03-19MS store: move test helper to unit testMax1-2/+18
It's confusing to have test-specific helper with the same name as tested function directly inside the GprsMsStorage class. Let's convert it into static function and move to the unit test. Change-Id: Ia2a5b90779051af894fe15d957c1d26f0a142f33
2019-03-19tests: use -no-install libtool flag to avoid ./lt-* scriptsOliver Smith1-1/+1
This ensures that the rpath of the generated binaries is set to use only the just-compiled so-files and not any system-wide installed libraries while avoiding the ugly shell script wrapper. Change-Id: I2915f0de87598f9f23efc2b9a8f4a6bdf4966efb
2019-03-14Use unique NSEI/BVCI/NSVCI in TBF testsMax2-14/+5
This works around the issue with colliding rate counter group index highlighted by 86e35e488740889f8ad03d09a78918839b883240 by using different NSEI/BVCI/NSVCI parameters for different TBF tests. Change-Id: Id7d2d1a48308a6b1fb17768aee0e79adbdee56ee Related: OS#3827
2019-03-12MCS: move Coding Scheme enum outside of class definitionMax2-79/+79
Move generic MCS enum to C header file to simplify further modifications to GprsCodingScheme class in follow-up patches. This also allows us to use standard libosmocore value_sting functions in upcoming patches for IA Rest Octet encoding/decoding. Related: OS#3014 Change-Id: I993b49d9a82b8c7ad677d52d11003794aeabe117
2019-03-07Log (M)CS UL update errorsMax1-0/+17
Previously some of the errors in update_cs_ul() call were silently ignored. Let's log all those as errors with appropriate message. Note: test output needs updating because we do not (yet) set proper meas struct in TBF tests. That's likely wrong but it's better to update tests in a separate commit. Change-Id: I4084fb281dd9dad04a2a3a68cac2a8f7b462548e
2019-03-07Enable LGLOBAL logging for TBF testsMax2-1/+5
This exposes the bug in BSSGP rate counter group allocation in the current tests version which should be fixed in a separate commit. Change-Id: I6317eccfb1408c5c9d07110a8b059f5ceb5d2afc
2019-03-06Use msgb_eq_data_print() in testsMax3-18/+44
This allows to see exact byte which differs with expected output in case of test failure. Change-Id: If1285649b27843d68dfaa6f6dd3b80deee9aa148
2019-03-05EDGE tests: remove no-op checkMax1-2/+0
The headerTypeControl() function always return constant and is only used inside OSMO_ASSERT() which compares it to the very same constant which makes it no-op. Let's remove this clutter. Change-Id: Ie0f81fe05a2b3f432de7d1f3446e8115d7524ff4
2019-02-26EDGE tests: reduce code duplicationMax1-8/+15
* move duplicated code into helper function * use proper parameter types Change-Id: I8a9528032629e5df629996da5cd8b808efede017
2019-02-19Add encoding tests for Immediate AssignmentMax3-0/+152
Change-Id: I63f4654b23c7c4f063f6b3254d77157fac798586
2019-02-19Add define for dummy burst stringMax2-8/+9
Change-Id: I464920b3d6d47bb1c797a4ce06230f005a2e06a0
2018-06-05change log level of "DL packet loss" log messagesStefan Sperling1-1/+0
The TBF tests are failing on some machines due to unexpected log output: "DL packet loss of IMSI= / TLLI=0xffeeddcc: 0%" These messages are printed if >= 1 second has passed between loss reports. This timing is machine-dependent so the test is unstable as a result. Only print these messages at log level debug to (hopefully) make TBF tests pass consistently. Update expected test output accordingly. Change-Id: Ie43f0e3a8740f0fc132809a09a153886c51fadf9
2018-04-12tbf: add frame number to log outputPhilipp Maier1-282/+282
Currently, the TBF timer log messages lack the frame number in the logoutput - Add frame number to TBF timer related log-statements Change-Id: I5a744dc5cd7c1de1baea13fffac026c83d091429 Related: SYS#4139 Patch-by: Octasic inc.
2018-04-01use osmo_init_logging2() with proper talloc ctxNeels Hofmeyr12-16/+16
There is a duality of initialization: early_init() in bts.cpp wants to init logging even before static instances get initialized. Make sure that tall_pcu_ctx is initialized during early_init() as well. There is a build context that does not seem to include bts.cpp (osmo-pcu-remote), so to be sure, init tall_pcu_ctx as NULL and both in early_init() as well as pcu_main.cpp, init both tall_pcu_ctx and logging if it is still NULL. Change-Id: I2199b62d0270bd35dec2283e8f5b364b7c63915b
2018-03-11implement support for 3-digit MNC with leading zerosNeels Hofmeyr9-6/+15
Receive the mnc_3_digits flag from the PCU interface. Bump the PCU interface to 9. This is one part of the three identical pcuif_proto.h patches: - I49cd762c3c9d7ee6a82451bdf3ffa2a060767947 (osmo-bts) - I787fed84a7b613158a5618dd5cffafe4e4927234 (osmo-pcu) - I78f30aef7aa224b2e9db54c3a844d8f520b3aee0 (osmo-bsc) Add 3-digit flags and use the new RAI and LAI API from libosmocore throughout the code base to be able to handle an MNC < 100 that has three digits (leading zeros). Depends: Id2240f7f518494c9df6c8bda52c0d5092f90f221 (libosmocore), Ib7176b1d65a03b76f41f94bc9d3293a8a07d24c6 (libosmocore) Change-Id: I787fed84a7b613158a5618dd5cffafe4e4927234
2018-02-21Simplify TS alloc: move slot check into functionsMax2-0/+523
Move timeslot applicability check outside of nested for loop into separate functions and document them. Add corresponding tests. This allows us to clarify types used in TS-related computations. Change-Id: Ic39e848da47dc11357782362fdf6206d2c1457c2 Related: OS#2282
2018-02-21Simplify TS alloc: move slot assignmentMax1-1/+1
Move into separate functions: * move timeslot reservation * move UL timeslot assignment * move DL timeslot assignment Change-Id: I64cf78c5cfc78664766f9769dd5cde632dab92b0 Related: OS#2282
2018-02-19Simplify TS alloc: split off RX mask computationMax1-3/+3
Move computation of RX mask into separate function and document it. This allows to significantly shrink find_multi_slot() function and overall improve code readability. Since the test output requires cosmetic adjustment anyway due to change in the sequence of log messages, use this opportunity to better group and format log message. Change-Id: I731726a096bba7ee97499e5cbe3e7401869d7392 Related: OS#2282
2018-02-19Update header includesMax2-0/+3
Many files include unnecessary headers and don't include headers which are actually used. Because of that combined with the fact that OsmoPCU is a mixture of C and C++, it makes it hard to modularize code. Fix this (using iwyu [1] tool): * add missing headers * remove unused headers [1] https://include-what-you-use.org/ Related: OS#1539 Change-Id: I8c9f488a43b099c72b2d30d3245e7ba50872fc00
2018-02-13emu: use libosmocore definitionsMax1-29/+1
Change-Id: I4eade528faeb3841549ad7a6c78e8c1357909614
2018-02-08TBF: move common test code into functionsMax1-109/+67
* move common code into functions * print error instead of failing test right away This allows the tests to continue till completion even in case of intermediate error which simplifies troubleshooting by allowing to gather more errors in a single test run. Change-Id: I1c4ad1dc94542835f15bd666f0821e0ccfcc78c1 Related: OS#1759
2018-02-03TBF: add helpers for assignment type handlingMax1-1/+32
* add function to set/unset given assignment type * log assignment type flag changes * update tests output with additional logs This enables us to carefully track the TBF assignment type transitions. Change-Id: I3fe9d52472be8b7f257e8326b2f84e8e7d7bd1f4 Related: OS#1759
2018-01-31TS alloc: print suggested TRX on allocation errorsMax1-824/+824
If TS allocation fails due to unavailable TFI, print TRX which was suggested to allocator. This simplifies allocator debugging but requires cosmetic modifications to test output. Change-Id: Icaf97d71d71985d52dc0bda448c26b19fe5645e7 Related: OS#2282
2018-01-26Simplify TS alloc: use defines for constantsMax1-3/+3
* define and use constant for occupied TFI instead copying the same magic number all over the place * use libosmocore's define for bit pretty-printer Change-Id: I2699ceebf0cbec01652a02fa68ccc9e9419d0293 Related: OS#2282
2018-01-26Simplify TS alloc: fix allocation callsMax2-16/+22
Using the semantic patch below, adjust allocation-related calls to match updated allocator signatures. // spatch --c++ --dir src -I src --sp-file callfix.spatch --in-place --recursive-includes // spatch --c++ --dir tests -I src --sp-file callfix.spatch --in-place --recursive-includes @@ expression A, B, C, D, E; @@ tbf_alloc_ul_tbf(A, B, C, D, E, ( - 1 + true | - 0 + false ) ) @@ expression A, B, C, D, E; @@ tbf_alloc_dl_tbf(A, B, C, D, E, ( - 1 + true | - 0 + false ) ) Change-Id: I43c76cb49093b40eb854d324e898e821270053dc Related: OS#2282
2018-01-26Simplify TS alloc: adjust allocator signaturesMax1-5/+3
* drop unused parameters (from both functions and structs) * document used parameters and return values * tighten types used for parameters * use consistent formatting Tests are adjusted accordingly but test results are left untouched to avoid regressions. Change-Id: I39d81ab64ff790b9c4c2d0312a574485cd83e755 Related: OS#2282
2018-01-25TBF: override send function via linker optionMax2-1/+4
Use --wrap linker facility to override pcu_sock_send() similar to other Osmo* projects. Change-Id: Ia3d436bd3d1fb0ce8e98526bd7457f4c57667ceb
2018-01-25TBF: decrease L1 logging verbosity in testMax2-290/+1
Don't clutter output with low-level details. Change-Id: I451f2472070dea2387bfaea45ca5bdd9e3b2276d
2018-01-25Add multislot classes from latest specMax4-3161/+72574
The table B.1 is copy-pasted from 3GPP TS 45.002 and reformatted via Emacs macros into C struct to avoid typos. The test output expanded accordingly. The allocation test expectations and output are adjusted accordingly. Note: classes 35-45 which need TA offset are not properly supported yet. This can be extended once we have such devices available for tests. Change-Id: I1ef2eb99c517f25e7d1e71b985a3e0eb3879eb2c Related: OS#2282
2018-01-25AllocTest: remove assumption on max MS classMax3-2732/+4072
So far the allocation was only tested up to hardcoded MS class 29. Drop that assumption and test for all supported MS classes. Adjust expected test output as necessary. Note: using mslot_class_max() forces allocation for MS classes 30 and 31 for which no actual data is available (will be added in follow-up patches) which current implementation treats differently depending on TX/RX direction - see gprs_alloc_max_dl_slots_per_ms(). Because of that we have to adjust the expected number of allocations in test_successive_allocation() as well. Change-Id: I7737f303d97197ef159b14a19c3312a11f07b433 Related: OS#2282
2018-01-25AllocTest: expand test outputMax2-101/+85
* print MS classes * unify and print test mode description * print additional info on test completion This only changes meta info about test run but not the actual test output. Change-Id: I30a4b8f561a9677f4e9ded33a051a249bd15a6a2 Related: OS#2282
2018-01-25AllocTest: adjust test_alloc_b()Max1-199/+156
This function contains 3 independent test cases. Let's split them into separate functions to simplify further modifications: * split test cases into separate functions * use them for mass test as well * change function names to avoid confusion * make individual test cases return error instead of failing via assert on allocation failure The top-level test_alloc_b() is used as part of exhaustion tests in test_all_alloc_b() for example, so it's expected that allocation might fail (due to TFI or USF exhaustion for example) eventually. In this case it's better to indicate it to caller instead of failing entire program. The test output does not require any adjustements because we do not exhaust to the point of allocation failure yet. Change-Id: Id7e03a85ce96e7d617cecee963759bae589a3a1a Related: OS#2282
2018-01-25Add tests for find_multi_slots()Max4-2/+1349
* make function public * add tests Change-Id: I4174703808335c19341cd5b5f4422496d958967f
2018-01-24TBF: adjust test log levelsMax2-1186/+4796
* enable debugging for DTBF* * disable excessive DRLCMAC* Change-Id: I122620941e7939d513742c8589a75e0ab76f79ab