Interest in a Janus stress testing tool?

1,253 views
Skip to first unread message

Marshall Quander

unread,
Dec 8, 2017, 4:06:04 PM12/8/17
to meetecho-janus
Internally I've been stress testing Janus a lot over the past few weeks to try to test and reproduce problems with the refcount branch. The tool I'm using to stress test it is over here: https://github.com/mozilla/janus-plugin-sfu/blob/master/client/squawkers-cli.js

Basically it is a Node app that spawns a bunch of headless browsers, and the browsers try to connect and send some stuff. It's pretty ad-hoc and it's currently specific to my plugin, so it's not really something that someone else would want to grab and use. But, I could do the following:

- Package it up nicely
- Make it work against something like the echo test plugin
- Add tools to record tests, help analyze the result on both the server and client side and understand what stuff happened in what order, with what throughput, etc.

If I did this, would other people find it valuable? Would you guys be interested in using it to test Janus core? So far I've found a number of things that seem like bugs by running this tool.

Mirko Brankovic

unread,
Dec 9, 2017, 4:55:06 AM12/9/17
to meetecho-janus
This id quite interesting

--
You received this message because you are subscribed to the Google Groups "meetecho-janus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to meetecho-janus+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Mirko Brankovic

unread,
Dec 9, 2017, 5:08:54 AM12/9/17
to meetecho-janus
thanks for sharing ;)

Anand Setlur

unread,
Dec 9, 2017, 11:40:20 AM12/9/17
to meetecho-janus
It sounds very useful. If you can also track the media setup time from the time the handle creation request succeeded to when the media session with the janus plugin gets established, that would be a very useful metric to consider and plot.

Thanks for offering to clean up and share your project. Also, do let us know what class of bugs you uncovered in janus core and plugins as part of your stress testing.

Lorenzo Miniero

unread,
Dec 11, 2017, 5:34:26 AM12/11/17
to meetecho-janus
Really interesting, thanks for sharing! That said, we already have our own setup to do stress testing. We worked a lot with Selenium in the past (and still do from time to time), and we also worked on our own command-line WebRTC stresser called Jattack (since browsers are heavy), although it's not open source at the moment. You can find some info on both in a couple of papers we wrote some time ago, https://janus.conf.meetecho.com/citeus

It would still be very useful for the community, though, so looking forward to what this might become when made more general purpose!

Lorenzo

Ron Sharp

unread,
Dec 11, 2017, 8:45:46 AM12/11/17
to meetecho-janus
Yes, I would be interested. I would need to adapt it to my plugin but mostly it is about sending and receiving audio and video traffic
like echotest.  Would you get the av from a file and just loop it?

Ron

Marshall Quander

unread,
Dec 13, 2017, 4:06:03 PM12/13/17
to meetecho-janus
Yeah, when I've been using it I just use any old audio or video files I have sitting around.

It seems like there's a little bit of interest, so I'll work on cleaning this up in the foreseeable future. (I would love to have that lighter-weight one you built, though :-)

Anand Setlur

unread,
Feb 12, 2019, 11:05:50 AM2/12/19
to meetecho-janus
Marshall,
I am very interested in your approach of spawning headless-chromium on the command-line not necessarily as a load-testing tool but as a full featured automated janus videoroom camera publisher where a human is not involved.
I took a look at your now defunct squawkers-cli.js script and how it is able to communicate with your rust janus.plugin.sfu plugin. Chromium doesn't support h264 and your plugin requires h264 video support which chrome provides but chromium does not.
Since I am a newbie in this area, I am asking for your help in reviving this tool, switch to chrome/firefox instead of chromium and generalize it to attach to one of janus's mainstream plugins (I am most interested in the janus.plugin.videoroom but even janus.plugin.echotest is a start).

I can struggle my way through adapting your sample for my needs but if you got me started down the right path, that would be super nice.

Thanks in advance
Anand


Anand Setlur

unread,
Feb 12, 2019, 5:54:46 PM2/12/19
to meetecho-janus
Marshall,
I found out just now that you can override the default chromium-browser by explicitly specifying  the executable that  puppeteer should use to launch the browser in squawkers-cli.js script and then  your plugin happily negotiates H264. Interesting!
  
const browser = await puppeteer.launch({
  executablePath: '/usr/bin/google-chrome-stable'
});

Anand Setlur

unread,
Feb 12, 2019, 11:58:52 PM2/12/19
to meetecho-janus


Hi Marshall,
I successfully hacked and repurposed your squawker-cli script to attach to janus.plugin.videoroom instead of janus.plugin.sfu. I am now able to use headless-chrome to stream a video source into a janus room using nodejs . Thanks again for the template even though it is no longer maintained by you


Regards,
Anand

Mirko Brankovic

unread,
Feb 13, 2019, 4:18:05 AM2/13/19
to meetecho-janus
are you able to share how to here on blog ? :)

Thanks,
Mirko

--
You received this message because you are subscribed to the Google Groups "meetecho-janus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to meetecho-janu...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.


--
Regards,
Mirko
Reply all
Reply to author
Forward
0 new messages