[asterisk-dev] [Code Review] Mapping of extension states

Russell Bryant russell at digium.com
Tue Jun 30 13:46:42 CDT 2009



> On 2009-06-30 12:31:16, Russell Bryant wrote:
> > Does the output from your test remain the same after these changes?  I actually expected it to change a bit.
> 
> Russell Bryant wrote:
>     Specifically, I just made a change in this code in trunk to make "Unknown" map to "Unavailable".
>     
>     I suppose that may have actually been in a different part of the code.  Regardless, I think we should get the states between 1.4 and trunk in sync, because I don't think they are right now.
>     
>     Here are the instances that I would have expected to be different on a first pass.  Whether any version does this, we'll see...
>     
>      Exten:          Idle Dev1:     Unknown	Dev2:     Unknown
>       -> Unavailable
>     
>      Exten:          Idle Dev1:     Invalid	Dev2:     Unknown
>       -> Unavailable
>     
>      Exten:          Idle Dev1: Unavailable	Dev2:     Unknown
>       -> Unavailable
>     
>      Exten:          Idle Dev1:     Unknown	Dev2:     Invalid
>       -> Unavailable
>     
>      Exten:          Idle Dev1:     Unknown	Dev2: Unavailable
>       -> Unavailable
> 
> David Vossel wrote:
>     Ahh yes, you are correct.  This will be fixed shortly.  My plan is to get it right in 1.4 and merge the exact same logic into trunk/1.6.x so every branch will have the same behavior.  As it is now, all the branches behave differently and in some cases incorrectly.

Also, here is one more idea for the test.

You're actually testing 2 things here:

1) The determination of the overall device state from 1 or more device state values.

2) The mapping between a device state and an extension state.

My suggestion would be to add one more column to the test output that shows the combined device state from the two specified.  This is just the aggregate result.


- Russell


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.digium.com/r/301/#review913
-----------------------------------------------------------


On 2009-06-30 11:04:07, David Vossel wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.digium.com/r/301/
> -----------------------------------------------------------
> 
> (Updated 2009-06-30 11:04:07)
> 
> 
> Review request for Asterisk Developers and Mark Michelson.
> 
> 
> Summary
> -------
> 
> Mapping extension states is tricky.  This patch fixes a few issues with incorrect extension states and adds a cli command to display all possible state mappings.  Look at the test output below and confirm each mapped extension state for the two device states is as expected.
> 
> 
> This addresses bug 15413.
>     https://issues.asterisk.org/view.php?id=15413
> 
> 
> Diffs
> -----
> 
>   /branches/1.4/include/asterisk/devicestate.h 204194 
>   /branches/1.4/include/asterisk/pbx.h 204194 
>   /branches/1.4/main/devicestate.c 204194 
>   /branches/1.4/main/pbx.c 204194 
> 
> Diff: http://reviewboard.digium.com/r/301/diff
> 
> 
> Testing
> -------
> 
> 
>  Exten:          Idle Dev1:     Unknown	Dev2:     Unknown
>  Exten:          Idle Dev1:  Not in use	Dev2:     Unknown
>  Exten:         InUse Dev1:      In use	Dev2:     Unknown
>  Exten:          Busy Dev1:        Busy	Dev2:     Unknown
>  Exten:          Idle Dev1:     Invalid	Dev2:     Unknown
>  Exten:          Idle Dev1: Unavailable	Dev2:     Unknown
>  Exten:       Ringing Dev1:     Ringing	Dev2:     Unknown
>  Exten: InUse&Ringing Dev1:  Ring+Inuse	Dev2:     Unknown
>  Exten:          Hold Dev1:     On Hold	Dev2:     Unknown
>  Exten:          Idle Dev1:     Unknown	Dev2:  Not in use
>  Exten:          Idle Dev1:  Not in use	Dev2:  Not in use
>  Exten:         InUse Dev1:      In use	Dev2:  Not in use
>  Exten:          Busy Dev1:        Busy	Dev2:  Not in use
>  Exten:          Idle Dev1:     Invalid	Dev2:  Not in use
>  Exten:          Idle Dev1: Unavailable	Dev2:  Not in use
>  Exten:       Ringing Dev1:     Ringing	Dev2:  Not in use
>  Exten: InUse&Ringing Dev1:  Ring+Inuse	Dev2:  Not in use
>  Exten:          Hold Dev1:     On Hold	Dev2:  Not in use
>  Exten:         InUse Dev1:     Unknown	Dev2:      In use
>  Exten:         InUse Dev1:  Not in use	Dev2:      In use
>  Exten:         InUse Dev1:      In use	Dev2:      In use
>  Exten:          Busy Dev1:        Busy	Dev2:      In use
>  Exten:         InUse Dev1:     Invalid	Dev2:      In use
>  Exten:         InUse Dev1: Unavailable	Dev2:      In use
>  Exten: InUse&Ringing Dev1:     Ringing	Dev2:      In use
>  Exten: InUse&Ringing Dev1:  Ring+Inuse	Dev2:      In use
>  Exten:         InUse Dev1:     On Hold	Dev2:      In use
>  Exten:          Busy Dev1:     Unknown	Dev2:        Busy
>  Exten:          Busy Dev1:  Not in use	Dev2:        Busy
>  Exten:          Busy Dev1:      In use	Dev2:        Busy
>  Exten:          Busy Dev1:        Busy	Dev2:        Busy
>  Exten:          Busy Dev1:     Invalid	Dev2:        Busy
>  Exten:          Busy Dev1: Unavailable	Dev2:        Busy
>  Exten: InUse&Ringing Dev1:     Ringing	Dev2:        Busy
>  Exten: InUse&Ringing Dev1:  Ring+Inuse	Dev2:        Busy
>  Exten:          Busy Dev1:     On Hold	Dev2:        Busy
>  Exten:          Idle Dev1:     Unknown	Dev2:     Invalid
>  Exten:          Idle Dev1:  Not in use	Dev2:     Invalid
>  Exten:         InUse Dev1:      In use	Dev2:     Invalid
>  Exten:          Busy Dev1:        Busy	Dev2:     Invalid
>  Exten:   Unavailable Dev1:     Invalid	Dev2:     Invalid
>  Exten:   Unavailable Dev1: Unavailable	Dev2:     Invalid
>  Exten:       Ringing Dev1:     Ringing	Dev2:     Invalid
>  Exten: InUse&Ringing Dev1:  Ring+Inuse	Dev2:     Invalid
>  Exten:          Hold Dev1:     On Hold	Dev2:     Invalid
>  Exten:          Idle Dev1:     Unknown	Dev2: Unavailable
>  Exten:          Idle Dev1:  Not in use	Dev2: Unavailable
>  Exten:         InUse Dev1:      In use	Dev2: Unavailable
>  Exten:          Busy Dev1:        Busy	Dev2: Unavailable
>  Exten:   Unavailable Dev1:     Invalid	Dev2: Unavailable
>  Exten:   Unavailable Dev1: Unavailable	Dev2: Unavailable
>  Exten:       Ringing Dev1:     Ringing	Dev2: Unavailable
>  Exten: InUse&Ringing Dev1:  Ring+Inuse	Dev2: Unavailable
>  Exten:          Hold Dev1:     On Hold	Dev2: Unavailable
>  Exten:       Ringing Dev1:     Unknown	Dev2:     Ringing
>  Exten:       Ringing Dev1:  Not in use	Dev2:     Ringing
>  Exten: InUse&Ringing Dev1:      In use	Dev2:     Ringing
>  Exten: InUse&Ringing Dev1:        Busy	Dev2:     Ringing
>  Exten:       Ringing Dev1:     Invalid	Dev2:     Ringing
>  Exten:       Ringing Dev1: Unavailable	Dev2:     Ringing
>  Exten:       Ringing Dev1:     Ringing	Dev2:     Ringing
>  Exten: InUse&Ringing Dev1:  Ring+Inuse	Dev2:     Ringing
>  Exten: InUse&Ringing Dev1:     On Hold	Dev2:     Ringing
>  Exten: InUse&Ringing Dev1:     Unknown	Dev2:  Ring+Inuse
>  Exten: InUse&Ringing Dev1:  Not in use	Dev2:  Ring+Inuse
>  Exten: InUse&Ringing Dev1:      In use	Dev2:  Ring+Inuse
>  Exten: InUse&Ringing Dev1:        Busy	Dev2:  Ring+Inuse
>  Exten: InUse&Ringing Dev1:     Invalid	Dev2:  Ring+Inuse
>  Exten: InUse&Ringing Dev1: Unavailable	Dev2:  Ring+Inuse
>  Exten: InUse&Ringing Dev1:     Ringing	Dev2:  Ring+Inuse
>  Exten: InUse&Ringing Dev1:  Ring+Inuse	Dev2:  Ring+Inuse
>  Exten: InUse&Ringing Dev1:     On Hold	Dev2:  Ring+Inuse
>  Exten:          Hold Dev1:     Unknown	Dev2:     On Hold
>  Exten:          Hold Dev1:  Not in use	Dev2:     On Hold
>  Exten:         InUse Dev1:      In use	Dev2:     On Hold
>  Exten:          Busy Dev1:        Busy	Dev2:     On Hold
>  Exten:          Hold Dev1:     Invalid	Dev2:     On Hold
>  Exten:          Hold Dev1: Unavailable	Dev2:     On Hold
>  Exten: InUse&Ringing Dev1:     Ringing	Dev2:     On Hold
>  Exten: InUse&Ringing Dev1:  Ring+Inuse	Dev2:     On Hold
>  Exten:          Hold Dev1:     On Hold	Dev2:     On Hold
> 
> 
> Thanks,
> 
> David
> 
>




More information about the asterisk-dev mailing list