Gregoire Parant c177f0a1b3 Squashed commit of the following:
commit 41748a403686cffd5008be966f7cb04e6ca3e45a
Merge: 3b1d4d63 4991a70b
Author: grégoire parant <g.parant@thecodingmachine.com>
Date:   Mon Aug 2 21:38:37 2021 +0200

    Merge pull request #1327 from thecodingmachine/hotFixErrorCardBack

    Fix error generated

commit 4991a70bba40121b14650bc0baba3552cca1a09e
Author: Gregoire Parant <g.parant@thecodingmachine.com>
Date:   Mon Aug 2 21:34:03 2021 +0200

    Fix error generated

    Don't generate error if file is Invalid

commit 3b1d4d630cc1c7ce21ac50e169463aeb7d5d3811
Merge: f52b4598 02e5860e
Author: grégoire parant <g.parant@thecodingmachine.com>
Date:   Mon Aug 2 21:03:18 2021 +0200

    Merge pull request #1326 from thecodingmachine/HotFixCreateMapFeature

    Hot fix create map feature

commit 02e5860e43eba0283f7c055d12bbf2e916e10b9a
Author: Gregoire Parant <g.parant@thecodingmachine.com>
Date:   Mon Aug 2 20:59:13 2021 +0200

    HotFix redirect on production domain of WorkAdventure

     - Update domain `ADMIN_URL` by `workadventu.re`

commit f52b4598723331ff68d7526cdc32f1eff15a0d8a
Merge: 3d657b4a 3ab069d6
Author: grégoire parant <g.parant@thecodingmachine.com>
Date:   Mon Aug 2 11:23:16 2021 +0200

    Merge pull request #1324 from thecodingmachine/develop

    Release v1.4.11

commit 3ab069d650d94aecd42bebea8b27bf8ac93ed81b
Merge: 2b748138 9d4ffe54
Author: Kharhamel <Kharhamel@users.noreply.github.com>
Date:   Fri Jul 30 15:51:07 2021 +0200

    Merge pull request #1323 from thecodingmachine/openIDPoc

    FIX: bomp the node version of pusher

commit 9d4ffe542c9c0a094a78e1d6c8c8b11641052a10
Author: kharhamel <oognic@gmail.com>
Date:   Fri Jul 30 15:50:30 2021 +0200

    FIX: bomp the node version of pusher

commit 2b7481383f6f3f085c4c145394b3d63b75eed239
Merge: 74975ac9 9c803a69
Author: Kharhamel <Kharhamel@users.noreply.github.com>
Date:   Fri Jul 30 15:48:56 2021 +0200

    Merge pull request #1251 from thecodingmachine/openIDPoc

    POC for the openID connect

commit 9c803a69ffb8a1a06a1cdd4d86f15d2a7cdfcd08
Author: kharhamel <oognic@gmail.com>
Date:   Tue Jul 27 16:37:01 2021 +0200

    FEATURE: users can now login via an openID client

commit 74975ac9d81f224d30fe3b3eec180b3ef895cbeb
Merge: 315fe7ca ebdcf880
Author: Kharhamel <Kharhamel@users.noreply.github.com>
Date:   Fri Jul 30 14:54:33 2021 +0200

    Merge pull request #1322 from thecodingmachine/improveCapacityWarning

    FEATURE: improved the room capacity warning visuals

commit ebdcf8804d7ab72a51bac10eeb476467caa16f43
Author: kharhamel <oognic@gmail.com>
Date:   Fri Jul 30 14:08:27 2021 +0200

    added admin link to the warning container

commit 41ac51f2918b743da445a2ba3b89bd8f66e08e06
Author: kharhamel <oognic@gmail.com>
Date:   Thu Jul 29 18:02:36 2021 +0200

    FEATURE: improved the room capacity warning visuals

commit 315fe7ca82b3674d07136d7a96233d827804d177
Author: David Négrier <d.negrier@thecodingmachine.com>
Date:   Thu Jul 29 17:49:51 2021 +0200

    Adding a "font-family" property for text objects. (#1311)

    - Tiled displays your system fonts.
    - Computers have different sets of fonts. Therefore, browsers never rely on system fonts
    - Which means if you select a font in Tiled, it is quite unlikely it will render properly in WorkAdventure

    To circumvent this problem, in your text object in Tiled, you can now add an additional property: `font-family`.

    The `font-family` property can contain any "web-font" that can be loaded by your browser.

    This allows us to use the "Press Start 2P" 8px font in text objects, which renders way better than the default "Sans serif" font of your browser.

commit 7ffe564e8eddcfdc0ef8c20d09f43405934e83f9
Author: GRL78 <80678534+GRL78@users.noreply.github.com>
Date:   Thu Jul 29 17:42:16 2021 +0200

    Graphic upgrade of the global message console (#1287)

    * Graphic upgrade of the global message console
    Fix: error if LoginScene doesn't exist

    * Rework graphic of global message console

    * Rework graphic of global message console

    * Remove console.log

commit 2a1af2a131f72ad5a00b6f4a4990a12fcedb0342
Author: grégoire parant <g.parant@thecodingmachine.com>
Date:   Thu Jul 29 16:42:31 2021 +0200

    PWA service workers (#1319)

    * PWA services worker

    - [x] Register service worker of PWA to install WorkAdventure application on desktop and mobile
    - [x] Create webpage specifique for PWA
    - [ ] Add register service to save and redirect on a card
    - [ ] Add possibilities to install PWA for one World (with register token if existing)

    * Finish PWA strategy to load last map visited

    * Fix feedback @Kharhamel

    * Fix feedback @Kharhamel
2021-08-02 22:06:24 +02:00
..
2021-08-02 22:06:24 +02:00

Load testing

Load testing is performed with Artillery.

Install:

cd benchmark
npm install

Running the tests (on one core):

cd benchmark
npm run start

You can adapt the socketio-load-test.yaml file to increase/decrease load.

Default settings are:

  phases:
    - duration: 20
      arrivalRate: 2

which means: during 20 seconds, 2 users will be added every second (peaking at 40 simultaneous users).

Important: don't go above 40 simultaneous users for Artillery, otherwise, it is Artillery that will fail to run the tests properly. To know, simply run "top". The "node" process for Artillery should never reach 100%.

Reports are generated in artillery_output.html.

Multicore tests

You will want to test with Artillery running on multiple cores.

You can use

./artillery_multi_core.sh

This will trigger 4 Artillery instances in parallel.

Beware, the report generated is generated for only one instance.

How to test, what to track?

While testing, you can check:

  • CPU load of WorkAdventure API node process (it should not reach 100%)
  • Get metrics at the end of the run: http://api.workadventure.localhost/metrics
    In particular, look for:
    # HELP nodejs_eventloop_lag_max_seconds The maximum recorded event loop delay.
    # TYPE nodejs_eventloop_lag_max_seconds gauge
    nodejs_eventloop_lag_max_seconds 23.991418879
    
    This is the maximum time it took Node to process an event (you need to restart node after each test to reset this counter)
  • Generate a profiling using "node --prof" by switching the command in docker-compose.yaml:
        #command: yarn dev
        command: yarn run profile
    
    Read https://nodejs.org/en/docs/guides/simple-profiling/ on how to generate a profile.