# Comment le temps d'exécution des tests serveurs est passé de 13 à 2 minutes!⚡

**URL:** <https://community.gladysassistant.com/t/comment-le-temps-dexecution-des-tests-serveurs-est-passe-de-13-a-2-minutes/7608>\
**Category:** Actualités\
**Created:** [Octobre 21, 2022, 8:35 UTC](https://community.gladysassistant.com/t/comment-le-temps-dexecution-des-tests-serveurs-est-passe-de-13-a-2-minutes/7608 "2022-10-21T08:35:02Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Octobre 21, 2022, 8:35 UTC](https://community.gladysassistant.com/t/comment-le-temps-dexecution-des-tests-serveurs-est-passe-de-13-a-2-minutes/7608/1 "2022-10-21T08:35:02Z")

</div>

Salut à tous, et surtout aux [@contributors](https://community.gladysassistant.com/groups/contributors) pour ce post un peu plus technique que d’habitude !

Vous n’allez pas me croire, j’ai réussi à réduire le temps d’exécution de tests serveurs de 80%, soit 5 fois plus rapide qu’avant … 😅

Finit les **13 MINUTES** d’attentes 😬

 ![Screenshot 2022-10-21 at 15.09.58](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/1/17a03881e9b4dfb049ae8571fcff194b57be10b5.png)

Ca faisait longtemps que je me doutais qu’il y avait un truc, mais j’ai finis par trouver où c’était un peu par hasard.

En gros, entre chaque test, on exécute une fonction `beforeEach` qui s’occuper de vider puis de remplir la DB.

C’est normal, entre chaque test on veut que la DB soit entièrement vierge pour que les tests soient indépendants entre eux.

 ![Screenshot 2022-10-21 at 15.15.40](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/a/a42abae2c8f846d2a82885afd235606de7ef9774.png)

Ce beforeEach est exécuté 1 800 fois, vu que nous avons 1 800 tests dans Gladys…

Donc la moindre optimisation sur cette fonction nous fait gagner l’optimisation x 1800…

En entrant dans le code de ces 2 fonctions «&nbsp;cleanDb&nbsp;» et «&nbsp;seedDb&nbsp;», je tombe sur ça:

 ![Screenshot 2022-10-21 at 15.19.28](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/b/b23e69b24c63a913062a0e90f163b48592c4a213.png)

Je suis assez étonné par le fait qu’il y ait une fonction «&nbsp;callLater&nbsp;» qui littéralement rajoute un sleep de 10ms entre chaque clean/remplissage de chaque seed 🤔

Sachant qu’on vide/remplit 16 tables pendant les tests, il y a 16 \* 10 ms \* 2 = 320 ms de temps mort, **entre chaque test**!! 🫠

Pendant 1800 tests, cela fait 1800 \* 320 = 576 secondes = **9,6 minutes**!

Là, je commence à suer à grosse goutte, tout ce temps perdu… ^^

Je tente de remplacer le bout de code par ça:

 ![Screenshot 2022-10-21 at 15.23.12](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/0/04b9580a22d9cd965b133e7d9e0addd733084e60.png)

Une version plus optimisée, sans attente.

Et le résultat est sans appel:

 ![Screenshot 2022-10-21 at 15.09.29](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/b/b51c6ff57047346e288aa5849ee8d439f43fafbe.png)

**Il y a encore du boulot**

Le temps d’exécution des test a donc été vachement réduit, mais il reste encore un gros bloc à réduire: le temps d’installation des dépendances sur le CI qui est un très gros bout :

 ![Screenshot 2022-10-21 at 15.31.31](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/9/91eca42870de25272378366065ec6383b9495ea4.png)

Malgré le cache npm, l’installation des dépendances met quasiment 11 minutes, ce qui est bien trop long.

Certain packages sont compilés à chaque installation et prennent un temps fou à être compilé, notamment `open-zwave-shared` (qui sera bientôt retiré), et `node-webcrypto-ossl` qui sera lui aussi retiré quand on passera à Node.js 16, car cette librairie est maintenant intégré à Node.js.

J’ai hâte !

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Octobre 21, 2022, 8:40 UTC](https://community.gladysassistant.com/t/comment-le-temps-dexecution-des-tests-serveurs-est-passe-de-13-a-2-minutes/7608/2 "2022-10-21T08:40:54Z")

</div>

@Romuald_Pochet Je me suis permis de rebase ta PR sur ZwaveJS2mqtt pour que ton développement soit plus rapide 🙂 Pense à pull en local et tu me diras si tu vois la différence !

---

<div class="post-metadata">

**Author:** ![tiboys](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/tiboys/32/17668_2.png) [@tiboys](https://community.gladysassistant.com/u/tiboys)\
**Post date:** [Octobre 22, 2022, 7:12 UTC](https://community.gladysassistant.com/t/comment-le-temps-dexecution-des-tests-serveurs-est-passe-de-13-a-2-minutes/7608/3 "2022-10-22T07:12:52Z")

</div>

👍  
Je n’ai pas tout compris mais bravo et merci pour tout ce boulot.
