Skip to content

Instantly share code, notes, and snippets.

@snicoll
Created March 18, 2024 20:50
Show Gist options
  • Save snicoll/09a532659fbd7e7be4e0ae8f1e68c77e to your computer and use it in GitHub Desktop.
Save snicoll/09a532659fbd7e7be4e0ae8f1e68c77e to your computer and use it in GitHub Desktop.

Merci à toutes et tous, c'était bien chouette!

Le repo: https://github.com/snicoll/ops-status

Comme quelqu'un me l'a fait remarquer, il n'y pas eu de séance de questions/réponses à l'amphi, donc je me suis dit que j'allais essayer de vous faire un résumé de mes discussions.

Un petit retour sur les "slice tests": https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing.spring-boot-applications.autoconfigured-tests

RestClient vs. RestTemplate dans le contexte de Loom (Virtual Threads) et de l'importance de préciser que RestClient reste une interface moderne au-dessus de RestTemplate et n'est pas une contrainte pour bénéficier de Loom. Donc si vous voulez utiliser Loom, RestTemplate ou RestClient, peu importe mais RestClient offre une interface plus moderne. Je précise aussi que nous avons appliqué un peu de modernisme à JdbcTemplate aussi, avec JdbcClient: https://docs.spring.io/spring-framework/reference/data-access/jdbc/core.html#jdbc-JdbcClient

C'est cool d'utiliser notre base de prod mais comment ça marche avec la gestion de schéma? Et bien comme l'application, d'ailleurs le repo utilise Flyway et il est invoqué au démarrage sur notre DB postgres gérée par Testcontainers.

Si j'ai deux base de données, comment est-ce que @ServiceConnection se connecte à la bonne base de données ? J'ai répondu, avec un peu d'ironie, par une question: Est-ce que Spring Boot supporte l'auto-configuration de deux bases de données? La réponse est, malheureusement, non. Du coup si l'application auto-configure la DataSource principale, ServiceConnection va utiliser ça. Pour les autres cas, il faut écrire plus de code, comme ce que j'avais au début avec DynamicPropertiesRegistry.

OK pour l'interaction des containers avec les tests d'intégration, c'est chouette, mais certains services sont gourmands en mémoire. Est-ce qu'il existe une solution pour déporter ces services et les rendre disponible? Oui et c'est exactement ce que Testcontainers cloud fait: https://testcontainers.com/cloud/ - J'en profite pour mentionner que Testcontainers a été récemment racheté par Docker.

Quelle commande ai-je utilisé pour passer à Java 21. Il s'agissait de useJava 21 dont je vous partage le code très compliqué avec plaisir:

function useJava() {
  sdk use java $1
  java -version
}

Et du coup 21 fonctionne parce que je fais des liens symboliques dans mes candidats SDKMan:

ll ~/.sdkman/candidates/java
total 0
lrwxr-xr-x   1 snicoll  staff    14B Jan 18 16:40 17 -> 17.0.10-librca
drwxr-xr-x  12 snicoll  staff   384B Jan 16 11:40 17.0.10-librca
lrwxr-xr-x   1 snicoll  staff    13B Feb 28 19:54 21 -> 21.0.2-librca
drwxr-xr-x  12 snicoll  staff   384B Jan 17 01:05 21.0.2-librca
drwxr-xr-x  18 snicoll  staff   576B Jan 20 10:33 23.0.3.r17-nik
drwxr-xr-x  14 snicoll  staff   448B Jan 21 01:06 23.1.2.r21-nik
lrwxr-xr-x   1 snicoll  staff    14B Jan 27 12:42 8 -> 8.0.402-librca
drwxr-xr-x  15 snicoll  staff   480B Jan 16 14:24 8.0.402-librca
lrwxr-xr-x   1 snicoll  staff    41B Jan 27 12:42 current -> /Users/snicoll/.sdkman/candidates/java/17
lrwxr-xr-x   1 snicoll  staff    14B Jan 27 12:40 graalvm -> 23.0.3.r17-nik
lrwxr-xr-x   1 snicoll  staff    14B Jan 27 12:40 graalvm-21 -> 23.1.2.r21-nik

Bon, il doit y avoir d'autres questions, mais je ne me souviens pas. N'hésitez pas à commenter ou de poser d'autres questions!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment