sonata-nfv / tng-communications-pilot

5GTANGO Communications pilot repository
Apache License 2.0
0 stars 12 forks source link

Create Docker container to execute a Chrome instance with WebRTC support #66

Closed antonroman closed 5 years ago

antonroman commented 5 years ago

We need to be able to execute the complete WebRTC test from a Docker container so that we can execute it as VnV test.

This approach has been tested and works: https://medium.com/dot-debug/running-chrome-in-a-docker-container-a55e7f4da4a8

chromium -incognito --no-default-browser-check --use-fake-ui-for-media-stream --use-fake-device-for-media-stream --disable-breakpad https://rooms.quobis.com

To launch the test itself we can use: https://github.com/GoogleChrome/puppeteer We need to use one of the users provisioned by default.

DanielVilaFalcon commented 5 years ago

Two containers have been implemented. Both of them can execute a headless browser to be controled with puppeteer API but without display or any other stuff (VNC, xvfb, fluxbox ...) included in the mentioned example. The fisrt container is listenig to an incoming call in a user of https://rooms.quobis.com, and the other docker container makes a call from another user to the previous one. In this way is possible to execute a complete WebRTC test from the VnV platform. Currently, they are implemeted to work with https://rooms.quobis.com, but the last version of docker containers will have to work with the webphone version included in the RP-VNF.

antonroman commented 5 years ago

Great! please use a env variable to set the URL to access the Web application.

DanielVilaFalcon commented 5 years ago

It is done. I also include another env varible with the duration of the call in ms.

DanielVilaFalcon commented 5 years ago

The last update of the described containers is avaliable in the previous docker hub repositories.

Addictionally, I have added the part of obtaining of different parameters of the WerbRTC call used to complete the VnV tests.

The previous containers can be executed with the following commands:

danielvifal/docker-chromium-rec

docker run -e WEB="https://rooms.quobis.com" -e CALLED="quobisqa1@quobis" -e PASSWORD="PNrdj3G948WP" -e USER="apps" docker-chromium-rec:latest

danielvifal/docker-chromium

docker run -e WEB="https://rooms.quobis.com" -e CALLER="quobisqa3@quobis" -e PASSWORD="oWc0n2M84xt2" -e CALLED="quobisqa1" -e DURATION=10000 -e USER="apps" docker-chromium:latest

The last one, danielvifal/docker-chromium, writes the ouput in a file avaliable in the following path, due to it is the folder where the VnV reads the outputs and shows them in the test section:

/output/${PROBE}/$HOSTNAME/results.log

Where:

-${PROBE} is headless by default

-$HOSTNAME is the container ID

If it is neccesary to check the content of the output file results.log, it is possible to copy this file from the container to the host with the following shell command:

docker cp <CONTAINER_ID>:/output/headless/$HOSTNAME /results.log results.log

The next picture, shows an example of the output of the container whose content are the Puppeteer logs, that descrive the evolution of the call, the enviroment variables and the output of the command used to get information asked for the test of the VnV.