Load testing: Choosing between a tool or simulating clients on my own for this scenario? - testing

I want to load test my application and I'm deciding b/w choosing a load testing service or simulating the clients on my own.
My question is whether I can accomplish this user scenario using any of the load testing tools available.
My test will have two types of users, A & B. Communication would be between A and B. A-A communication and B-B communication is not there.
I want Users to login to my application through mobile or web. Either type of users could log in through either type of platform.
Make multiple GET/PUT/POST requests to my application server with specific parameters.
Be able to exchange video or text messages by integrating through services like Pusher and Vidyo.
'3' is probably the most important requirement for me, and I'm wondering if I could simulate the dummy users so that it listens to a pusher channel and can open up a Vidyo iframe in the emulated browser / mobile device for a specific pusher message?

I got on call with Blazemeter and turns out they or anyone in the market doesn't support plugins on emulated browsers. I finally simulated the clients on my own replicating all the server calls a typical browser or mobile device makes for my application.
I haven't yet been able to load test Vidyo and don't know if there's a way to do it except by opening up conferences manually.
I was able to load test services like Pusher and SQS successfully.

Related

Is it possible to save a video stream between two peers in webrtc in the server, realtime?

Suppose I have 2 peers exchanging video with webRTC. Now I need both of the streams to be saved as video files in the central server. Is is possible to do it realtime? (Storing/Uploading the video from peers is not an option).
I thought of making a 3 node webRTC connection, with the 3rd node being the server. This way, I can screen record the 3rd node's stream or save it using some other way. But I am not sure about the reliability/feasibility of the implementation.
This is for a mobile application, and I would avoid any method that involves uploading/saving.
PS: I'm using Agora.io for the purpose of video-conference.
in my opinion
you can do it like the record demo:https://webrtc.github.io/samples/src/content/getusermedia/record/.
record each stream to blobs and push them to your server with websocket.
then convert the blobs to a webm file or just add in a video
Agora doesn't offer on-premise recording out of the box but they do provide thee code for you to be able to launch your own on-premise recording using your own server. Agora has the code and instructions to deploy on GitHub: https://github.com/AgoraIO/Basic-Recording
The way it works, once you have set up the Agora Recording SDK, the client would trigger the recording to start, via user interaction (button tap) or some other event (i.e. peer-joined or stream-subscribed) this will trigger the recording service to join the channel and record the streams. _The service outputs the video file once recording has stopped.
you need a WebRTC media server.
WebRTC media servers makes it possible to support more complex
scenarios WebRTC media servers are servers that act as WebRTC clients
but run on the server side. They are termination points for the media
where we’d like to take action. Popular tasks done on WebRTC media
servers include:
Group calling Recording Broadcast and live streaming Gateway to other
networks/protocols Server-side machine learning Cloud rendering
(gaming or 3D) The adventurous and strong hearted will go and develop
their own WebRTC media server. Most would pick a commercial service or
an open source one. For the latter, check out these tips for choosing
WebRTC open source media server framework.
In many cases, the thing developers are looking for is support for
group calling, something that almost always requires a media server.
In that case, you need to decide if you’d go with the classing (and
now somewhat old) MCU mixing model or with the more accepted and
modern SFU routing model. You will also need to think a lot about the
sizing of your WebRTC media server.
For recording WebRTC sessions, you can either do that on the client
side or the server side. In both cases you’ll be needing a server, but
what that server is and how it works will be very different in each
case.
If it is broadcasting you’re after, then you need to think about the
broadcast size of your WebRTC session.
link:https://bloggeek.me/webrtc-server/

Capabilities of Airwatch's Workspace ONE Web browser

My company is evaluating using Airwatch for Mobile Device Management. We have some webapps (PWA / using Service Workers) we use internally. In other posts I read that the administrators may limit the use of the devices' default browsers Safari and Chrome and only allow Airwatch's Workspace ONE Web browser for internal web pages.
Now, my questions are: Does the Workspace ONE Web browser support Progressive Web Apps with service workers?
And additionally, is this browser based on another one, so I'm able to check easily what Workspace ONE Web is capable of (caniuse)?
I would recommend that you review the capabilities directly from VMware. Starting here: https://docs.vmware.com/en/VMware-Workspace-ONE-UEM/9.7/vmware-airwatch-guides-97/GUID-AW97-Features_Matrix.html
PWA's may function differently on Workspace ONE - Web if there are specific controls implemented that could impede the PWA functionality, like local storage. However, you'll likely be able to determine if this is a risk to your project by reading the documentation.

Using Electron based app as a web server

I'm developing a cross-platform application (Windows/Linux/macOS), which:
Should be able to run locally as a desktop application
Should be able to run on a remote machine, preferably with the same UI as on local.
So far Electron looks good enough for the first bullet.
The question is about the second one. I'd like to reuse both the logic and the UI from the local scenario for the remote scenario. In other words, I'd like to use Electron based application as a web server and connect to it via browser.
Is there any way to do that?
You can create a remote web server without Electron, just with Node.js, and deliver a web page like a PHP server for example.
But if you want to deliver a complete remote UI and manage the window remotely, that's VERY complicated to do... That needs to configure a lot of things and manage connections between client and server, using asynchronous keyboard & mouse and encryption to secure the communications.
You want a hybrid app I think, like a few of them that out out there (i.e. Slack). Generally there's a web app plus an Electron client version with some shared UI code but it's not Electron all around. The main point of electron is to be a local web server acting as a desktop app. You could certainly keep it all node though.

How to call a voice xml application?

I have a local installation of Voxeo's Prophecy platform, and a voice xml application that runs on the voicexml browser of the platform. How can i call the application to listen to the message, without having a sip phone, and without using the voxeo's hosting capability? I just want to call the application at the local installation without using a phone. When i try this from the browser, i just get the xml file containing the dialog.
Why are you trying to start the application without a SIP phone? The developer version of Prophecy comes with a SIP phone that works great for testing and debugging. Are you trying to access the application from a regular telephone or POTS. If that is the case you will need additional hardware, such as a Cisco VoIP Gateway to translate the land-line signal to SIP. There are a number of VoIP Gateways available. Another option is to put Dialogic cards in your server and use a software that translates between SIP and the Dialogic API. If you purchase Prophecy from Voxeo as an appliance there are options they can sell you to achieve this. The advantage of getting this from Voxeo is that they will help configure it, which is not trivial depending upon the type type of telephone lines you are using and whether they are behind a PBX or not.
The telephony/communications interface to Prophecy is SIP so that is the only way to communicate with it. You could use any open source SIP stacks to develop something yourself, but the easiest thing to do is to use a software based SIP phone. It is not like you could just start talking and the VXML app would know what you intended, or if the if the voice input was really intended for the VXML app. You still need to maintain things like sessions and routing to the correct application which is easily handled by a SIP phone. Prophecy is designed for a telephony environment. If you are trying to use it for something like a home automation system, which some people have, I would think you would have to provide some type of SIP front end that is voice activated.

Find available RTMP channels on a media server (e.g. Adobe)

I am planning a software application where the user will be able to select a given media channel from a list of RTMP streams available on one or more media servers on the internet. The list should ideally be dynamically created through some kind of service that knows about the available and active channels.
My question is: Would this be possible through some kind of protocol between the service and the media server. I understand that RTMP by itself doesn't allow this. A therefore assume that some outbound mechanism will be required.
No...
...there is no native application discovery in RTMP. If you'd like this kind of functionality you'll need to program some sort of discovery service for which ever streaming server you are running.