restcomm / webrtc-test Goto Github PK
View Code? Open in Web Editor NEWFramework for functional and Load Testing of WebRTC
Home Page: http://www.restcomm.com/
License: GNU Affero General Public License v3.0
Framework for functional and Load Testing of WebRTC
Home Page: http://www.restcomm.com/
License: GNU Affero General Public License v3.0
When making lengthy load tests we have seen that some times the browsers after a while start getting slower to process requests and the tabs aren't re-spawned on time to handle the calls directed to them.
Not sure if that i a browser issue or some issue in the code of the web app
Or expose a verbose level because right now it's a bit hard to follow the logs.
Please refer to RestComm/restcomm-web-sdk#75
Notice that this is how we need it in the beginning, but for some reason it didn't seem to scale that well with more than 10-20 browsers, which is why we changed it, drive the browsers from webrtc-test.py and add more logic to the test web-app.
Having Selenium working would make it easier to work more easily with supported browsers, easier to get logs per browser tab and printing out statistics for the calls from within webrtc-test.py
Please refer to RestComm/restcomm-web-sdk#36
Please refer to RestComm/restcomm-web-sdk#48
Please refer to RestComm/restcomm-web-sdk#52
Please refer to RestComm/restcomm-web-sdk#49
Please refer to RestComm/restcomm-web-sdk#60
Right now Restcomm is assumed for the provisioning
Please refer to RestComm/restcomm-web-sdk#55
Please refer to RestComm/restcomm-web-sdk#51
Please refer to RestComm/restcomm-web-sdk#58
Please refer to RestComm/restcomm-web-sdk#38
Please refer to RestComm/restcomm-web-sdk#66
Please refer to RestComm/restcomm-web-sdk#53
Please refer to RestComm/restcomm-web-sdk#68
Please refer to RestComm/restcomm-web-sdk#41
I reproduced this when load testing 50 concurrent calls (i.e. having 50 browser tabs registered with Restcomm and receiving calls). With 20 it is not reproducible.
Analysis:
Sipp starts sending SIP requests
The browser webrtc clients start answering, but it seems that overtime 200 OK sent by the clients are delayed reaching more thatn 30 secs at which point Restcomm times out and CANCELs the calls towards the clients, which in turn terminate the call prematurely
I don't see too much load on the browser (no swapping, no excess waiting on I/O, memory and CPU consumption seem normal) that would explain it. And some webrtc client side errors seem irrelevant to that behaviour
Notice that I tried originally hosting the headless browsers in EC2 with magnetic HD and the issue occurred as follows. The delay from receiving INVITE until sending back 200 OK starts at ~5 seconds (delay to answer included) in the first call, 12 seconds in the 5th call, 19 seconds in the 10th call and so on until Restcomm times out.
I then tried general purpose SSD and seems that it occurs less. delay from receiving INVITE until sending back 200 OK starts at ~5 seconds (delay to answer included) in the first call, 7 seconds in the 5th call, 9 seconds in the 10th call and so on until Restcomm times out. But still there's an issue.
Please refer to RestComm/restcomm-web-sdk#31
Please refer to RestComm/restcomm-web-sdk#57
Please refer to RestComm/restcomm-web-sdk#56
Please refer to RestComm/restcomm-web-sdk#50
Please refer to RestComm/restcomm-web-sdk#59
Please refer to RestComm/restcomm-web-sdk#34
Please refer to RestComm/restcomm-web-sdk#81
Please refer to RestComm/restcomm-web-sdk#35
Please refer to RestComm/restcomm-web-sdk#43
Please refer to RestComm/restcomm-web-sdk#45
Please refer to RestComm/restcomm-web-sdk#61
Please refer to RestComm/restcomm-web-sdk#54
Check out https://github.com/webrtc/testrtc/tree/master/test
There's a lot of interesting stuff there ;)
Which results in some packets being lost, which means some browser tabs fail to re-open and service calls from that point on
Seems that either browser fails to send the ajax message properly to the test tool to respawn, or the test tool cannot handle the load, which is why it happens 5 cps. the ajax messages from the browser are sent in bursts of 5.
Even when improving the 'respawn' thread to handle requests in threads and increasing the socket receive buffer length, there are still cases where the http server is unable to process some incoming browser messages sporadically
Check RestComm/restcomm-web-sdk#74 for earlier activities
Please refer to RestComm/restcomm-web-sdk#39
Please refer to RestComm/restcomm-web-sdk#37
Have opened RestComm/Restcomm-Connect#907 on Restcomm to aid in that because currently it's tedious to implement in webrtc-test.py
Please refer to RestComm/restcomm-web-sdk#64
Please refer to RestComm/restcomm-web-sdk#46
Please refer to RestComm/restcomm-web-sdk#33
Please refer to RestComm/restcomm-web-sdk#76
Please refer to RestComm/restcomm-web-sdk#67
Please refer to RestComm/restcomm-web-sdk#44
This means that we can't test headlessly with https with Firefox
We have already fixed that for Chrome with RestComm/restcomm-web-sdk@2324ef1, but need to fix for Firefox as well. For firefox I haven't found a flag and I think it happens through preferences which is an issue. Will investigate more
Please refer to RestComm/restcomm-web-sdk#47
Please refer to RestComm/restcomm-web-sdk#40
Please refer to RestComm/restcomm-web-sdk#77
Please refer to RestComm/restcomm-web-sdk#42
For now I have added logging in webrtc-client.html that we use for load test, but we need to enhance RestCommWebClient.js so that all WebRTComm events that are forwarded to RCDevice/RCConnection objects are logged together with their paramaters
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.