Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tache3 #5

Closed
wants to merge 100 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
47221f5
Create Base64ErrorHandlingTest.java
TibbySHR Oct 2, 2024
975c4a6
Create ExtendedBase64HandlingTest.java
TibbySHR Oct 4, 2024
57c9bf1
Delete tache2-tests/Base64ErrorHandlingTest.java
TibbySHR Oct 4, 2024
e4db505
Create InputCoercionExceptionTest.java
TibbySHR Oct 4, 2024
6167af6
Delete tache2-tests/ExtendedBase64HandlingTest.java
TibbySHR Oct 4, 2024
74b16aa
Create test.md
TibbySHR Oct 4, 2024
a79fc81
Create MatchStrengthTest.java
TibbySHR Oct 4, 2024
5875eaf
Update test.md
TibbySHR Oct 4, 2024
3c206e5
Update test.yml
TibbySHR Oct 5, 2024
a85d2f5
Create InputCoercionException.java
TibbySHR Oct 5, 2024
235a80b
Update InputCoercionException.java
TibbySHR Oct 5, 2024
e8d5f9d
Update test.yml
TibbySHR Oct 5, 2024
2442d70
Update test.yml
TibbySHR Oct 5, 2024
11d7a2a
Update ComponentVersionsTest.java
TibbySHR Oct 5, 2024
0788a46
Update test.yml
TibbySHR Oct 5, 2024
d0d3358
Create JsonGeneratorDelegateTest.java
TibbySHR Oct 5, 2024
8326fe3
Create JsonFactoryTest.java
TibbySHR Oct 5, 2024
08f3f7f
Update pom.xml
TibbySHR Oct 5, 2024
90f2b61
Delete src/test/java/com/fasterxml/jackson/core/JsonGeneratorDelegate…
TibbySHR Oct 5, 2024
a9f6510
Update pom.xml
TibbySHR Oct 5, 2024
c55f9c7
Create NameTest.java
TibbySHR Oct 5, 2024
4b9dccb
Update NameTest.java
TibbySHR Oct 5, 2024
8e04886
Update NameTest.java
TibbySHR Oct 5, 2024
0f03d8b
Update pom.xml
TibbySHR Oct 5, 2024
091f496
Update pom.xml
TibbySHR Oct 5, 2024
10469a5
Create NameImpl.java
TibbySHR Oct 5, 2024
d6aeb58
Update NameTest.java
TibbySHR Oct 5, 2024
0d16a43
Update pom.xml
TibbySHR Oct 5, 2024
adfa0db
Create Name1Test.java
TibbySHR Oct 6, 2024
4314d5e
Update pom.xml
TibbySHR Oct 6, 2024
be8314b
Create Name2Test.java
TibbySHR Oct 6, 2024
b0a2cce
Update pom.xml
TibbySHR Oct 6, 2024
ae105a2
Create Name3Test.java
TibbySHR Oct 6, 2024
e8d4649
Update pom.xml
TibbySHR Oct 6, 2024
a426c37
Create NameNTest.java
TibbySHR Oct 6, 2024
014c27f
Update pom.xml
TibbySHR Oct 8, 2024
cb70851
Update NameN.java
TibbySHR Oct 8, 2024
46df12c
Update NameN.java
TibbySHR Oct 8, 2024
1b00e85
Update NameNTest.java
TibbySHR Oct 8, 2024
e8869e5
Update pom.xml
TibbySHR Oct 8, 2024
2c2a853
Update pom.xml
TibbySHR Oct 8, 2024
8da545b
Update pom.xml
TibbySHR Oct 8, 2024
4c5f70a
Update pom.xml
TibbySHR Oct 8, 2024
ec3b854
Update pom.xml
TibbySHR Oct 8, 2024
5c69a7a
Update pom.xml
TibbySHR Oct 8, 2024
c054985
Update pom.xml
TibbySHR Oct 8, 2024
352d871
Update pom.xml
TibbySHR Oct 8, 2024
88264a3
Update pom.xml
TibbySHR Oct 8, 2024
fe13866
Update pom.xml
TibbySHR Oct 8, 2024
c0b026e
Update pom.xml
TibbySHR Oct 8, 2024
1bc3747
Update test.yml
TibbySHR Oct 9, 2024
328a11f
Delete tache2-tests directory
TibbySHR Oct 9, 2024
d4a4243
recopy from my repo
Mehtab68 Oct 10, 2024
ace1fec
finaliser Mehtab test
Mehtab68 Oct 10, 2024
4f6234d
test5 images apres
Mehtab68 Oct 10, 2024
b03f316
Delete src/test/java/com/fasterxml/jackson/core/NameTest.java
TibbySHR Oct 10, 2024
29a4ccb
Delete src/test/java/com/fasterxml/jackson/core/Name1Test.java
TibbySHR Oct 10, 2024
5cd317c
Delete src/test/java/com/fasterxml/jackson/core/Name2Test.java
TibbySHR Oct 10, 2024
665be78
Delete src/test/java/com/fasterxml/jackson/core/Name3Test.java
TibbySHR Oct 10, 2024
820d7e1
Add files via upload
TibbySHR Oct 10, 2024
ff62dac
Update tache2test.md
TibbySHR Oct 10, 2024
7ff2cec
Update test.yml
TibbySHR Nov 4, 2024
777d813
Update pom.xml
TibbySHR Nov 4, 2024
4946b91
Update pom.xml
TibbySHR Nov 4, 2024
8b2726d
Update pom.xml
TibbySHR Nov 4, 2024
d5d16ad
Update pom.xml
TibbySHR Nov 4, 2024
8d42622
Update test.yml
TibbySHR Nov 4, 2024
4dc0285
Update test.yml
TibbySHR Nov 4, 2024
208d446
Update test.yml
TibbySHR Nov 4, 2024
7d40fc7
Update test.yml
TibbySHR Nov 4, 2024
95bd01e
Create documentation-tache3.md
TibbySHR Nov 4, 2024
9d287d0
Update documentation-tache3.md
TibbySHR Nov 4, 2024
d8dcf51
Update test.yml
TibbySHR Nov 4, 2024
281331a
Update test.yml
TibbySHR Nov 4, 2024
a55424b
Update test.yml
TibbySHR Nov 4, 2024
98d8092
Update documentation-tache3.md
TibbySHR Nov 4, 2024
0e12f29
Update pom.xml
TibbySHR Nov 4, 2024
516306a
Update pom.xml
TibbySHR Nov 4, 2024
0a95d20
Update pom.xml
TibbySHR Nov 5, 2024
3d79254
Update pom.xml
TibbySHR Nov 5, 2024
5b3c6d4
Update test.yml
TibbySHR Nov 5, 2024
4424d77
Update pom.xml
TibbySHR Nov 5, 2024
3429109
Update pom.xml
TibbySHR Nov 5, 2024
5acafee
Update test.yml
TibbySHR Nov 5, 2024
21a4f40
Update pom.xml
TibbySHR Nov 5, 2024
121eb0e
Update pom.xml
TibbySHR Nov 5, 2024
1e622f6
Update pom.xml
TibbySHR Nov 5, 2024
3117302
Update test.yml
TibbySHR Nov 5, 2024
5f63f0f
Update test.yml
TibbySHR Nov 5, 2024
8f32e87
Update pom.xml
TibbySHR Nov 5, 2024
aa51474
Update pom.xml
TibbySHR Nov 5, 2024
553c11b
Update pom.xml
TibbySHR Nov 5, 2024
6e6122a
Update test.yml
TibbySHR Nov 5, 2024
0adf919
Update test.yml
TibbySHR Nov 5, 2024
d0e2459
Update pom.xml
TibbySHR Nov 5, 2024
2b3bfbe
Update test.yml
TibbySHR Nov 5, 2024
1d26b90
Update pom.xml
TibbySHR Nov 5, 2024
f77365e
Update test.yml
TibbySHR Nov 5, 2024
0074ab9
Update pom.xml
TibbySHR Nov 6, 2024
6654ded
Update test.yml
TibbySHR Nov 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 47 additions & 19 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,65 @@
name: Maven tests
name: Maven tests and coverage report with multiple JVM flags

on:
pull_request:
push:

jobs:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
jvm_flag:
- "-Xmx512m"
- "-XX:+AlwaysPreTouch"
- "-XX:+UseG1GC"
- "-XX:+UseStringDeduplication"
- "-XX:+UnlockExperimentalVMOptions -XX:+UseCompressedOops"

steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
# Checkout the repository
- uses: actions/checkout@v4

# Set up JDK 17
- name: Set up JDK 17
uses: actions/setup-java@6a0805fcefea3d4657a47ac4c165951e33482018 # v4
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven

- name: Run Maven tests
run: mvn verify
# Sanitize the JVM flag for artifact names
- name: Sanitize JVM Flag
id: sanitize
run: |
sanitized_flag=$(echo "${{ matrix.jvm_flag }}" | sed 's/[:+]/_/g')
echo "sanitized_flag=$sanitized_flag" >> $GITHUB_ENV

- name: Get JaCoCo Coverage
id: coverage
# Run Maven tests with different JVM flags and generate JaCoCo coverage report
- name: Run Maven tests with JVM Flag and generate coverage report
run: |
coverage=$(python3 config/coverage.py target/site/jacoco/jacoco.csv)
echo "COVERAGE=$coverage" >> $GITHUB_ENV
echo "Running tests with JVM flag: ${{ matrix.jvm_flag }}"
mvn clean verify
env:
JVM_OPTS: ${{ matrix.jvm_flag }}

# Upload JaCoCo Coverage Report as an artifact with sanitized name
- name: Upload JaCoCo Coverage Report
uses: actions/upload-artifact@v3
with:
name: jacoco-report-${{ env.sanitized_flag }}
path: target/site/jacoco/ # Path to the JaCoCo report

- name: Fail if coverage has not improved.
# Save test logs
- name: Save Test Logs
run: |
coverage=$COVERAGE
threshold=81.58
if (( $(echo "$coverage - $threshold <= 0.1" | bc -l) )); then
echo "Coverage has not improved."
exit 1
else
echo "New coverage: $coverage%"
fi
mkdir -p logs
mv target/surefire-reports/*.txt logs/
if: always()

# Upload the logs as an artifact for each JVM flag with sanitized name
- name: Upload Test Logs
uses: actions/upload-artifact@v3
with:
name: test-logs-${{ env.sanitized_flag }}
path: logs/
71 changes: 71 additions & 0 deletions documentation-tache3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Documentation des Flags JVM dans GitHub Actions

## Introduction

Dans ce projet, nous avons introduit plusieurs flags JVM dans le workflow GitHub Actions pour optimiser les performances, la gestion de la mémoire et l'efficacité des tests. L'objectif est de s'assurer que l'application est testée sous différentes configurations de mémoire et de gestion des ressources, afin d'améliorer la robustesse et la qualité des tests. Ce document explique chaque flag en détail, les raisons de leur choix, leurs impacts potentiels ainsi que la motivation derrière chaque sélection.

> Parfois, notre JVM se prend pour une athlète olympique : prête à relever chaque défi de performance qu'on lui lance !

## 1. Les Flags Utilisés

Nous utilisons cinq flags différents pour tester notre application sous divers environnements. Pourquoi ? Parce qu’une JVM bien préparée est une JVM heureuse (et performante) ! 😄

### `-Xmx512m`

**Fonction :** Ce flag fixe la taille maximale de la mémoire du tas (heap) à 512 Mo.
**Motivation :** En limitant la mémoire disponible pour la JVM, nous simulons des environnements à faible mémoire, ce qui est essentiel pour vérifier si l’application peut fonctionner efficacement sous de telles contraintes. Cela aide à identifier les fuites de mémoire ou les inefficacités de gestion de mémoire.
**Impact :** Ce réglage garantit que l’application peut tourner avec une mémoire limitée, ce qui est crucial pour une compatibilité avec des environnements de production aux ressources restreintes, améliorant ainsi la robustesse.

> Oui, c’est un peu comme si on disait à la JVM de "faire des économies". Mais, une JVM économe est une JVM efficace !

### `-XX:+AlwaysPreTouch`

**Fonction :** Ce flag demande à la JVM d'allouer et de toucher la mémoire des pages du tas au démarrage.
**Motivation :** En activant cette option, la mémoire est initialisée dès le démarrage, réduisant les pauses futures dues à la montée en charge de la mémoire en cours d'exécution. Cela améliore l'expérience utilisateur en rendant les performances plus prévisibles.
**Impact :** Ce flag permet d’améliorer la réactivité de l’application sous forte charge, garantissant des performances stables pendant les tests et renforçant la fiabilité.

> C’est un peu comme s’assurer que toutes les chaises sont bien en place avant que le concert commence – la JVM évite ainsi toute distraction de dernière minute !

### `-XX:+UseG1GC`

**Fonction :** Utilise le ramasse-miettes G1 (Garbage First Garbage Collector), un collecteur de mémoire optimisé pour réduire les temps de pause.
**Motivation :** Le G1GC est conçu pour les applications nécessitant des pauses faibles et prédictibles. En le testant, nous évaluons la capacité de l'application à fonctionner avec un garbage collector moderne, idéal pour les applications intensives en mémoire.
**Impact :** En réduisant la fréquence et la durée des pauses liées au ramasse-miettes, ce flag améliore l’observabilité et garantit des tests plus proches des conditions de production, surtout dans des environnements gourmands en ressources.

> Le G1GC, c’est notre "super-héros de la mémoire" : toujours prêt à nettoyer discrètement, sans interrompre le spectacle !

### `-XX:+UseStringDeduplication`

**Fonction :** Ce flag active la déduplication des chaînes de caractères pour économiser de la mémoire en partageant les chaînes identiques.
**Motivation :** Les applications qui manipulent beaucoup de chaînes de caractères peuvent voir leur mémoire rapidement saturée. Ce flag économise de la mémoire en supprimant les doublons, ce qui est essentiel dans des environnements où l’optimisation des ressources est cruciale.
**Impact :** La déduplication des chaînes améliore l’efficacité de l’application et garantit qu’elle reste stable même en cas de forte demande de mémoire pour les chaînes de caractères, optimisant ainsi la qualité et l’économie de mémoire.

> Imaginez une bibliothèque où tous les livres en double sont fusionnés. Moins de livres, même savoir. La JVM fait pareil avec vos chaînes de caractères !

### `-XX:+UnlockExperimentalVMOptions -XX:+UseCompressedOops`

**Fonction :** Ce flag active des options expérimentales, notamment l'utilisation de pointeurs compressés, ce qui réduit la taille des pointeurs en mémoire.
**Motivation :** En activant ces options expérimentales, nous testons la compatibilité de l'application avec des fonctionnalités avancées de la JVM. Les pointeurs compressés permettent également une meilleure densité de mémoire, crucial pour les applications exécutées dans des environnements de faible mémoire.
**Impact :** Ce flag réduit l'empreinte mémoire et permet de tester la performance de l’application dans des configurations plus avancées et évolutives, assurant ainsi sa future compatibilité avec des options JVM expérimentales.

> C’est comme plier chaque bit pour qu’il prenne moins de place – on dirait de la magie, mais c’est juste la JVM qui devient plus "compacte" et efficace.

## 2. Motivation des Choix

Chaque flag a été soigneusement sélectionné pour couvrir différents aspects de performance et de gestion des ressources :

1. **Robustesse des Tests** : Ces flags permettent de simuler des environnements variés, y compris des environnements de mémoire limitée ou des configurations avancées, garantissant ainsi une robustesse accrue de l’application face à des contraintes variées.

2. **Optimisation des Ressources** : L’objectif est de vérifier que l’application utilise efficacement la mémoire et minimise les ressources nécessaires. Cette approche est cruciale pour garantir que l’application peut être exécutée sur des serveurs avec des capacités limitées tout en maintenant sa performance.

3. **Préparation pour la Production** : En testant avec ces configurations, l’application est mieux préparée pour des environnements de production réels, où les ressources et les comportements de collecte de déchets peuvent varier.

4. **Performance et Observabilité** : Les flags comme `-XX:+UseG1GC` et `-XX:+AlwaysPreTouch` aident à mieux comprendre comment l'application réagit à des stratégies avancées de gestion de la mémoire, optimisant ainsi l'expérience utilisateur en production.

5. **Innovations et Expérimentations** : L’activation de `-XX:+UnlockExperimentalVMOptions` permet d'expérimenter avec des fonctionnalités avancées, garantissant que l’application est prête pour les nouvelles évolutions de la JVM, renforçant ainsi sa durabilité et sa flexibilité pour le futur.

## Conclusion

L'utilisation de ces cinq flags JVM dans le workflow GitHub Actions améliore la couverture des tests, assure la compatibilité avec divers environnements, et optimise les performances. En renforçant la robustesse, en améliorant l'observabilité et en optimisant l'utilisation des ressources, cette configuration garantit que notre application est prête pour les exigences de la production et les besoins futurs.

Et, qui sait, peut-être que ces flags donneront même à la JVM un peu de caractère – après tout, on sait maintenant qu’elle aime être bien préparée, économe, et toujours prête à faire briller notre application !
Binary file added images/6-10 tests-apres.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/6-10 tests-avant.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/Test1Apres.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/Test1Avant.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/coverage-apres.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/coverage-avant.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/test2apres.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/test2avant.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/test3Apres.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/test3avant.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/test4apres.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/test4avant.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/test5apres.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/test5avant.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading