This stress test is based on the basiccall Project Modification of resiprocate 1.5 and passes the resiprocate 1.5 proxy test. In theory, it should also be able to perform stress tests on other proxies.
How to Use
1. Download resiprocate 1.5
2. Slave nodes/Resiprocate-1.5/resip/dum/test
3. Compile and run the basiccall Project
Notes:
1. If you use the resiprocate proxy, pay attention to several parameters.
Char * domains = "192.168.1.101 ";
Char * interfaces = "SIP: 192.168.1.101: 5060; timer-c = 2; Transport = UDP ";
Int nochallenge = true;
2. Currently, 10 lines are tested at the same time by default, which can be modified.
Const int linecount = 10;
Set several lines for simultaneous testing.
3. Handle the onfailure of testinvitesessionhandler and comment out the throw.
Fail is normal during stress testing and has no effect. Attention to fail can be placed in the critical test.
4. If the resiprocate repro is used as the proxy and the stress testing program is on the same computer as the proxy, add the following code in the sipstack constructor of proxy and UA.
For (INT I = 0; I <20; I ++)
Mports. insert (12000 + I );
5. the SDP Parsing bug occurs several times during the test. If you have this problem, you can refer to the following changes:
Set the fixed SDP
"
V = 0/R/N"
"O = 1900 369696545
369696545 in ip4 192.168.2.15/R/N"
"S = x-lite/R/N"
"C = in ip4
192.168.2.15/R/N"
"T = 0 0/R/N"
& Quot; M = audio 8000
RTP/AVP 8 3 98 97 101/R/N"
"A = rtpmap: 8
PCMA/8000/R/N"
"A = rtpmap: 3
GSM/8000/R/N"
"A = rtpmap: 98
Ilbc/R/N"
"A = rtpmap: 97
Speex/8000/R/N"
"A = rtpmap: 101
Telephone-event/8000/R/N"
"A = fmtp: 101 0-15/R/n
"
Common in practice
SDP
"V = 0/R/N"
"O = u As 12345 0 in
Ip4 192.168.1.100/R/N"
"S = stress_testing/R/N"
"C = in ip4
192.168.1.100/R/N"
"T = 0 0/R/N"
& Quot; M = audio 16002
RTP/AVP 0 96/R/N"
"A = rtpmap: 0
PCMU/8000/R/N"
"A = rtpmap: 96
Telephone-event/8000/R/N"
"A = fmtp: 96
0-11/R/N"
6. added a Thread class for fast processing of each UA and Dum to avoid the continuous growth of the re-sending package and proxy memory caused by the delay processing originally placed in a while loop.
PS. If you have any questions, please send an email to lidongshen at gmail.com
Update 2009-7-30 by SLD
The stress testing program is stable. After debugging for a month. The rated maximum number of concurrent tests is 10. Currently, every UA is put into a thread. Therefore, 20 threads are required for 10 concurrent tests, and 10 concurrent threads are sufficient to meet the general stress testing requirements. With Wireshark, all the calls are perfect. It was previously done in a loop. When the number of concurrent jobs is large, it is easy to resend, as well as the fail of registration and invitesession.
Update 2009-8-12 by SLD
Some modifications have been made during this period. There are many details about the changes, and most of them are information output and process control. We will not update the changes. You can see that the changes need to be made, in addition, it is worth reminding that the Register can be sent once, and then the handler will automatically send
Currently
CPU 230 @ 1.6 GHz
Single-core, 1 gb ram testing, and 5-way stress testing
In 30 hours, the memory for 80 thousand calls linearly increased to (actual memory: 450 MB, virtual memory: 450 MB). The CPU usage fluctuates from 3% to 5%, which is satisfactory.
So far, the company's resiprocate0.9-based proxy I updated to the latest version based on resiprocate, after a rigorous stress test and critical testing, it is a pass, sweat ~
Update 2009-8-19 by SLD
The current test score is
Proxy stress test score Duration: 157 hours 322900 call + 5 tests
Hardware
CPU 230 @ 1.6 GHz Single Core
Ram 1g
Because the memory is limited, or the performance is higher, some minor memory leaks, the memory will grow linearly with time, but it cannot be seen in normal use.