110 likes | 266 Views
Automated Test Framework for SIP Elements SIP Protocol Compliance. Motivation. SIP is complex Many distributed components Features interact Extreme Programming Frequent integration / releases Continuous / Automated testing SIP is open – many 3 rd party components. Goals of the Framework.
E N D
Automated Test Framework for SIP ElementsSIP Protocol Compliance
Motivation • SIP is complex • Many distributed components • Features interact • Extreme Programming • Frequent integration / releases • Continuous / Automated testing • SIP is open – many 3rd party components
Goals of the Framework • Rapid test execution / verification • Test protocol compliance • Support rapid production of test suites • Translation from calls flows to executable • Robust to variation in timing/parallelism • Incorporate provisioning • Programmer friendly • Can be completely automated • Open to manual endpoint operation • Tests can be realized by non-programmers
Automated Write tests quickly Parallel events Easy to elaborate Provisioning Embedded Proxy Negative tests Retransmissions Useful feedback on failure Full compliance with 3261 and many drafts UDP,TCP,TLS S/MIME Portable to other stacks Features
Simple Example WarningLog(<<"*!testRegisterBasic!*"); TestUser jason(Uri("sip:jason@localhost"), "jason", "jason"); Seq(jason.registerUser(60, jason.getDefaultContacts()), jason.expect(REGISTER/407,from(proxy),WaitForResponse,jason.digestRespond()), jason.expect(REGISTER/200, from(proxy), WaitForResponse, jason.noAction()), WaitForEndOfTest); ExecuteSequences();
Expect Actions invite, subscribe, ring, ring183, ack ackReferred, bye, ok, cancel send404, send486, send487, send202, etc. notify200, send100, digestRespond, etc. reinvite, note, inviteReferReplaces, pause,Chain Provisioning Endpoints, Hunt Groups, etc. Forwarding rules Dial Plans Companies Actions register, invite, notify, subscribe, Chain Predicates from, messageType, timely, Chain Primitives
Primitives Contd. • Custom actions • Parameter validation • Extended header validation • Conditioners • Insert/modify parameters and headers on the fly • Free-form messages • For doing torture tests • Message retransmissions
Development Process • Build up tests against known bugs, tricky cases • Write a test before developing a new feature • Build up library of actions, predicates • Translate RFC call flows • Add an automated test whenever a bug is found – then fix the bug. • Programmers run automated tests everyday