Hibernate-reactive: Étudiez comment créer un modèle pour JBang pour faciliter les rapports de bogues

Créé le 23 avr. 2021  ·  31Commentaires  ·  Source: hibernate/hibernate-reactive

See https://github.com/jbangdev/jbang#init -templates Voir https://github.com/jbangdev/jbang#init -templates

It would be nice if users could generate a basic test project using JBang so that they have a quick way to start creating a project for reproducing the issue they are having. Ce serait bien si les utilisateurs pouvaient générer un projet de test de base à l'aide de JBang afin qu'ils aient un moyen rapide de commencer à créer un projet pour reproduire le problème qu'ils rencontrent.

I haven't checked if this is feasible or helpful yet. Je n'ai pas encore vérifié si cela est faisable ou utile. In my head it should make it even easier than cloning a template from our repository . Dans ma tête, cela devrait être encore plus facile que de cloner un modèle à partir de notre référentiel .

en
testing

Tous les 31 commentaires

@maxandersen already played with this. @maxandersen a déjà joué avec ça. What he didn't like, and what might also be a problem here, is that he couldn't easily use a testcontainers database. Ce qu'il n'aimait pas, et ce qui pouvait aussi être un problème ici, c'est qu'il ne pouvait pas facilement utiliser une base de données testcontainers.

en

It works but yeah users would need to manually setup the database. Cela fonctionne, mais oui, les utilisateurs devraient configurer manuellement la base de données.

But so should users using more complex setups :) Mais il en va de même pour les utilisateurs utilisant des configurations plus complexes :)

What you can do is to have the jbang script setup via test containers manually rather than using the jdbc url magic which does not work (yet) with hibernate reactive. Ce que vous pouvez faire est de configurer manuellement le script jbang via des conteneurs de test plutôt que d'utiliser la magie de l'url jdbc qui ne fonctionne pas (encore) avec hibernate reactive.

en

J'ai brièvement envisagé de rendre réutilisable le code d'amorçage de testcontainers dans notre suite de tests, mais cela n'allait pas être si simple.

en

Je veux dire... testcontainers est un excellent outil... mais je prends des risques ici et je dis que nous pouvons nous attendre à ce que les personnes utilisant Hibernate Reactive (ou ORM) puissent démarrer une base de données sans elle :-)

en

It's certainly not a deal breaker to me, most of the boring part is really the configuration of the project. Ce n'est certainement pas un facteur décisif pour moi, la plupart de la partie ennuyeuse est vraiment la configuration du projet. If I have to start a db launching a script manually before being able to run the main of the app, it would already be a great improvement. Si je dois démarrer une base de données en lançant un script manuellement avant de pouvoir lancer le main de l'application, ce serait déjà une grande amélioration.

en

Sure, that's fine. Bien sûr, c'est bien. But it's a nice-to-have. Mais c'est agréable à avoir.

en

En y réfléchissant, nous n'avons probablement même pas besoin d'un modèle pour commencer, nous pourrions fournir un fichier java avec toutes les dépendances nécessaires à JBang pour l'exécuter.

en

J'ai pensé par "modèle" que vous espériez paramétrer par type de base de données.

en

I was talking about a JBang template, something that would allow the user to write: Je parlais d'un template JBang, quelque chose qui permettrait à l'utilisateur d'écrire :

jbang init --template=hibernate-reactive Issue456.java

but I guess this would also be possible: mais je suppose que ce serait aussi possible:

jbang init --template=hibernate-reactive-db2 Issue456.java

Now I think we could achieve the same result providing a single file (or one per database) so that a user can run it with: Maintenant, je pense que nous pourrions obtenir le même résultat en fournissant un seul fichier (ou un par base de données) afin qu'un utilisateur puisse l'exécuter avec :

jbang HReactiveWithDb2.java

With the caveat that a Db2 instance with the right credentials must be already running. Avec la mise en garde qu'une instance Db2 avec les bonnes informations d'identification doit déjà être en cours d'exécution.

Then they could start editing it with: Ensuite, ils pourraient commencer à le modifier avec :

 jbang edit --open=idea  HReactiveWithDb2.java

We can think of ways to add all the bells and whistles we want, but this would be a good starting point for me. Nous pouvons penser à des façons d'ajouter toutes les cloches et sifflets que nous voulons, mais ce serait un bon point de départ pour moi.

en

In my previous example, HReactiveWithDb2.java is somewhere on our GitHub repository and a user has to download it first. Dans mon exemple précédent, HReactiveWithDb2.java se trouve quelque part sur notre référentiel GitHub et un utilisateur doit d'abord le télécharger.

Although, I expect JBang to have some way to run something like: Cependant, je m'attends à ce que JBang ait un moyen d'exécuter quelque chose comme:

jbang https://github.com/hibernate/hibernate-reactive/HReactiveWithDb2.java
en

Eh bien, les modèles jbang ont une sorte de support pour les paramètres AFAIU, et je pense que cela devrait suffire à dire basculer dans un certain fichier persistence.xml .

en

Bien sûr, ça sonne bien.

en

Very interesting! Très intéressant!

One additional thing that maybe you want to consider: very often Quarkus users are encouraged to create a "reproducer project" but in most cases this then ends up being something I have to re-adapt into a real integration test to be merged in Quarkus mainline. Une chose supplémentaire que vous voudrez peut-être considérer : très souvent, les utilisateurs de Quarkus sont encouragés à créer un "projet de reproduction", mais dans la plupart des cas, cela finit par être quelque chose que je dois réadapter dans un véritable test d'intégration pour être fusionné dans la ligne principale de Quarkus .

I do wonder if we could structure our "reproducers" in such a way that it could be automatically promoted into a new integration test. Je me demande si nous pourrions structurer nos "reproducteurs" de manière à ce qu'ils puissent être automatiquement promus dans un nouveau test d'intégration.

en

Vous pouvez faire en sorte que la classe "principale" soit essentiellement un exécuteur de test junit qui exécute des classes avec @Test dedans.

en

Btw. D'ailleurs. If Properties / qute template is not enough / not working let me know. Si les propriétés / le modèle de qute ne suffisent pas / ne fonctionnent pas, faites-le moi savoir. The init templates are new so if you find things missing I Can easily fix/release new jbang. Les modèles d'initialisation sont nouveaux, donc si vous trouvez des choses manquantes, je peux facilement réparer/publier de nouveaux jbang.

en

@maxanderson Je peux ajouter des modèles et init avec eux merci !

en

I'm looking at our hibernate-reactive examples which use the entity manager factory and persistence.xml and separate entity classes. Je regarde nos exemples réactifs à l'hibernation qui utilisent l'usine de gestionnaire d'entités et persistence.xml et des classes d'entités distinctes. The tests chain multiple transactions by waiting indefinitely . Les tests enchaînent plusieurs transactions en attendant indefinitely . All of our HR JUnit tests use chained CompletionStage 's as opposed to the single session transactions used in our examples . Tous nos tests HR JUnit utilisent des CompletionStage chaînés par opposition aux transactions à session unique utilisées dans nos examples .

JBang features allow attaching resources (entity classes and persistence.xml ) on the add (or registration) process which will be included in the Jbang template registry. Les fonctionnalités de JBang permettent d'attacher des ressources (classes d'entités et persistence.xml ) sur le processus add (ou enregistrement) qui seront inclus dans le registre de modèles Jbang. This will result in a copy of those entities will be included in the project and build. Cela se traduira par une copie de ces entités qui sera incluse dans le projet et la construction. So in theory, we can generate the Main.java and/or MutinyMain.java test classes and end up with something similar to these example directories. Donc, en théorie, nous pouvons générer les classes de test Main.java et/ou MutinyMain.java et nous retrouver avec quelque chose de similaire à ces exemples de répertoires.

Note there is another feature that uses .jsh script that allows setting user-defined parameters to be replaced in a template file. Notez qu'il existe une autre fonctionnalité qui utilise le script .jsh qui permet de remplacer les paramètres définis par l'utilisateur dans un fichier de modèle. (alluded to earlier ^^^) but @MaxAndersen indicated they could be added to the JBang init command. (allusion à plus tôt ^^^) mais @MaxAndersen a indiqué qu'ils pourraient être ajoutés à la commande JBang init .

Questions: Des questions:

  1. Is there a target hibernate-reactive user/customer and use case we're aiming for? Y a-t-il un utilisateur/client cible réactif à l'hibernation et un cas d'utilisation que nous visons ?

    • Based on the complexity, we may need to build/publish a hibernate-reactive-test to maven, which would need to be maintained En fonction de la complexité, nous devrons peut-être créer/publier un hibernate-reactive-test vers maven, qui devra être maintenu
  2. Do we want to be able to test these generated tests against older or newer versions of HR & HR ORM? Voulons-nous pouvoir tester ces tests générés par rapport à des versions plus anciennes ou plus récentes de HR & HR ORM ?

    • The basic templates require dependencies (like future imports) that are pulled in during project build (example: //DEPS org.hibernate:hibernate-core:5.4.10.Final ) Les modèles de base nécessitent des dépendances (comme les importations futures) qui sont extraites lors de la construction du projet (exemple : //DEPS org.hibernate:hibernate-core:5.4.10.Final )
    • This would help users define/document their build environment as part of the test generation Cela aiderait les utilisateurs à définir/documenter leur environnement de construction dans le cadre de la génération de test
  3. Simple examples like we have now are still viable, of course. Des exemples simples comme ceux que nous avons maintenant sont toujours viables, bien sûr.

en

Je suggérerais simplement de faire la chose la plus simple qui pourrait éventuellement fonctionner pour le moment.

en

@blafond , here's your use case: @blafond , voici votre cas d'utilisation :
You are User and found this issue while using hibernate reactive in your Vous êtes utilisateur et avez trouvé ce problème lors de l'utilisation de l'hibernation réactive dans votre
project : https://github.com/hibernate/hibernate-reactive/issues/702 projet : https://github.com/hibernate/hibernate-reactive/issues/702

You want to send us a reproducer without having to clone the whole Vous souhaitez nous envoyer un reproducteur sans avoir à cloner le tout
hibernate reactive project and without having to spend too much time on all hibernate projet réactif et sans avoir à passer trop de temps sur tous
the scaffolding needed to create a brand new project. l'échafaudage nécessaire pour créer un tout nouveau projet. Ideally, with jbang, Idéalement, avec jbang,
you could just send us a single file and we could run it. vous pouvez simplement nous envoyer un seul fichier et nous pourrions l'exécuter.

Use ORM 5.4, the default, for now. Utilisez ORM 5.4, la valeur par défaut, pour l'instant.
Not sure why we need to worry about maven, but do what you think is right. Je ne sais pas pourquoi nous devons nous soucier de maven, mais faites ce que vous pensez être juste.

Don't worry about CI, if it's easy for a user to run, it's easy for us to Ne vous inquiétez pas pour CI, s'il est facile à exécuter pour un utilisateur, il est facile pour nous de
add it to ci ajoutez-le à ci

On Wed, 5 May 2021, 21:48 Gavin King, @ . Le mer. 5 mai 2021, 21:48 Gavin King, @ . * > wrote: * > a écrit :

I would suggest just doing the Simplest Thing That Could Possibly Work for Je suggérerais simplement de faire la chose la plus simple qui pourrait fonctionner pour
now. à présent.


You are receiving this because you authored the thread. Vous recevez ceci parce que vous êtes l'auteur du fil.
Reply to this email directly, view it on GitHub Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 , https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 ,
or unsubscribe ou désabonnez-vous
https://github.com/notifications/unsubscribe-auth/AAEIQ5JQIPGKCNFSHOWKCD3TMGVKTANCNFSM43OEZPUQ https://github.com/notifications/unsubscribe-auth/AAEIQ5JQIPGKCNFSHOWKCD3TMGVKTANCNFSM43OEZPUQ
. .

en

Just to clarify, the issue was found using quarkus, but the reproducer Juste pour clarifier, le problème a été trouvé en utilisant quarkus, mais le reproducteur
should only use hibernate reactive ne devrait utiliser que l'hibernation réactive

On Thu, 6 May 2021, 10:51 Davide D'Alto, @ . Le jeu. 6 mai 2021, 10:51 Davide D'Alto, @ . * > wrote: * > a écrit :

@blafond , here's your use case: @blafond , voici votre cas d'utilisation :
You are User and found this issue while using hibernate reactive in your Vous êtes utilisateur et avez trouvé ce problème lors de l'utilisation de l'hibernation réactive dans votre
project : https://github.com/hibernate/hibernate-reactive/issues/702 projet : https://github.com/hibernate/hibernate-reactive/issues/702

You want to send us a reproducer without having to clone the whole Vous souhaitez nous envoyer un reproducteur sans avoir à cloner le tout
hibernate reactive project and without having to spend too much time on all hibernate projet réactif et sans avoir à passer trop de temps sur tous
the scaffolding needed to create a brand new project. l'échafaudage nécessaire pour créer un tout nouveau projet. Ideally, with jbang, Idéalement, avec jbang,
you could just send us a single file and we could run it. vous pouvez simplement nous envoyer un seul fichier et nous pourrions l'exécuter.

Use ORM 5.4, the default, for now. Utilisez ORM 5.4, la valeur par défaut, pour l'instant.
Not sure why we need to worry about maven, but do what you think is right. Je ne sais pas pourquoi nous devons nous soucier de maven, mais faites ce que vous pensez être juste.

Don't worry about CI, if it's easy for a user to run, it's easy for us to Ne vous inquiétez pas pour CI, s'il est facile à exécuter pour un utilisateur, il est facile pour nous de
add it to ci ajoutez-le à ci

On Wed, 5 May 2021, 21:48 Gavin King, @ . Le mer. 5 mai 2021, 21:48 Gavin King, @ . * > wrote: * > a écrit :

I would suggest just doing the Simplest Thing That Could Possibly Work Je suggérerais simplement de faire la chose la plus simple qui pourrait éventuellement fonctionner
for now. pour le moment.


You are receiving this because you authored the thread. Vous recevez ceci parce que vous êtes l'auteur du fil.
Reply to this email directly, view it on GitHub Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 , https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 ,
or unsubscribe ou désabonnez-vous
https://github.com/notifications/unsubscribe-auth/AAEIQ5JQIPGKCNFSHOWKCD3TMGVKTANCNFSM43OEZPUQ https://github.com/notifications/unsubscribe-auth/AAEIQ5JQIPGKCNFSHOWKCD3TMGVKTANCNFSM43OEZPUQ
. .

en

@blafond , invariably, there will be bugs integrating with HR. @blafond , invariablement, il y aura des bugs d'intégration avec HR. For example, suppose Quarkus passes arguments to HR in the wrong order. Par exemple, supposons que Quarkus transmette des arguments à HR dans le mauvais ordre. This is not a use case that you need to be concerned about here. Ce n'est pas un cas d'utilisation dont vous devez vous préoccuper ici. Integration bugs will need to be reproduced in some other way. Les bogues d'intégration devront être reproduits d'une autre manière.

One way to make it easy for us to add a user's reproducer to a unit test is to have the template somehow extend BaseReactiveTest , so all we have to do is copy/paste into the test suite. Une façon de nous faciliter l'ajout du reproducteur d'un utilisateur à un test unitaire consiste à faire en sorte que le modèle étende d'une manière ou d'une autre BaseReactiveTest , donc tout ce que nous avons à faire est de copier/coller dans la suite de tests. I have no idea if that is the proper approach here. Je n'ai aucune idée si c'est la bonne approche ici. I'm just mentioning it as an example. Je ne le mentionne qu'à titre d'exemple.

en

@maxandersen @gavinking What was the problem with JBang and testcontainers? @maxandersen @gavinking Quel était le problème avec JBang et testcontainers ? It seems to work fine to me: Ca me semble bien fonctionner :

jbang https://github.com/DavideD/hibernate-reactive/blob/721-jbang-executable-test/tooling/jbang/SampleIssueTest.java
en

Yes if you set it up manually it works. Oui, si vous le configurez manuellement, cela fonctionne. Issue is it won't work by just setting the jdbc or similar url. Le problème est que cela ne fonctionnera pas en définissant simplement le jdbc ou une URL similaire.

en

Le problème est lié à l'utilisation d'URL JDBC contenant tc: .

en

Ah, I remember now. Ah, je me souviens maintenant. We still have this issue open: https://github.com/hibernate/hibernate-reactive/issues/468 Nous avons toujours ce problème ouvert : https://github.com/hibernate/hibernate-reactive/issues/468

en

I think we have good starting point now and we can improve on it later. Je pense que nous avons un bon point de départ maintenant et que nous pourrons l'améliorer plus tard.
In particular, when we have a solution for #468 En particulier, lorsque nous avons une solution pour #468

en

is there a reason you don't have that jbang script available as a template so you can do y a-t-il une raison pour laquelle vous n'avez pas ce script jbang disponible comme modèle afin que vous puissiez le faire

jbang init -t testcase@hibernate/hibernate-reactive mytest.java ? jbang init -t testcase@hibernate/hibernate-reactive mytest.java ?

en

No, not really, mainly because I'm still tweaking it and I find it easier to work when it's not a template. Non, pas vraiment, principalement parce que je suis encore en train de le peaufiner et que je trouve qu'il est plus facile de travailler quand ce n'est pas un modèle.

But I'm not sure I understand the syntax you are using. Mais je ne suis pas sûr de comprendre la syntaxe que vous utilisez. What's testcase@hibernate/hibernate-reactive ? Qu'est-ce que testcase@hibernate/hibernate-reactive ? Is it something that's been added to the catalog via jbang template add ... or does it refer to something else? Est-ce quelque chose qui a été ajouté au catalogue via jbang template add ... ou fait-il référence à autre chose ?

Would it be possible to refer to a github repository as the location of the template? Serait-il possible de se référer à un référentiel github comme emplacement du modèle ?

en

testcase is the template name found in jbang-catalog. testcase est le nom du modèle trouvé dans jbang-catalog.

hibernate/hibernate-reactive maps to github.com/hibernate/hibernate-reactive. hibernate/hibernate-reactive correspond à github.com/hibernate/hibernate-reactive.

so that is the github repository location. c'est donc l'emplacement du référentiel github.

en

Ah nice! Ah sympa ! I will try it je vais essayer

en
Cette page vous a été utile?
0 / 5 - 0 notes