The following describes a work in progress. It is *not* at a state
where I can confidently hand it off for use by anybody else nor do I
claim it to be useful at this point. I am posting an intermediate
progress report so I can solicit early feedback and take corrective
measures if needed.


The problem at hand is that we dont have a good signaling regression
tester. To address this, I have been building a call flow emulator.
Here is what it does and here are some sample runs posted for your
comments:

The call flow emulator takes as input a merged.xml file and
ValidUsers.xml file and attempts to replay the call flow for the
endpoints of interest. The idea is that by replaying the call flow
successfully we can ensure that changes in signaling software preserve
the same end to end behavior when SIP messages are routed through
them.

Please take a look at the attached traces for an actual vs. emulated call flow.

Here is an actual call transfer (blind)
http://track.sipfoundry.org/secure/attachment/23432/merged.xml

Here is the emulated version of that call transfer :
http://track.sipfoundry.org/secure/attachment/23431/merged-emulated.xml

Here is a call transfer through sipxbridge to an ITSP :
http://track.sipfoundry.org/secure/attachment/23434/merged.xml

Here is its emulated version:
http://track.sipfoundry.org/secure/attachment/23433/merged-emulated.xml

Some salient points:

1. The emulator is trace driven. The idea is that no code should be
written for a test case. Only configuration, trace and mapping
information will be necessary.

2. The emulator is event ( not time) driven.

3. The emulator preserves causality. Each client transaction looks for
a "happens-before" set of events ( i.e. message arrivals ) on an
emulated node and fires off the client transaction if and only if that
set has been satisfied. A client transaction may be paired with one or
more server transactions that are emulated to provide the responses to
requests. Time delays will be added to this to allow transactions to
be spaced out in time. However, since we are actually running a sip
stack and not just doing blind replay, there could be some
retransmissions that are not part of the original trace.

4. The emulator emulates multiple interfaces in a single process.
Interfaces are all emulated as endpoints (i.e. as user agents). That
is, even if you wanted to emulate the interface between the proxy and
say sipxbridge, it would be emulated as an endpoint.

5. It is possible to emulate multiple interfaces concurrently.

Right now, I am not doing anything about component configuration as yet.

Is this all heading the right way or is it heading the way of the
albino pachyderm ?

Please let me know before I invest more time.

Thank you in advance for your comments.

Best regards and happy new year.


-- 
M. Ranganathan
_______________________________________________
sipx-dev mailing list [email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev
Unsubscribe: http://list.sipfoundry.org/mailman/listinfo/sipx-dev
sipXecs IP PBX -- http://www.sipfoundry.org/

Reply via email to