summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* stats: Use a global index for stat item valuesJacob Erlbeck2015-10-281-14/+29
| | | | | | | | | | | | | | | Currently each stat item has a separate index value which basically counts each single value added to the item and which can be used by a reporter to get all new values that have not been reported yet. The drawback is, that such an index must be stored for each stat item. This commit introduces a global index which is incremented for each new stat item value. This index is then stored together with the item value. So a single stored index per reporter is sufficient to make sure that only new values are reported. Sponsored-by: On-Waves ehf
* stats: Add vty_out_stat_item_groupJacob Erlbeck2015-10-281-4/+4
| | | | | | This functions dumps a whole stat item group to the VTY. Sponsored-by: On-Waves ehf
* stats: Add stat_item for value monitoringJacob Erlbeck2015-10-284-2/+209
| | | | | | | | | | | | | | This commit adds instrumentation function to gather measurement and statistical values similar to counter groups. Multiple values can be stored per item, which can be retrieved in FIFO order. Getting values from the item does not modify its state to allow for multiple independant backends (e.g. VTY and statd). When a new value is set, the oldest value gets silently overwritten. Lost values are skipped when getting values from the item. Sponsored-by: On-Waves ehf
* build: have a disable-static build succeedJan Engelhardt2015-09-161-4/+2
| | | | | | | | | | | | | When using configure --disable-static, no libosmogsm.a will be created, and the tests fail to link because symbols like _a5_3 and _a5_4 are not exported through the only remaining libosmogsm.so. A method to overcome this is an intermediate private non-distributed library, examples of which are present in e.g. libabc, kmod and systemd. With this, disable-static can now be the default and practical compile time be halved.
* tests: Don't reference file in src/ to test hidden func. Use static link.Sylvain Munaut2015-08-191-2/+3
| | | | | | | Taken from: https://qiaomuf.wordpress.com/2011/03/27/handling-unit-test-with-c-visibilityhidden/ Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* bssgp/test: Add missing START/END printfsJacob Erlbeck2015-06-192-1/+8
| | | | Sponsored-by: On-Waves ehf
* ipa: Properly parse LV stream of a ID_GET requestHolger Hans Peter Freyther2015-06-022-1/+62
| | | | | | | | For some reason the structure is closer to be a LV (length and value). The value is actually a tag but it is counted inside the length. Introduce an overload of the parse function to provide an offset for the length. This will be taken from the returned length.
* build: Fix the building of tests as wellHolger Hans Peter Freyther2015-05-171-1/+1
| | | | | | | In file included from ../../include/osmocom/core/msgb.h:25:0, from ../../tests/sms/sms_test.c:31: ../../include/osmocom/core/bits.h:6:35: fatal error: osmocom/core/bit16gen.h: No such file or directory #include <osmocom/core/bit16gen.h>
* bssgp: Fix bssgp_tx_fc_bvc parameter typeJacob Erlbeck2015-05-062-0/+79
| | | | | | | | | | | | Currently large values for Bmax default MS get sliced since a uint16_t is used as the type of the corresponding parameter of bssgp_tx_fc_bvc. GSM 48.018, 11.3.2 which in turn refers to 11.3.5 specifies a maximum of 6MB (0xffff * 100). This commit changes the type to uint32_t to cover the full value range. Sponsored-by: On-Waves ehf
* bssgp/test: Fix bssgp-fc testJacob Erlbeck2015-05-041-30/+0
| | | | | | | | | | | | | The fix in the commit "bssgp: Fix call to llist_entry in fc_queue_timer_cfg" prevents the flow control code from generating certain logging messages ("-BSSGP-FC: fc_timer_cb() but still not able to send PDU of 10 bytes") during the tests. This breaks the test suite, since the update of the correseponding stderr output file misses. This commit updates the bssgp_fc_tests.err file accordingly. Sponsored-by: On-Waves ehf
* logginrb: Fix compiler warning about fprintfHolger Hans Peter Freyther2015-04-111-2/+2
| | | | | | | | | loggingrb/loggingrb_test.c:76:18: warning: format string is not a string literal (potentially insecure) [-Wformat-security] fprintf(stderr, log_target_rb_get(ringbuf_target, 0)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ loggingrb/loggingrb_test.c:77:18: warning: format string is not a string literal (potentially insecure) [-Wformat-security] fprintf(stderr, log_target_rb_get(ringbuf_target, 1)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* bssgp: Ensure non-NULL bctx before calling bssgp_rx_ptp (Coverity)Jacob Erlbeck2015-04-071-0/+17
| | | | | | | | | | | | | | Currently bssgp_rx_ptp might be called with bctx being NULL, when the NS BVCI is neither BVCI_SIGNALLING nor BVCI_PTM, but the message is a BVC_RESET or it contains an BVCI IE != BVCI_SIGNALLING where the BVCI is not known. This patch ensures that bssgp_rx_ptp will only be called with a non-NULL bctx. A log message will be issued, if the bctx is NULL when this was not expected. Fixes: Coverity CID 1040674 Sponsored-by: On-Waves ehf
* fix compiler warnings for a5 testsMax2015-04-071-0/+4
| | | | Signed-off-by: Max <max.suraev@fairwaves.co>
* Tests: Fix broken loggingrb testcase.Michael McTernan2015-04-012-7/+6
| | | | | | | | The loggingrb (ringbuffer) test case was not actually being built or ran, instead still using the normal logging test. This patch fixes the makefile, then the loggingrb testcase is changed to use the current loggingrb API so that it builds and passes. Signed-off-by: Michael McTernan <mike.mcternan@wavemobile.com>
* gsm: Add A5/3-4 cipher supportMax2015-03-283-15/+79
| | | | | Signed-off-by: Max <max.suraev@fairwaves.co> Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* bssgp: Handle BSSGP STATUS messagesJacob Erlbeck2015-03-182-0/+39
| | | | | | | | | | | | | | | | | | | Currently incoming BSSGP STATUS messages are just logged and no other action is taken. This makes it impossible for higher layers to react to failures which are indicated by corresponding STATUS messages unless a timeout is triggered as a result of that failure later on. This commit adds a bssgp_rx_status() function and calls it on incoming STATUS messages. That function logs a message, increments the new BSSGP_CTR_STATUS counter if the bctx context exists and invokes an NM_STATUS status indication. The latter will allow the application to handle failures immediately. Since all STATUS messages should be handled, the function is already called in bssgp_rcvmsg and the message is no longer handled in (and will not reach) bssgp_rx_sign and bssgp_rx_ptp. Ticket: OW#1414 Sponsored-by: On-Waves ehf
* Supplementary Services (de)activation, interrogation addedTobias Engel2015-01-011-7/+7
| | | | | | | | | | | | | These patches enhance the Supplementary Service (SS) processing from only being able to handle USSD to other SS, specifically activation, deactivation and interrogation of those SS. Registration is not yet implemented. include/osmocom/gsm/protocol/gsm_09_02.h has been added with needed values for SS. Modified by Harald Welte to keep the old ussd-only functiosn for API/ABI stability.
* SMS-CB: introduce and use GSM341_7BIT_PADDINGHarald Welte2014-12-301-2/+3
|
* use the new GSM341 / GSM412 size constantsHarald Welte2014-12-301-3/+3
|
* smscb/gsm0341_test: Add \r padding to the messageDaniel Willmann2014-12-301-1/+7
|
* testHarald Welte2014-12-301-1/+4
|
* add gsm0341_test to generate SMSCB hex stringsHarald Welte2014-12-292-1/+67
| | | | Those hex strings can then be copy+pasted into the OSmoNITB VTY
* bssgp: Include sys/socket.h for AF_INET on FreeBSDHolger Hans Peter Freyther2014-10-251-0/+1
|
* gprs: Don't discard SUSPEND/RESUME in bssgp_rcvmsgJacob Erlbeck2014-10-232-2/+4
| | | | | | | | | | | | | | | Currently sending SUSPEND/RESUME messages to this function (like it is done in the osmo-sgsn) results in STATUS messages complaining about an unknown BVCI. The reason is, that these messages rely on a TLLI/RAI pair to identify the context and do not contain an explicit BVCI. This patch modifies bssgp_rcvmsg() to only complain about and unknown BVCI if one is given but a matching context is not found (except for RESET messages). The ctx argument is removed from the functions handling SUSPEND and RESUME since it will always be NULL then. Sponsored-by: On-Waves ehf
* gprs/test: Add BSSGP testsJacob Erlbeck2014-10-234-2/+168
| | | | | | | | This patch adds a test suite for the BSSGP protocol. The first (and only) test checks the handling of BSSGP SUSPEND/RESUME. Sponsored-by: On-Waves ehf
* bssgp: Free msgb in case of error when calling into gprs_ns_sendmsgHolger Hans Peter Freyther2014-10-101-4/+8
| | | | | | | | | | | | | | | | | | | | | In the OsmoSGSN we have a crash with a DEAD/BLOCKED GPRS-NS and segmented SN-UNITDATA. For the caller it is not easy to know if the passed msg buffer has been freed or not. The most easy solution is to always take the ownership and either pass it on or free it in case of an error. Adjust indirect and direct callers of gprs_ns_sendmsg. I found the following call-chains with an external msgb parameter. gprs_ns_sendmsg <- _bssgp_tx_dl_ud <- bssgp_fc_in <- bssgp_tx_dl_ud Update the test to allocate a real msgb because for the test with '1000' we will msgb_free it right away. Sponsored-by: On-Waves ehf
* gprs-ns/test: Check the nsvc state explicitelyJacob Erlbeck2014-10-091-0/+7
| | | | | | | This patch extends test_sgsn_reset_invalid_state by assertions to check that nscv->state and nsvc->remote_state have been set as expected. Sponsored-by: On-Waves ehf
* gprs-ns/test: Re-add return value check for gprs_nsvc_resetHolger Hans Peter Freyther2014-10-091-1/+3
| | | | | | | | | | | | | The return value check has been removed in the commit 'Use gprs_nsvc_reset instead of gprs_ns_tx_reset', because gprs_nsvc_reset had no return value then. Since a compatible return value has been added by 'Let gprs_nsvc_reset return a value', the former patch is partly reverted by this commit. The printf is now an OSMO_ASSERT. The commit message was taken from Jacob. Sponsored-by: On-Waves ehf
* gprs-ns: Fix reset state handlingJacob Erlbeck2014-10-092-6/+23
| | | | | | | | | | | | | | | | | | | | Currently the NS-VC's state is updated from within gprs_ns_tx_reset, which can lead to an inconsistent state when the RESET_ACK is lost. In this state, the NSE_S_RESET bit is set but the Tns-reset timer is not started. This patch moves the state update into gprs_nsvc_reset. This way, the state flags are consistent with the timer. Addresses: SGSN -> BSS NS_ALIVE BSS -> SGSN NS_ALIVE_ACK BSS -> SGSN BVC_RESET SGSN -> BSS NS_STATUS, Cause: NS-VC blocked, NS VCI: 0x65 and there is no BSS->SGSN NS_ALIVE Ticket: OW#1213 Sponsored-by: On-Waves ehf
* gprs-ns/test: Add test_sgsn_reset_invalid_stateJacob Erlbeck2014-10-092-0/+163
| | | | | | | | | | | | | This tests the behaviour for a certain combination of messages and packet losses that can put the NS-VC object into an undefined state. In that state, the peer's ALIVE messages are properly answered, but the local test procedure has stopped, incoming unitdata PDUs are answered by STATUS(NS-VC blocked) and the unblocking procedure is not initiated. Ticket: OW#1312 Sponsored-by: On-Waves ehf
* gprs-ns/test: Add expire_nsvc_timerJacob Erlbeck2014-10-091-0/+15
| | | | | | | | | This function forces the expiration of the timer within struct gprs_nsvc. It is meant to be used for controlled (and faster) timer expiration in unit tests. The timer_mode of the expired timer is returned (or -1 if the timer wasn't active). Sponsored-by: On-Waves ehf
* gprs-ns/test: Save the last PDU type sentJacob Erlbeck2014-10-091-0/+4
| | | | | | | | | | | This records the PDU type of the last message sent to the remote peer in the global variable sent_pdu_type, which can then be used in assertions. Note that sent_pdu_type will remain unchanged if no message has been sent via sendto. Sponsored-by: On-Waves ehf
* gprs-ns/test: Use gprs_nsvc_reset instead of gprs_ns_tx_resetJacob Erlbeck2014-10-092-22/+13
| | | | | | | | | | Currently gprs_ns_tx_reset is used to let the NS stack generate NS_RESET message. This is not adjusting the nsvc state properly. This patch uses gprs_nsvc_reset instead which starts the full reset procedure. Sponsored-by: On-Waves ehf
* build: resolve compiler warning about implicit delcarationJan Engelhardt2014-10-041-0/+1
| | | | | | | | | CC msgfile_test.o msgfile/msgfile_test.c: In function "main": msgfile/msgfile_test.c:48:2: warning: implicit declaration of function "talloc_free" [-Wimplicit-function-declaration] talloc_free(entries); ^
* build: fix linker error with kasumi_testJan Engelhardt2014-10-031-2/+1
| | | | | | | | | | | | | | | | When the osmocore package is configured with --disable-static, building of kasumi_test fails. This seems quite legit, given the function _kasumi_kgcore is not exported. Don't try to workaround the build system. Include the code. CCLD kasumi/kasumi_test kasumi_test.o: In function `test_expansion': ~tests/kasumi/kasumi_test.c:25: undefined reference to `_kasumi_key_expand' kasumi_test.o: In function `main': ~tests/kasumi/kasumi_test.c:56: undefined reference to `_kasumi' ~tests/kasumi/kasumi_test.c:100: undefined reference to `_kasumi_key_expand' ~tests/kasumi/kasumi_test.c:112: undefined reference to `_kasumi_kgcore' [...]
* build: remove unused all_includes and use AM_CPPFLAGSJan Engelhardt2014-10-031-1/+2
| | | | | Preprocessor flags are best placed in AM_CPPFLAGS. Remove use of the unused all_includes variable, which is never set.
* msgfile: Fix memleak in the test and release the listHolger Hans Peter Freyther2014-08-291-0/+1
|
* tests/bits: Make sure all 'inline' are also staticSylvain Munaut2014-06-161-17/+43
| | | | | | Not doing so seems to break the BSD build Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* gsm: Add Kasumi cipher implementationSylvain Munaut2014-06-164-2/+158
| | | | | Submitted-by: Max <max.suraev@fairwaves.co> Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* core: Add generic LE/BE load/store uint type convertors and use them in msgbMax2014-06-162-1/+248
| | | | | Submitted-by: Max <max.suraev@fairwaves.co> Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
* gsm/lapdm: Prevent LAPD tx_queue from filling up in polling modeDaniel Willmann2014-03-262-17/+9
| | | | | | | If LAPDm receives an I-Frame while there already is an I-Frame in the tx_queue the code generates an additional RR (to acknowledge the received I-Frame). Instead, N(R) of the I-Frame in the tx_queue should be updated to ACK the data.
* tests/lapd: Add a testcase to check for LAPDm sync issuesDaniel Willmann2014-03-262-9/+272
| | | | Regression test for LAPDm recording the current state
* sms_test: Do not crash on logging.Alexander Chemeris2014-03-201-0/+8
|
* ladpm: Fix msgb handling and SAPI=3 establishment delayJacob Erlbeck2014-03-101-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently it takes 3s to establish a SAPI 3 SACCH connection with osmo-bts. This is due to the fact, that a broken SABME request is sent first and and is ignored by the MS. Then, after a T200 timeout (2s) the SABME command is sent again (this time correctly) and answered by the MS. The first SABME message is broken (it has a length field of 3 and ends with 3 bytes from the tail of the original RSL message), because of it is expected throughout lapdm.c that msg buffers containing RSL have msg->l2h == msg->data. Some abis input drivers fulfill this but IPA doesn't, thus the 3 bytes of the IPA header are still part of the msg and confuse length computation. Since internal fields of the msg are modified directly, this is difficult to see. This patch adds a new function msgb_pull_to_l3() that explicitely skips over all headers prepending L3 and therefore resets l1h and l2h. This function is then used instead of msgb_pull_l2h() which only worked correctly when msg->l2h == msg->data. In addition, code manipulating msg->tail and msg->len directly has been replaced by calls to msgb_trim(). Note that this patch does not fix all issues of this case in the LADP related code. Ticket: SYS#192 Sponsored-by: On-Waves ehf
* lapd/test: Check for empty ACCH queue, tooJacob Erlbeck2014-03-041-0/+2
| | | | | | | This just adds a single test to verify that the ACCH queue is actually empty. Sponsored-by: On-Waves ehf
* lapd/test: Extend test case to test msgs having data before l2hJacob Erlbeck2014-03-042-4/+16
| | | | | | | | | | | | | | Since e.g. the IPA input driver leaves it's specific header in front of msg->l2h, so that msg->l2h != msg->data. The lapdm code does not expect this at least in rslms_rx_rll_est_req(). This patch modifies the test program to add a dummy L1 header to generated messages (unless the test would abort when doing so). Note that the ok file reflects the current state which is not correct. Sponsored-by: On-Waves ehf
* lapd/test: Show dequeued messagesJacob Erlbeck2014-03-042-32/+72
| | | | | | This adds and uses a wrapper for lapdm_phsap_dequeue_prim() that prints information about the message that has been taken from the queue.
* lapd/test: Add test case for RSL EST REQ -> LAPDJacob Erlbeck2014-01-262-15/+112
| | | | | | | | | This test case processes RSL establish requests for SMS (SAPI 3) on the SDCCH and the SACCH channels. The TX queues are checked after processing each message. Ticket: SYS#192 Sponsored-by: On-Waves ehf
* sms: Fix gsm_7bit legacy functions return valueJacob Erlbeck2014-01-092-0/+30
| | | | | | | | | | | | | | The legacy 7bit conversion functions (those without the '_n_' in the name) gave wrong return values on 64 bit platforms due to unproper signed/unsigned conversions and the usage of SIZE_MAX. This patch fixes this by using a smaller max size (see GSM_7BIT_LEGACY_MAX_BUFFER_SIZE, currently set to 64k) for the legacy wrappers and by using unsigned int for max_septets. In addition, there are tests now that check the return values of legacy encoding and decoding. Sponsored-by: On-Waves ehf
* utils: Greatly improve performance of osmo_hexdump routinesNils O. SelÄsdal2014-01-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | In the osmo-bts and libosmo-abis code the hexdump routine is used for every incoming/outgoing packet (including voice frames) and the usage of snprintf showed up inside profiles. There is a semantic change when more than 4096 characters are used. The code will now truncate at byte boundaries (and not nibbles). Code: static const int lengths[] = { 23, 1000, 52 }; char buf[4096]; int i; for (i = 0; i < 30000; ++i) char *res = osmo_hexdump(buf, lengths[i & 3]); Results: before: after: real 0m3.233s real 0m0.085s user 0m3.212s user 0m0.084s sys 0m0.000s sys 0m0.000s