Hibernate-reactive: Untersuchen Sie, wie Sie eine Vorlage für JBang erstellen, um bei Fehlerberichten zu helfen

Erstellt am 23. Apr. 2021  ·  31Kommentare  ·  Quelle: hibernate/hibernate-reactive

See https://github.com/jbangdev/jbang#init -templates Siehe 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. Es wäre schön, wenn Benutzer mit JBang ein einfaches Testprojekt generieren könnten, damit sie schnell mit der Erstellung eines Projekts beginnen können, um das Problem zu reproduzieren, das sie haben.

I haven't checked if this is feasible or helpful yet. Ich habe noch nicht überprüft, ob dies machbar oder hilfreich ist. In my head it should make it even easier than cloning a template from our repository . In meinen Augen sollte es sogar noch einfacher sein, als eine Vorlage aus unserem Repository zu klonen .

en
testing

Alle 31 Kommentare

@maxandersen already played with this. @maxandersen hat damit schon gespielt. What he didn't like, and what might also be a problem here, is that he couldn't easily use a testcontainers database. Was ihm nicht gefiel und was hier auch ein Problem sein könnte, ist, dass er eine Testcontainers-Datenbank nicht ohne weiteres verwenden konnte.

en

It works but yeah users would need to manually setup the database. Es funktioniert, aber ja, Benutzer müssten die Datenbank manuell einrichten.

But so should users using more complex setups :) Aber das sollten Benutzer auch, die komplexere Setups verwenden :)

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. Was Sie tun können, ist, das Jbang-Skript manuell über Testcontainer einzurichten, anstatt die jdbc-URL-Magie zu verwenden, die (noch) nicht mit Hibernate Reactive funktioniert.

en

Ich habe kurz versucht, den Bootstrap-Code von testcontainers in unserer Testsuite wiederverwendbar zu machen, aber das würde nicht so trivial werden.

en

Ich meine... testcontainers ist ein großartiges Tool... aber ich gehe hier auf die Sprünge und sage, dass wir erwarten können, dass Leute, die Hibernate Reactive (oder ORM) verwenden, in der Lage sind, eine DB ohne es zu starten :-)

en

It's certainly not a deal breaker to me, most of the boring part is really the configuration of the project. Es ist sicherlich kein Deal Breaker für mich, der langweiligste Teil ist wirklich die Konfiguration des Projekts. 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. Wenn ich eine Datenbank starten muss, die ein Skript manuell startet, bevor ich den Hauptteil der App ausführen kann, wäre dies bereits eine große Verbesserung.

en

Sure, that's fine. Klar, das ist in Ordnung. But it's a nice-to-have. Aber es ist ein Nice-to-have.

en

Wenn wir darüber nachdenken, brauchen wir wahrscheinlich nicht einmal eine Vorlage, wir könnten eine Java-Datei mit allen Abhängigkeiten bereitstellen, die JBang benötigt, um sie auszuführen.

en

Ich dachte, Sie wollten nach "Vorlage" nach Datenbanktyp parametrisieren.

en

I was talking about a JBang template, something that would allow the user to write: Ich habe über eine JBang-Vorlage gesprochen, etwas, mit dem der Benutzer schreiben kann:

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

but I guess this would also be possible: aber ich denke das wäre auch möglich:

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: Jetzt denke ich, wir könnten das gleiche Ergebnis erzielen, indem wir eine einzelne Datei (oder eine pro Datenbank) bereitstellen, damit ein Benutzer sie ausführen kann mit:

jbang HReactiveWithDb2.java

With the caveat that a Db2 instance with the right credentials must be already running. Mit der Einschränkung, dass bereits eine Db2-Instanz mit den richtigen Anmeldeinformationen ausgeführt werden muss.

Then they could start editing it with: Dann könnten sie mit der Bearbeitung beginnen mit:

 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. Wir können uns überlegen, wie wir all den Schnickschnack hinzufügen können, den wir wollen, aber das wäre ein guter Ausgangspunkt für mich.

en

In my previous example, HReactiveWithDb2.java is somewhere on our GitHub repository and a user has to download it first. In meinem vorherigen Beispiel befindet sich HReactiveWithDb2.java irgendwo in unserem GitHub-Repository und ein Benutzer muss es zuerst herunterladen.

Although, I expect JBang to have some way to run something like: Obwohl ich erwarte, dass JBang eine Möglichkeit hat, so etwas auszuführen wie:

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

Nun, Jbang-Vorlagen haben eine Art Unterstützung für Parameter AFAIU, und ich denke , das sollte ausreichen, um zu sagen, dass in einer bestimmten persistence.xml -Datei gewechselt wird.

en

Klar, hört sich toll an.

en

Very interesting! Sehr interessant!

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. Eine zusätzliche Sache, die Sie vielleicht berücksichtigen möchten: Sehr oft werden Quarkus-Benutzer ermutigt, ein "Reproducer-Projekt" zu erstellen, aber in den meisten Fällen endet dies dann in etwas, das ich in einen echten Integrationstest umwandeln muss, um es in Quarkus Mainline einzubinden .

I do wonder if we could structure our "reproducers" in such a way that it could be automatically promoted into a new integration test. Ich frage mich, ob wir unsere "Reproduzierer" so strukturieren könnten, dass sie automatisch in einen neuen Integrationstest befördert werden könnten.

en

Sie können die "Haupt" -Klasse im Grunde als Junit-Testläufer verwenden, der Klassen mit @Test darin ausführt.

en

Btw. Übrigens. If Properties / qute template is not enough / not working let me know. Wenn Properties / qute template nicht ausreicht / nicht funktioniert, lassen Sie es mich wissen. The init templates are new so if you find things missing I Can easily fix/release new jbang. Die Init-Vorlagen sind neu. Wenn Sie also feststellen, dass Dinge fehlen, kann ich neue jbang leicht reparieren/veröffentlichen.

en

@maxanderson Ich kann Vorlagen hinzufügen und mit ihnen initieren , danke!

en

I'm looking at our hibernate-reactive examples which use the entity manager factory and persistence.xml and separate entity classes. Ich schaue mir unsere Hibernate-Reactive- Beispiele an, die die Entity-Manager-Factory und persistence.xml und separate Entity-Klassen verwenden. The tests chain multiple transactions by waiting indefinitely . Die Tests verketten mehrere Transaktionen, indem sie auf indefinitely warten. All of our HR JUnit tests use chained CompletionStage 's as opposed to the single session transactions used in our examples . Alle unsere HR JUnit-Tests verwenden verkettete CompletionStage 's im Gegensatz zu den Einzelsitzungstransaktionen, die in unseren examples verwendet werden.

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. JBang-Funktionen ermöglichen das Anhängen von Ressourcen (Entitätsklassen und persistence.xml ) an den add - (oder Registrierungs-) Prozess, der in die Jbang-Vorlagenregistrierung aufgenommen wird. This will result in a copy of those entities will be included in the project and build. Dies führt dazu, dass eine Kopie dieser Entitäten in das Projekt aufgenommen und erstellt wird. 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. Theoretisch können wir also die Testklassen Main.java und/oder MutinyMain.java generieren und am Ende etwas Ähnliches wie diese Beispielverzeichnisse erhalten.

Note there is another feature that uses .jsh script that allows setting user-defined parameters to be replaced in a template file. Beachten Sie, dass es eine weitere Funktion gibt, die ein .jsh -Skript verwendet, mit dem benutzerdefinierte Parameter in einer Vorlagendatei ersetzt werden können. (alluded to earlier ^^^) but @MaxAndersen indicated they could be added to the JBang init command. (Anspielung auf früher ^^^), aber @MaxAndersen gab an, dass sie dem JBang init -Befehl hinzugefügt werden könnten.

Questions: Fragen:

  1. Is there a target hibernate-reactive user/customer and use case we're aiming for? Gibt es einen Ziel-Ruhezustand-reaktiven Benutzer/Kunden und einen Anwendungsfall, den wir anstreben?

    • Based on the complexity, we may need to build/publish a hibernate-reactive-test to maven, which would need to be maintained Aufgrund der Komplexität müssen wir möglicherweise ein hibernate-reactive-test für Maven erstellen/veröffentlichen, das gewartet werden müsste
  2. Do we want to be able to test these generated tests against older or newer versions of HR & HR ORM? Wollen wir in der Lage sein, diese generierten Tests mit älteren oder neueren Versionen von HR & HR ORM zu testen?

    • 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 ) Die grundlegenden Vorlagen erfordern Abhängigkeiten (wie zukünftige Importe), die während der Projekterstellung hinzugezogen werden (Beispiel: //DEPS org.hibernate:hibernate-core:5.4.10.Final ).
    • This would help users define/document their build environment as part of the test generation Dies würde Benutzern helfen, ihre Build-Umgebung als Teil der Testgenerierung zu definieren/dokumentieren
  3. Simple examples like we have now are still viable, of course. Einfache Beispiele, wie wir sie jetzt haben, sind natürlich immer noch machbar.

en

Ich würde vorschlagen, vorerst nur das Einfachste zu tun, was möglicherweise funktionieren könnte.

en

@blafond , here's your use case: @blafond , hier ist dein Anwendungsfall:
You are User and found this issue while using hibernate reactive in your Sie sind Benutzer und haben dieses Problem bei der Verwendung von Hibernate Reactive in Ihrem festgestellt
project : https://github.com/hibernate/hibernate-reactive/issues/702 Projekt: https://github.com/hibernate/hibernate-reactive/issues/702

You want to send us a reproducer without having to clone the whole Sie möchten uns einen Reproduktionsapparat zusenden, ohne das Ganze klonen zu müssen
hibernate reactive project and without having to spend too much time on all reaktives Projekt überwintern und ohne zu viel Zeit für alles aufwenden zu müssen
the scaffolding needed to create a brand new project. das Gerüst, das benötigt wird, um ein brandneues Projekt zu erstellen. Ideally, with jbang, Idealerweise mit jbang,
you could just send us a single file and we could run it. Sie könnten uns einfach eine einzelne Datei schicken und wir könnten sie ausführen.

Use ORM 5.4, the default, for now. Verwenden Sie vorerst ORM 5.4, die Standardeinstellung.
Not sure why we need to worry about maven, but do what you think is right. Ich bin mir nicht sicher, warum wir uns um Maven Sorgen machen müssen, aber tun Sie, was Sie für richtig halten.

Don't worry about CI, if it's easy for a user to run, it's easy for us to Machen Sie sich keine Sorgen um CI, wenn es für einen Benutzer einfach auszuführen ist, ist es auch für uns einfach
add it to ci füge es zu ci hinzu

On Wed, 5 May 2021, 21:48 Gavin King, @ . Am Mi, 5. Mai 2021, 21:48 Uhr Gavin King, @ . * > wrote: * > schrieb:

I would suggest just doing the Simplest Thing That Could Possibly Work for Ich würde vorschlagen, nur das Einfachste zu tun, was möglicherweise funktionieren könnte
now. jetzt.


You are receiving this because you authored the thread. Sie erhalten dies, weil Sie den Thread verfasst haben.
Reply to this email directly, view it on GitHub Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 , https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 ,
or unsubscribe oder abbestellen
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 Nur zur Verdeutlichung, das Problem wurde mit Quarkus gefunden, aber mit dem Reproduzierer
should only use hibernate reactive sollte nur den reaktiven Ruhezustand verwenden

On Thu, 6 May 2021, 10:51 Davide D'Alto, @ . Am Do, 6. Mai 2021, 10:51 Uhr Davide D'Alto, @ . * > wrote: * > schrieb:

@blafond , here's your use case: @blafond , hier ist dein Anwendungsfall:
You are User and found this issue while using hibernate reactive in your Sie sind Benutzer und haben dieses Problem bei der Verwendung von Hibernate Reactive in Ihrem festgestellt
project : https://github.com/hibernate/hibernate-reactive/issues/702 Projekt: https://github.com/hibernate/hibernate-reactive/issues/702

You want to send us a reproducer without having to clone the whole Sie möchten uns einen Reproduktionsapparat zusenden, ohne das Ganze klonen zu müssen
hibernate reactive project and without having to spend too much time on all reaktives Projekt überwintern und ohne zu viel Zeit für alles aufwenden zu müssen
the scaffolding needed to create a brand new project. das Gerüst, das benötigt wird, um ein brandneues Projekt zu erstellen. Ideally, with jbang, Idealerweise mit jbang,
you could just send us a single file and we could run it. Sie könnten uns einfach eine einzelne Datei schicken und wir könnten sie ausführen.

Use ORM 5.4, the default, for now. Verwenden Sie vorerst ORM 5.4, die Standardeinstellung.
Not sure why we need to worry about maven, but do what you think is right. Ich bin mir nicht sicher, warum wir uns um Maven Sorgen machen müssen, aber tun Sie, was Sie für richtig halten.

Don't worry about CI, if it's easy for a user to run, it's easy for us to Machen Sie sich keine Sorgen um CI, wenn es für einen Benutzer einfach auszuführen ist, ist es auch für uns einfach
add it to ci füge es zu ci hinzu

On Wed, 5 May 2021, 21:48 Gavin King, @ . Am Mi, 5. Mai 2021, 21:48 Uhr Gavin King, @ . * > wrote: * > schrieb:

I would suggest just doing the Simplest Thing That Could Possibly Work Ich würde vorschlagen, nur das Einfachste zu tun, was möglicherweise funktionieren könnte
for now. zur Zeit.


You are receiving this because you authored the thread. Sie erhalten dies, weil Sie den Thread verfasst haben.
Reply to this email directly, view it on GitHub Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 , https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 ,
or unsubscribe oder abbestellen
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 , es wird ausnahmslos Fehler geben, die sich in die Personalabteilung integrieren. For example, suppose Quarkus passes arguments to HR in the wrong order. Angenommen, Quarkus übergibt Argumente in der falschen Reihenfolge an die Personalabteilung. This is not a use case that you need to be concerned about here. Dies ist kein Anwendungsfall, um den Sie sich hier kümmern müssen. Integration bugs will need to be reproduced in some other way. Integrationsfehler müssen auf andere Weise reproduziert werden.

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. Eine Möglichkeit, uns das Hinzufügen des Reproduzierers eines Benutzers zu einem Komponententest zu erleichtern, besteht darin, die Vorlage irgendwie zu erweitern BaseReactiveTest , sodass wir nur kopieren und in die Testsuite einfügen müssen. I have no idea if that is the proper approach here. Keine Ahnung, ob das hier der richtige Ansatz ist. I'm just mentioning it as an example. Ich nenne es nur als Beispiel.

en

@maxandersen @gavinking What was the problem with JBang and testcontainers? @maxandersen @gavinking Was war das Problem mit JBang und Testcontainern? It seems to work fine to me: Bei mir scheint es gut zu funktionieren:

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. Ja, wenn Sie es manuell einrichten, funktioniert es. Issue is it won't work by just setting the jdbc or similar url. Das Problem ist, dass es nicht funktioniert, indem Sie einfach die jdbc- oder eine ähnliche URL festlegen.

en

Das Problem liegt in der Verwendung von JDBC-URLs, die tc: enthalten.

en

Ah, I remember now. Ah, jetzt erinnere ich mich. We still have this issue open: https://github.com/hibernate/hibernate-reactive/issues/468 Wir haben dieses Problem noch offen: https://github.com/hibernate/hibernate-reactive/issues/468

en

I think we have good starting point now and we can improve on it later. Ich denke, wir haben jetzt eine gute Ausgangsposition und können uns später verbessern.
In particular, when we have a solution for #468 Insbesondere, wenn wir eine Lösung für #468 haben

en

is there a reason you don't have that jbang script available as a template so you can do Gibt es einen Grund, warum Sie dieses Jbang-Skript nicht als Vorlage zur Verfügung haben, damit Sie es tun können?

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. Nein, nicht wirklich, hauptsächlich, weil ich es immer noch verfeinere und ich es einfacher finde, zu arbeiten, wenn es keine Vorlage ist.

But I'm not sure I understand the syntax you are using. Aber ich bin mir nicht sicher, ob ich die von Ihnen verwendete Syntax verstehe. What's testcase@hibernate/hibernate-reactive ? Was ist 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? Ist es etwas, das dem Katalog über jbang template add ... hinzugefügt wurde, oder bezieht es sich auf etwas anderes?

Would it be possible to refer to a github repository as the location of the template? Wäre es möglich, auf ein Github-Repository als Speicherort der Vorlage zu verweisen?

en

testcase is the template name found in jbang-catalog. testcase ist der Vorlagenname, der in jbang-catalog zu finden ist.

hibernate/hibernate-reactive maps to github.com/hibernate/hibernate-reactive. hibernate/hibernate-reactive wird github.com/hibernate/hibernate-reactive zugeordnet.

so that is the github repository location. Das ist also der Speicherort des Github-Repositorys.

en

Ah nice! Ah schön! I will try it Ich werde es versuchen

en
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen