aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/tests
AgeCommit message (Collapse)AuthorFilesLines
2014-07-22mgcp: Fix/test reading/writing the sequence numberHolger Hans Peter Freyther2-7/+59
The sequence number was read from the wrong place and then the wrong byte order conversion routine was used so we ended up wirting 0x00, 0x00 into the patched sequence number. Add a testcase for that.
2014-07-22mgcp: Capture the return value of the of the transcode functionHolger Hans Peter Freyther2-192/+205
2014-07-22mgcp: Do not use errx as finding a test failure is too hardHolger Hans Peter Freyther1-6/+12
It took me a long time to figure out that errx just exits and the test output didn't indicate that the application was exited early. Use a printf and good old abort in case of a failure.
2014-07-22mgcp: Re-factor testcase to separate test and setupHolger Hans Peter Freyther1-54/+64
Separate the test from the code necessary for the setup. This is somehow inspired by the PhExample framework of Pharo.
2014-07-07gprs/test: Increase stderr log levelJacob Erlbeck1-4/+20
Enable the generation of more log messages. Sponsored-by: On-Waves ehf
2014-07-07gbproxy_test: Provide enough disabled categories to please valgrindHolger Hans Peter Freyther1-1/+6
An empty log_info is not enough. We need to make sure that at least DLGLOBAL is present. Instead of doing that make sure that we have enough entries. ==26163== Conditional jump or move depends on uninitialised value(s) ==26163== at 0x403B289: osmo_vlogp (logging.c:290) ==26163== by 0x403B3DA: logp2 (logging.c:339) ==26163== by 0x804D027: gbprox_relay2bvci (gb_proxy.c:347) ==26163== by 0x804D3CF: gbprox_rx_sig_from_sgsn (gb_proxy.c:589) ==26163== by 0x804DBFC: gbprox_rcvmsg (gb_proxy.c:685) ==26163== by 0x4052CB0: gprs_ns_process_msg (gprs_ns.c:669) ==26163== by 0x4052F70: gprs_ns_rcvmsg (gprs_ns.c:1053) ==26163== by 0x804BB49: gprs_process_message (gbproxy_test.c:488) ==26163== by 0x804BC4C: send_ns_unitdata (gbproxy_test.c:210) ==26163== by 0x804BDE8: send_bssgp_reset_ack (gbproxy_test.c:243) ==26163== by 0x804B54F: main (gbproxy_test.c:863) ==26163==
2014-07-07mgcp: Verify that the force-ptime is written back to the fileHolger Hans Peter Freyther1-0/+22
When the command was added it was not verified that. Add a very basic MGCP VTY test and test that the string appears in the config.
2014-07-07gbproxy_test: Reset the gbproxy before we reset GPRS NSHolger Hans Peter Freyther1-3/+3
The peers are (talloc) children of the GPRS NS. This means the peers (and the rate counters) are currently being deleted twice. ==23446== Invalid write of size 4 ==23446== at 0x403C243: rate_ctr_group_alloc (linuxlist.h:66) ==23446== by 0x4050974: gprs_nsvc_create (gprs_ns.c:209) ==23446== by 0x405320D: gprs_ns_instantiate (gprs_ns.c:1330) ==23446== by 0x804ABEB: main (gbproxy_test.c:666) ==23446== Address 0x4300694 is 52 bytes inside a block of size 784 free'd ==23446== at 0x4029DA8: free (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so) ==23446== by 0x4041B9D: _talloc_free (talloc.c:609) ==23446== by 0x4043292: talloc_free (talloc.c:578) ==23446== by 0x40532D3: gprs_ns_destroy (gprs_ns.c:1363) ==23446== by 0x804ABD7: main (gbproxy_test.c:660)
2014-07-07gbproxy_test: Simplify the test setup by sharing codeHolger Hans Peter Freyther1-30/+24
2014-07-07gprs/test: Add additional gbproxy testsJacob Erlbeck2-1/+460
This adds a test case with several messages to test BSSGP patching. New messages: - BSSGP/DTAP Attach Request - BSSGP/DTAP Attach Accept - BSSGP/DTAP Routing Area Update Request - BSSGP/DTAP Routing Area Update Accept - BSSGP/DTAP Activate PDP Context Request - BSSGP SUSPEND - BSSGP SUSPEND ACK Sponsored-by: On-Waves ehf
2014-07-07gprs/test: Add connect_sgsn() functionJacob Erlbeck1-10/+11
This function abstracts identical code sequences that are used at multiple places. Sponsored-by: On-Waves ehf
2014-07-07gprs/test: Remove verbose parameter of gbprox_dump_* functionsJacob Erlbeck1-26/+26
This parameter is not used (the methods are always called with an argument of 1 in the third position). Thus the parameter is removed completely. Sponsored-by: On-Waves ehf
2014-06-15gprs: Use area terms LAI/RAI as defined in GSM 03.03Jacob Erlbeck1-60/+60
Currently the terms 'Routing area code' (RAC) and 'Location area code' (LAC) are used in several places where 'Routing area identification' (RAI) or 'Location area identification' (LAI) are meant in fact. This patch replaces RAC/LAC by RAI/LAI and 'code' by 'identification' at these places. Note that RAI := MCC MNC LAC RAC, and LAI := MCC MNC LAC (see GSM 03.03, sections 4.1 and 4.2). Sponsored-by: On-Waves ehf
2014-06-15mgcp: Fix SDP formatting of fmtp_extra (Coverity)Jacob Erlbeck1-24/+0
Currently when ftmp_extra is set, a doubled a=rtpmap line is emitted instead of the fmtp_extra info. This patch fixes replaces the formerly copied and pasted but not modified snprintf parameters by the correct ones. Fixes: Coverity CID 1220873 Sponsored-by: On-Waves ehf
2014-06-15mgcp/test: Add test case using the fmtp_extra infoJacob Erlbeck2-0/+69
Add tests setting the fmtp_extra field to check the response generation. This triggers a bug found by Coverity. Addresses: Coverity CID 1220873 Sponsored-by: On-Waves ehf
2014-06-05mgcp: Set net_end audio params in recvonly modeJacob Erlbeck2-0/+12
Currently, if there is no SDP data in the MGCP message received from the net, the fields containing audio encoding information are not set in net_end. So in recvonly mode transcoding would not be set up correctly. This patch changes the implementation of the code handling CRCX and MDCX to use the codec signalled in the MGCP local connection options (field 'a:') if there isn't any SDP data. This is only halfway negotiation, because the codec is used blindly and not matched against the supported ones. Sponsored-by: On-Waves ehf
2014-06-05mgcp: Move transcoding to libmgcpJacob Erlbeck2-2/+2
This patch moves the files relevant to transcoding from src/osmo-bsc_mgcp to src/libmgcp and src/include/openbsc. Makefiles and include directives are being updated accordingly. Sponsored-by: On-Waves ehf
2014-06-05mgcp/test: Add test cases for transcoding and repackingJacob Erlbeck5-3/+935
This patch adds test cases for transcoding and repacking. Sponsored-by: On-Waves ehf
2014-06-04gprs/test: Use valid MCC/MNC for BVC RESETJacob Erlbeck2-110/+110
The code currently uses an encoded sequence of (hex) 10 20 30 40 50 60 as RAI, for which no bijective mapping to the set of representations MCC-MNC-LAC-RAC exists. This patch changes the hard-coded RAI to 11 22 33 40 50 60 which maps to 112-332-16464-96 (and vice-versa). Sponsored-by: On-Waves ehf
2014-05-28channel_test: Return a positive number to claim it was pagedHolger Hans Peter Freyther1-1/+4
This addresses an ASAN issue where the request was already deleted by our callback function. (gdb) where #0 0xb69e7810 in __asan_report_error () from /usr/lib/i386-linux-gnu/libasan.so.0 #1 0xb69e0aff in __asan_report_store4 () from /usr/lib/i386-linux-gnu/libasan.so.0 #2 0x0804ea64 in subscr_send_paging_request (subscr=subscr@entry=0xb5103cb0) at gsm_subscriber.c:212 #3 0x0804edac in subscr_get_channel (subscr=subscr@entry=0xb5103cb0, type=type@entry=2, cbfn=cbfn@entry=0x804969d <subscr_cb>, param=param@entry=0x2342) at gsm_subscriber.c:246 #4 0x080498f7 in main (argc=1, argv=0xbffff804) at channel_test.c:77 Breakpoint 3, subscr_paging_dispatch (hooknum=hooknum@entry=101, event=event@entry=200, msg=msg@entry=0x1323, data=<optimized out>, data@entry=0x8063900 <s_conn>, param=<optimized out>, param@entry=0xb5103cb0) at gsm_subscriber.c:126 126 llist_del(&request->entry); (gdb) b llist_del (gdb) bt #0 subscr_paging_dispatch (hooknum=hooknum@entry=101, event=event@entry=200, msg=msg@entry=0x1323, data=<optimized out>, data@entry=0x8063900 <s_conn>, param=<optimized out>, param@entry=0xb5103cb0) at gsm_subscriber.c:126 #1 0x0804e8a9 in subscr_paging_cb (hooknum=101, event=200, msg=0x1323, data=0x8063900 <s_conn>, param=0xb5103cb0) at gsm_subscriber.c:187 #2 0x080497e9 in paging_request (bts=0xb5b03e70, subscriber=subscriber@entry=0xb5103cb0, type=2, cbfn=cbfn@entry=0x804e881 <subscr_paging_cb>, data=data@entry=0xb5103cb0) at channel_test.c:51 #3 0x0804ea39 in subscr_send_paging_request (subscr=subscr@entry=0xb5103cb0) at gsm_subscriber.c:207 #4 0x0804edac in subscr_get_channel (subscr=subscr@entry=0xb5103cb0, type=type@entry=2, cbfn=cbfn@entry=0x804969d <subscr_cb>, param=param@entry=0x2342) at gsm_subscriber.c:246 #5 0x080498f7 in main (argc=1, argv=0xbffff804) at channel_test.c:77 (gdb) q
2014-05-22mgcp: Add proper length checking for line handlingHolger Hans Peter Freyther1-0/+1
In ae1997248ccb4fba1394267d3051082dfd85448a the handwritten tokenizer was replaced with strtok_r. As part of this change the structural checking of MGCP parameters was stopped. This means that a code like "line + 3" might access beyond the first NUL and be possibly behind the msgb. Manually add size checking again. Manually jumping to the error label is not possible anymore as it has been removed. The result is that invalid lines will be skipped. This is matching the general approach by the IETF RFCs to be permissive in data being received.
2014-05-22mgcp: add voice muxer supportPablo Neira Ayuso3-4/+4
This patch adds the voice muxer. You can use this to batch RTP traffic to reduce bandwidth comsuption. Basically, osmux transforms RTP flows to a compact batch format, that is later on decompacted to its original form. Port UDP/1984 is used for the muxer traffic between osmo-bsc_nat and osmo-bsc_mgcp (in the BSC side). This feature depends on libosmo-netif, which contains the osmux core support. Osmux is requested on-demand via the MGCP CRCX/MDCX messages (using the vendor-specific extension X-Osmux: on) coming from the BSC-NAT, so you can selectively enable osmux per BSC from one the bsc-nat.cfg file, so we have a centralized point to enable/disable osmux. First thing you need to do is to accept requests to use Osmux, this can be done from VTY interface of osmo-bsc_nat and osmo-bsc_mgcp by adding the following line: mgcp ... osmux on osmux batch-factor 4 This just initializes the osmux engine. You still have to specify what BSC uses osmux from osmo-bsc_nat configuration file: ... bsc 1 osmux on bsc 2 ... bsc 3 osmux on In this case, bsc 1 and 3 should use osmux if possible, bsc 2 does not have osmux enabled. Thus, you can selectively enable osmux depending on the BSC, and we have a centralized point for configuration from the bsc-nat to enable osmux on demand, as suggested by Holger. At this moment, this patch contains heavy debug logging for each RTP packet that can be removed later to save cycles. The RTP ssrc/seqnum/timestamp is randomly allocated for each MDCX that is received to configure an endpoint.
2014-05-01db: Fix next fall-out with make distcheckHolger Hans Peter Freyther2-1/+2
2014-04-30db: Add testcase for the db migration.Holger Hans Peter Freyther5-2/+40
2014-04-30db: Add testcase for storing/loading/comparing a smsHolger Hans Peter Freyther1-0/+61
Use the already created subscriber, create a sms and read it back from the subscriber.
2014-04-24ctrl: Extend the testcase for using '09' as numbers on the interfaceHolger Hans Peter Freyther1-0/+43
Verify that '0X' numbers are parsed correctly from the wire interface.
2014-03-23sgsn/ctrl: Add ctrl interface, implement listing subscribersHolger Hans Peter Freyther1-0/+23
Add the control interface with no hierachy right now and implement the first command to list IMSI + Context Address of active sessions. sgsn_cmd_handle could share more code with bsc variant. Fixes: SYS#264, SYS#265
2014-03-23nitb/ctrl: Implement a command to list all active subscribersHolger Hans Peter Freyther1-0/+7
This is only useful for small networks. List the IMSI and MSISDN of all active subscribers. Fixes: SYS#266
2014-03-23nitb/ctrl: Implement creating and deleting subscribersHolger Hans Peter Freyther1-1/+9
Sadly there is no proper foreign key relationship on the tables that related to the Subscriber. This means we can't use a DELETE with Cascade and need to delete everything by hand. To make things worse maybe the SMS/Paging code is still using the subscriber making the operation more dangerous. I had added NULL checks for sender_id/receiver_id at 30C3 so we should not crash in this situation. Fixes: SYS#274
2014-03-23nitb/ctrl: Add command to add/modify a subscriber to the databaseHolger Hans Peter Freyther1-0/+32
The test has been manually verified. Executing the select for the subscribers showed: sqlite> select * from Subscriber; 1|2014-03-23 12:12:46|2014-03-23 12:19:09|2620345||445567|1||0| This created a subscriber with the right IMSI, MSISDN and has it authorized. Fixes: SYS#275
2014-03-23nitb/ctrl: Add ctrl command to set the TRX max_power_reductionHolger Hans Peter Freyther1-0/+20
In case the BTS is connected the new attribute should be set through OML. This is left as a todo item. Addresses: SYS#267
2014-03-20mncc: Complete definitions for all speech traffic frames at MNCC interfaceAndreas Eversberg1-1/+1
The new definitions are: half rate and AMR Change of definition name for bad frame, because it applies to all types of traffic, not only TCH/F. Increase MNCC interface version to 4. Version 3 is skipped, because it was used by older version of Linux-Call-Router which is incompatible with the current version of the MNCC interface.
2014-03-11trau: Fix linking on FreeBSD by using LIBRAY_DLNikola1-1/+1
2014-03-09db: Add more tests for retrieving subscribers from a DB.Alexander Chemeris1-2/+36
2014-03-06nitb/smpp: Add simple test runner for the issues found by danielHolger Hans Peter Freyther2-1/+140
Send the two strings that caused the read handling to misbehave. Verify that we handle this correctly by still being able to issue a VTY command. The CPU load issue could not be verified like this.
2014-03-06nitb: Add a test for "show network" in the python testsuite.Ciaby1-0/+8
Make sure that bsc_gsmnet->bsc_data->rf_ctrl is initialized for NITB. In commit a9fae1ae66df57f76a0aedbd0b56228959d37d56 the conditions for the rf_ctrl was removed but it was still needed for the NITB. Fixes regression from: a9fae1ae66df57f76a0aedbd0b56228959d37d56 bsc: rf_ctrl will always be created, remove the NULL checks
2014-03-06nat: Add CTRL command test case for the new control commandsHolger Hans Peter Freyther2-3/+49
2014-03-04libbsc: Add command to set MNC/MCC and apply it if something changedHolger Hans Peter Freyther1-1/+45
Change the splitting of the ctrl_test_runner.py. Make sure that we get one element and all the rest.
2014-02-20sms: Increment the RP Message Reference for each transactionHolger Hans Peter Freyther2-0/+29
Each RP-DATA should have a unique msg reference. Currently 42 is used for all of these. Remember the last reference we used and increment it on the next SMS. Do not track if the reference is still in use a clash is a lot less likely now. First unless SMPP is used only one SMS is delivered at a time, second the transaction space is a lot smaller than the one for the reference.
2014-02-20tests: Remove unused fileHolger Hans Peter Freyther1-50/+0
2014-02-03mgcp: Round the frame time otherwise we have porting issuesHolger Hans Peter Freyther3-70/+71
With the current multiplication we might end up with 19999 as time on i386. When we round it ends up as 20000 on i386 and should work the same on AMD64.
2014-02-03mgcp: transit is a signed variable and should be printed like thisHolger Hans Peter Freyther2-89/+89
On AMD64 we had a difference in the test result most likely due the bigger size of integers.
2014-02-03mgcp: Use the length modifier for the size_t in the printfHolger Hans Peter Freyther1-1/+1
Should fix on AMD64: mgcp_test.c: In function ‘sendto’: mgcp_test.c:318:10: warning: format ‘%d’ expects argument of type ‘int’, but argument 5 has type ‘size_t’ [-Wformat]
2014-01-31mgcp/rtp: Base jitter calculation on input timestampsJacob Erlbeck1-78/+78
So far, the jitter computation has been based on output timestamps. This patch uses the input timestamps instead and resets jitter computation on SSRC changes. Sponsored-by: On-Waves ehf
2014-01-31mgcp/rtp: Compute delta timestamp based on wallclockJacob Erlbeck1-8/+8
Currently, when the SSRC changes within a stream and SSRC fixing is enabled, the RTP timestamp between the last packet that has been received with the old SSRC and the first packet of the new SSRC is always incremented by one packet duration. This can lead to audio muting (at least with the nanoBTS) when the wallclock interval between these packets is too large (> 1s). This patch changes the implementation to base the RTP timestamp offset on the wallclock interval that has passed between these two packets. Ticket: OW#466 Sponsored-by: On-Waves ehf
2014-01-31mgcp/rtp: Fix transit computation unitsJacob Erlbeck1-116/+116
Currently micro-secs and RTP rate get mixed when the transit value is computed in mgcp_patch_and_count(). This patch changes get_current_ts() to accept the desired rate as argument and to use it for the time conversion instead of always converting to microseconds. If microseconds are needed, get_current_ts(1000) can be used. The arrival_time is now measured in 1/rtp_end->rate seconds so that it can be directly compared to RTP timestamps as required by RFC3550 (section 6.4.1, see definition of 'interarrival jitter'). Sponsored-by: On-Waves ehf
2014-01-31mgcp/test: Fake wallclock for RTP timing/stats testsJacob Erlbeck2-0/+184
Currently the stats (jitter, transit) cannot be checked properly, since they depend on the wallclock time. This patch fakes clock_gettime (CLOCK_MONOTONIC) to reflect the scheduling time of the RTP packets. In addition, the RTP statistical value are written to stdout. A RTP test case with a SSRC change along with a reference time delay has been added. Sponsored-by: On-Waves ehf
2014-01-31mgcp/test: Only include conn_mode into test outputJacob Erlbeck2-15/+24
Currently the conn_mode and the output_enabled flags are printed to stdout. This patch modifies this to print the output_enabled flags to stderr instead. The bits in conn_mode are shown as RECV, SEND, and LOOP. This does not reduce the significance of the test, since there is an assertion already that verifies the values of the output_enabled flags with respect to the conn_mode. Sponsored-by: On-Waves ehf
2014-01-20nat: Make the access-list deny cause configurableHolger Hans Peter Freyther1-0/+38
Add two optional arguments to the imsi-deny rule for the reject cause and verify that it is saved out.
2014-01-20nat: Introduce reject cause to bsc_nat_acc_lst_entryHolger Hans Peter Freyther1-1/+102
The filtering architecture already allowed to specify a reject reason but this has not been used for the access-lists. Extend the access-list to include a reject reason and extend the test case to honor it.