[asterisk-dev] [Code Review] Add unit tests for jitterbuf.c

Mark Michelson reviewboard at asterisk.org
Wed Mar 14 13:31:19 CDT 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1815/#review5814
-----------------------------------------------------------

Ship it!


The factoring of common elements is a good start, but I was thinking even grander than what you had done.

For instance, examine the nominal voice and nominal control tests. They both call jb_new, call test_jb_populate_config, call jb_setconf, put the same number of frames with the same timestamps into the jitterbuffer, then pull the same number of frames back out and call JB_NUMERIC_TEST with the same values, then call jb_getinfo, and then finally have a bunch of calls to JB_NUMERIC_TEST again testing the same values. The only things that differ in these tests are the output of JB_TEST_BEGIN and the type of frame put into the jitterbuffer. You've factored out the portion that places the frames into the jitterbuffer, but I was thinking that essentially the ENTIRE test could be factored out since it's just the same thing being repeated twice.

So the nominal voice test would consist of the initial switch (cmd) statement to get things set up, and then just a function call to something like test_nominal("jitterbuffer_nominal_voice_frames", JB_TYPE_VOICE). The nominal control test would consist of the initial switch (cmd) statement to get things set up, and then just a function call to something like test_nominal("jitterbuffer_nominal_control_frames", JB_TYPE_CONTROL);

That being said, I'll give a "ship it" because it's not critically important.

- Mark


On March 14, 2012, 9:22 a.m., Matt Jordan wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1815/
> -----------------------------------------------------------
> 
> (Updated March 14, 2012, 9:22 a.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> This patch adds unit tests to cover major functions in jitterbuf.c.  This include jb_put, jb_get, jb_next, as well as general information and statistic gathering.  The scenarios include:
> 
> 1) Nominal - adding voice/control frames and making sure that all added frames are removed and in the correct time slots
> 2) Out of Order - some voice/control frames arrive out of order with respect to the previous frame.  The tests check that when reading from the jitter buffer, the frames are reordered
> 3) Lost - some voice/control frames never arrive.  In the case of voice, the jitter buffer should interpolate the frame; in the case of control, the jitter buffer should report that no frame exists at that time slot
> 4) Late - the arrival time of some voice/control frames does not occur at the same rate as surrounding frames
> 5) Resync - test that voice/control frames that break the resync threshold trigger a resync of the jitter buffer
> 6) Overflow - test that adding voice/control frames that exceed the maximum time length of the buffer are dropped
> 
> This change was prompted by https://reviewboard.asterisk.org/r/1814 - not all tests will pass without that patch.  
> 
> 
> This addresses bug ASTERISK-18964.
>     https://issues.asterisk.org/jira/browse/ASTERISK-18964
> 
> 
> Diffs
> -----
> 
>   /trunk/tests/test_jitterbuf.c PRE-CREATION 
> 
> Diff: https://reviewboard.asterisk.org/r/1815/diff
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Matt
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120314/0369f518/attachment.htm>


More information about the asterisk-dev mailing list