Future Direction - RestComm/webrtc-test GitHub Wiki

We've been in discussions with the team about the most efficient & scalable way to tackle webrtc testing and decided to go using a different route than the current webrtc-test tool that uses a browser for the testing. Reason for that is that our browser tests have shown that they don't scale very well so in order to get a realistic load test scenario going you would need a lot of EC2 machines, which isn't very effective.

Instead we decided to go with a browser-less approach where we would port our existing Restcomm Android WebRTC SDK to work on GNU/Linux. This entitles roughly:

  • Building the Google WebRTC library for Linux
  • Porting the Android parts of the Restcomm Android SDK to Java for Linux
  • Ironing out any other issues so that we are able to actually use SDK on the Linux platform.

Once that is done we would be able to make audio/video calls using SIP for signaling and WebRTC for media in a, hopefully, much more scalable manner since all the browser overhead will be taken out of the picture.

So roughly I'd say the following, more detailed, steps are involved:

  1. Layer 0: Get Google WebRTC library built for linux. You should end up with an dynamic .so library or static .a library. This provides low level C/C++ APIs. Hopefully, there should be sample Apps by Google to use so that you verify that the built library works without issues and try audio/video calls with it.

  2. Layer 1: Provide a Java layer on top of the C/C++ that will use JNI to talk to the lower level API of layer 0 and in turn expose an easier to use API for our higher level components to 'sit' on. Hopefully there should already be open source implementations out there in Java that would do that. If not, maybe we could reuse the code Google has for Android and do the porting from Android Java -> non Android Java, used in Linux and all other platforms (hopefully it shouldn't be much). Again once we have this ready would be nice to verify by using a Sample App to test everything. For example the AppRTCDemo of Google could be used with a little tweaking.

  3. Layer 2: This we already have and is the Restcomm Android SDK implementation.We will have to port it though since dependencies will likely change and also the asynchronous facilities for the communication of main thread with signaling thread, use Android specific facilities (like Handlers, etc). Once that is ready we should be able to actually use a linux native application to verify the whole thing ;) and then be ready for high level testing facilities. Notice that I haven't put low level signaling in the picture because Telestax already provides a ready to use java library, ready to be used for the linux platform, so it should be pretty easy to integrate