<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/2021/">https://reviewboard.asterisk.org/r/2021/</a>
     </td>
    </tr>
   </table>
   <br />








<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On July 23rd, 2012, 1:15 p.m., <b>Mark Michelson</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://reviewboard.asterisk.org/r/2021/diff/2/?file=30188#file30188line13" style="color: black; font-weight: bold; text-decoration: underline;">/asterisk/trunk/tests/funcs/func_jitterbuffer/configs/ast1/extensions.conf</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">13</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        same =&gt; n,GoSubIf($[${CuRRENT_TEST_TYPE}=default_jb]?default_jb:)</pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">You&#39;ve got a stray lowercase &#39;u&#39; in &quot;CuRRENT_TEST_TYPE&quot;. This means that default_jbs are never being set up.

If the test is still passing despite this typo, I think that demonstrates a flaw in the test procedure. Specifically, there is nothing to ensure that you are receiving the test events you expect to be receiving. Receiving correct test events and receiving no test events both result in the test passing. You should modify the test to keep a counter of the test events received to ensure that a jitter buffer actually gets set up and that it sends the expected number of test events.</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Shockingly, this actually works as intended:

[Jul 23 13:25:19] VERBOSE[6890][C-00000001] pbx.c:     -- Executing [s@sippeer:1] NoOp(&quot;SIP/ast1-00000001&quot;, &quot;&quot;) in new stack
[Jul 23 13:25:19] VERBOSE[6890][C-00000001] pbx.c:     -- Executing [s@sippeer:2] GosubIf(&quot;SIP/ast1-00000001&quot;, &quot;1?default_jb:&quot;) in new stack
[Jul 23 13:25:19] VERBOSE[6890][C-00000001] pbx.c:     -- Executing [s@sippeer:7] NoOp(&quot;SIP/ast1-00000001&quot;, &quot;&quot;) in new stack
[Jul 23 13:25:19] VERBOSE[6890][C-00000001] pbx.c:     -- Executing [s@sippeer:8] Set(&quot;SIP/ast1-00000001&quot;, &quot;JITTERBUFFER(adaptive)=default)&quot;) in new stack
[Jul 23 13:25:19] VERBOSE[6890][C-00000001] pbx.c:     -- Executing [s@sippeer:9] Return(&quot;SIP/ast1-00000001&quot;, &quot;&quot;) in new stack

This is actually disconcerting, as the information on wiki.asterisk.org implies that variables are case sensitive.  Googling turns this nugget up from voip-info:

&quot;A variable name may be any alphanumeric string beginning with a letter. User-defined variable names are not case sensitive — ${FOO} and ${Foo} refer to the same variable — but Asterisk-defined variables are case-sensitive — ${EXTEN} works, but ${exten} doesn&#39;t.&quot;

So, uhm... hooray?

When this has all the DTMF cruft in with it, a TestEvent ensured that the JitterBuffer was set up on the channel with the expected parameters.  The refactoring that had been done made it easy to put in a TestEvent with all of the JitterBuffer parameters - with that gone now, that isn&#39;t as trivial to do.  Instead, I can listen for a VarSet event to verify that some JitterBuffer has been set on the SIP channel.

This was happening, but an event should ensure that the test fails in case it ever doesn&#39;t happen.
</pre>
<br />

<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On July 23rd, 2012, 1:15 p.m., <b>Mark Michelson</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="https://reviewboard.asterisk.org/r/2021/diff/2/?file=30190#file30190line106" style="color: black; font-weight: bold; text-decoration: underline;">/asterisk/trunk/tests/funcs/func_jitterbuffer/run-test</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">106</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        if &#39;TestResult&#39; in event[&#39;userevent&#39;]:</pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">107</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">            LOGGER.debug(&#39;Received TestResult with result %s&#39; % event[&#39;result&#39;])</pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">108</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">            if (event[&#39;result&#39;] == &#39;fail&#39;):</pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">109</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                LOGGER.error(&#39;Received failure result, failing test&#39;)</pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">110</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                self.stop_reactor()</pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">111</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                return</pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I imagine this may be cruft left over from when this was testing DTMF jitterbuffers, but the TestResult user event will never have a result of &quot;fail&quot;. You might as well just go straight into self._launch_talk_detect() when you receive a TestResult event, and you might as well just remove the result field from the event altogether.</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Agreed.</pre>
<br />




<p>- Matt</p>


<br />
<p>On July 12th, 2012, 1:30 p.m., Matt Jordan wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By Matt Jordan.</div>


<p style="color: grey;"><i>Updated July 12, 2012, 1:30 p.m.</i></p>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This adds a new test to the Asterisk Test Suite that covers the JITTERBUFFER function.  This includes tests for the following:

* JITTERBUFFER(type)=default
* JITTERBUFFER(type)=max_size,resync,target_extra

The variants in each test are:

type =&gt; adaptive or fixed jitter buffers
max_size =&gt; default, 1000, 2000
target_extra =&gt; default, 10, 50
resync =&gt; default, 2000, 500

For each test, the following are checked:

* The JITTERBUFFER function creates a jitter buffer with the specified properties
* That voice are streamed properly through a jitter buffer.  This uses the Record application, allong with BackgroundDetect for the recorded voice files.

This patch also groups all function tests under a new folder, &quot;funcs&quot;</pre>
  </td>
 </tr>
</table>





<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/asterisk/trunk/tests/funcs/func_jitterbuffer/configs/ast1/extensions.conf <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/asterisk/trunk/tests/funcs/func_jitterbuffer/configs/ast1/sip.conf <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/asterisk/trunk/tests/funcs/func_jitterbuffer/run-test <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/asterisk/trunk/tests/funcs/func_jitterbuffer/talking.ulaw <span style="color: grey">(UNKNOWN)</span></li>

 <li>/asterisk/trunk/tests/funcs/func_jitterbuffer/test-config.yaml <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/2021/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>