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/
