Mise à jour res_data
Ce chapitre décrit la procédure pour mettre à jour un jeu de données res_data
.
Les projets res_data contiennent des exports de données qui sont packagées pour les tests d’intégration. Ils permettent d’initialiser un serveur de test avec un ensemble de données
Pour écrire de nouveaux tests ou dans le cas du développement d’une nouvelle fonctionnalité, il peut être nécéssaire de modifier ce jeu de données.
Les modifications devront être effectuées à la fois dans un des projets res_data et dans le projet sainet
- Récupérer les données de test.
- Modifier les données nécessaires.
- Lancer les tests d’intégration localement avec le nouveau jeu de données.
- Adapter les tests d’intégration.
- Publier les modifications sur le
Nexus
de SAI ERP. - Utiliser la nouvelle version du jeu de test dans
sainet
.
La première étape consiste à récupérer les données de test sur res_data.
Si le fichier des données est déjà existant, la mise à jour de données doit être effectuée (git pull
).
Il faut ensuite créer une nouvelle branche:
git checkout -b feature/nouvelles-donnees-test
Pour modifier le jeu de données de test, il est possible d’effectuer les modifications des manières suivantes:
- directement dans le fichier SQL
root/h2dump.sql
. - en lançant un serveur local, en effectuant les modifications, puis un export du jeu de données.
Le fichier root/h2dump.sql
contient l’ensemble des données qui vont être insérées au lancement du serveur SAINet.
Dans le cas d’une modification directement dans ce fichier, il faut faire attention à la cohérence des données. En cas de modification complexe (par exemple l’ajout de fichiers dans l’edms), il est préférable d’effectuer les modifications sur un serveur lancé (voir ci-après).
Cette méthode consiste à lancer un serveur local sur le jeu de données initiale:
./run-server.sh --runtime <runtime> --import <path/to/res_data/<test_id> --start
Puis à effectuer les modifications via le client riche (ou l’AdminClient), pour ensuite effectuer un export du jeu de données via la commande export light path/to/res_data/<test_id>
dans la console du serveur.
Suite à la modification du jeu de données d’intégration, il est parfois nécéssaire d’adapter/corriger les tests dans dev/sainet
.
Afin de valider/corriger les tests d’intégration avec le nouveau jeu de donnée res_data
, il est possible de lancer les tests:
- en installant localement la version SNAPSHOT de l’artefact res_data.
- installer localement la version SNAPSHOT (
mvn clean install
) du projetres_data
. - mettre à jour le fichier
pom.xml
concerné dansdev/sainet
avec la version SNAPSHOT. - lancer les tests (
./run-tests.sh <test-id>
).
- installer localement la version SNAPSHOT (
- en démarrant un serveur embarqué qui utilise le nouveau jeu de donnée.
Dans res_data/<test_id>
, la commande mvn clean install
permet de générer et installer localement la version SNAPSHOT.
<?xml version="1.0" encoding="UTF-8"?>
<groupId>ch.saierp.sainet.testing.data</groupId>
<artifactId>`test_id`</artifactId>
<version>1.40-SNAPSHOT</version>
...
Dans cet exemple, c’est la version 1.40-SNAPSHOT qui va être installée localement.
Une fois la commande effectuée, il faut modifier les tests dans dev/sainet
pour qu’ils utilisent cette nouvelle version.
Pour cela, il faut modifier la version de l’artifact dans sainet/testing/data/<test_id>/pom.xml
.
sainet/testing/data/<test_id>/pom.xml
...
<dependency>
<groupId>ch.saierp.sainet.testing.data</groupId>
<artifactId>`test_id`</artifactId>
<version>1.40-SNAPSHOT</version> <!-- à modifier -->
<scope>test</scope>
</dependency>
...
Le lancement des tests via la commande ./run-test.sh <test_id>
va alors utiliser la version SNAPSHOT qui vient d’être installée localement. Cette commande permet de lancer un serveur embarqué sur lequel les tests seront appliqués.
Il est aussi possible de lancer les tests en utilisant un serveur local lancé sur le jeu de données modifié.
./run-server.sh --runtime <runtime> --import <path/to/res_data/<test_id> --start
Puis en lancant les tests sur ce serveur.
./run-test.sh reg --runtime <runtime>
Il faut être dans une branche (créée précédemment).
Ajouter les modifications dans la branche:
git add root/h2dump.sql
git add root/schema.sql
git add root/edms/ged
Faire un commit avec les fichiers ajoutés:
git commit -m "Ajout des nouvelles données de test"
Faire un push de la branch
git push --set-upstream <remote> <branch>
Assigner la merge request à une personne qui a le rôle Maintainer
du projet res_data
concerné.
Le Maintainer
doit lancer un job sur le master lui permettant de faire une release.
La release contiendra la prochaine version à publier et la nouvelle version snapshot pour le projet res_data
.
Une fois la merge request intégrée au master, la version du package de test peut être mise à jour dans le pom du projet testing/data/
concerné dans dev/sainet
.
Pour cela, il faut adapter la version de l’artifact dans sainet/testing/data/<test_id>/pom.xml
(afin qu’elle corresponde à la version publiée juste avant) soit:
- en supprimant le
-SNAPHOT
de la version de l’artefact des données de test (si elle a été modifiée précédemment). - en incrémentant la version de l’artefact des données de test.
Il ne dois jamais y avoir de version SNAPSHOT dans les fichiers pom.xml
de dev/sainet
.
sainet/testing/data/<test_id>/pom.xml
<dependency>
<groupId>ch.saierp.sainet.testing.data</groupId>
<artifactId>`test_id`</artifactId>
<version>1.40</version> <!-- -à adapter -->
<scope>test</scope>
</dependency>