falconia has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/39559?usp=email )
Change subject: tests: add unit test for HRv1 TRAU->RTP ......................................................................
tests: add unit test for HRv1 TRAU->RTP
Unit tests for TRAU->RTP conversion for FRv1 and EFR codecs were implemented earlier, but not for HRv1. Fill this gap in unit test coverage.
The library code path exercised here is osmo_trau_frame_decode_8k() followed by osmo_trau2rtp(). Both plain (RFC 5993) and extended (TW-TS-002) RTP output formats are tested.
Change-Id: Id2703d313f52fa54465a13f3370ebb6d7d976bbd --- M tests/Makefile.am M tests/testsuite.at A tests/trau_conv/trau2rtp_hr.in A tests/trau_conv/trau2rtp_hr_std.ok A tests/trau_conv/trau2rtp_hr_twts002.ok 5 files changed, 103 insertions(+), 0 deletions(-)
Approvals: laforge: Looks good to me, but someone else must approve pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified fixeria: Looks good to me, approved
diff --git a/tests/Makefile.am b/tests/Makefile.am index d904241..4abfc4a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -92,6 +92,8 @@ trau_conv/trau16_efr_twts001.ok \ trau_conv/trau16_fr.in trau_conv/trau16_fr_std.ok \ trau_conv/trau16_fr_twts001.ok \ + trau_conv/trau2rtp_hr.in trau_conv/trau2rtp_hr_std.ok \ + trau_conv/trau2rtp_hr_twts002.ok \ trau_sync/trau_sync_test.ok trau_sync/trau_sync_test.err \ trau_pcu_ericsson/trau_pcu_ericsson_test.ok
diff --git a/tests/testsuite.at b/tests/testsuite.at index 70e7f25..291d47d 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -78,3 +78,15 @@ cat $abs_srcdir/trau_conv/trau16_efr_twts001.ok > expout AT_CHECK([$abs_top_builddir/tests/trau_conv/trau16_to_rtp $abs_srcdir/trau_conv/trau16_efr.in ul tw-ts-001], [0], [expout], [ignore]) AT_CLEANUP + +AT_SETUP([trau2rtp_hr_std]) +AT_KEYWORDS([trau2rtp_hr_std]) +cat $abs_srcdir/trau_conv/trau2rtp_hr_std.ok > expout +AT_CHECK([$abs_top_builddir/tests/trau_conv/trau2rtp_gen -8 $abs_srcdir/trau_conv/trau2rtp_hr.in], [0], [expout], [ignore]) +AT_CLEANUP + +AT_SETUP([trau2rtp_hr_twts002]) +AT_KEYWORDS([trau2rtp_hr_twts002]) +cat $abs_srcdir/trau_conv/trau2rtp_hr_twts002.ok > expout +AT_CHECK([$abs_top_builddir/tests/trau_conv/trau2rtp_gen -8 -x $abs_srcdir/trau_conv/trau2rtp_hr.in], [0], [expout], [ignore]) +AT_CLEANUP diff --git a/tests/trau_conv/trau2rtp_hr.in b/tests/trau_conv/trau2rtp_hr.in new file mode 100644 index 0000000..dcf33f8 --- /dev/null +++ b/tests/trau_conv/trau2rtp_hr.in @@ -0,0 +1,61 @@ +# This file is an input to trau2rtp_gen unit test program, containing +# TRAU-8k Abis-UL frames for TCH/HS. +# +# Most test frames in this set (all except a few hand-crafted ones) were +# taken from an E1-Abis UL capture from Nokia InSite BTS, specifically +# from hr-test2.bin E1 timeslot capture file posted here: +# +# https://osmocom.org/projects/retro-gsm/wiki/InSite_UL_captures +# +# The extraction of hex-encoded TRAU frames from the E1 timeslot octet stream +# capture was done with trau-hr-dump program (-r option) developed in this +# repository: +# +# https://www.freecalypso.org/hg/gsm-net-reveng/ + +# 2 good speech frames from the beginning of the call + +# Frame at 0xcf5e: +008846a6afdaf9a197a79d82b1efc4c9b8b0e4bb +# Frame at 0xcffe: +008844b78bdef8a8bd8da681abd6a2aabdf3e8fb + +# a pair of frames stolen for FACCH, the first of which falls on a TAF position + +# Frame at 0xd31e: +008970e480e5808081f180a180fc809881d084fb +# Frame at 0xd3be: +008964e48681808081f182eb80e78099eb9d89fb + +# some voiced speech frames + +# Frame at 0xdb3e: +00884694caaa89dc8083b89cc881e99a86adbebb +# Frame at 0xdbde: +008846e9e692c49bd1d3afac8aeec9f7a9d1efbb +# Frame at 0xdc7e: +00884789ff91c1bc93c7efca9f92c6f5a4b1f5fb +# Frame at 0xdd1e: +00884799ff82e09febd8aec895f4c2f1e1cfe8bb + +# a valid SID frame + +# Frame at 0x12c7e: +00885084dfddccdfffaffffffffffffffffffffb + +# an invalid SID frame + +# Frame at 0x133fe: +0089408799deb8ffffdffffffffffef5fffafffb + +# hand-crafted test frames follow + +# test handling of CRC: frames that begin like good speech, +# but the 115 bits of payload+CRC are either all-0 or all-1 +00884480808080808080808080808080808080bb +008847fffffffffffffffffffffffffffffffffb + +# good speech frame (copy of 0xdd1e) with XC6 flipped (parity error) +00884399ff82e09febd8aec895f4c2f1e1cfe8bb +# flip XC1 too: parity becomes good again, but the code is now undefined +008a4399ff82e09febd8aec895f4c2f1e1cfe8bb diff --git a/tests/trau_conv/trau2rtp_hr_std.ok b/tests/trau_conv/trau2rtp_hr_std.ok new file mode 100644 index 0000000..d017a87 --- /dev/null +++ b/tests/trau_conv/trau2rtp_hr_std.ok @@ -0,0 +1,14 @@ +00932FB5E509773A098EF8925C30C8 +001B8BBDE143DD4C055D644A9EF3D1 +NULL +NULL +008A4A5426E0037072401D26832D7C +00B4E62510DD135EB056E93DD4D1DE +00C4FF2305E137DF28F928DD5231EB +00CCFF0580FEB85D20AF485C70CFD0 +20025FBB32FFFFFFFFFFFFFFFFFFFF +NULL +NULL +NULL +NULL +NULL diff --git a/tests/trau_conv/trau2rtp_hr_twts002.ok b/tests/trau_conv/trau2rtp_hr_twts002.ok new file mode 100644 index 0000000..db65082 --- /dev/null +++ b/tests/trau_conv/trau2rtp_hr_twts002.ok @@ -0,0 +1,14 @@ +00932FB5E509773A098EF8925C30C8 +001B8BBDE143DD4C055D644A9EF3D1 +613200CA000011008407C00600D009 +6032060200001105AC067006759D13 +008A4A5426E0037072401D26832D7C +00B4E62510DD135EB056E93DD4D1DE +00C4FF2305E137DF28F928DD5231EB +00CCFF0580FEB85D20AF485C70CFD0 +20025FBB32FFFFFFFFFFFFFFFFFFFF +10 +70 +70 +70 +70