Hibernate-reactive: Selidiki cara membuat template untuk JBang untuk membantu laporan bug

Dibuat pada 23 Apr 2021  ·  31Komentar  ·  Sumber: hibernate/hibernate-reactive

See https://github.com/jbangdev/jbang#init -templates Lihat 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. Alangkah baiknya jika pengguna dapat membuat proyek pengujian dasar menggunakan JBa sehingga mereka memiliki cara cepat untuk mulai membuat proyek untuk mereproduksi masalah yang mereka alami.

I haven't checked if this is feasible or helpful yet. Saya belum memeriksa apakah ini layak atau bermanfaat. In my head it should make it even easier than cloning a template from our repository . Di kepala saya itu akan membuatnya lebih mudah daripada mengkloning template dari repositori kami .

en
testing

Semua 31 komentar

@maxandersen already played with this. @maxandersen sudah bermain dengan ini. What he didn't like, and what might also be a problem here, is that he couldn't easily use a testcontainers database. Apa yang tidak dia sukai, dan yang mungkin juga menjadi masalah di sini, adalah dia tidak dapat dengan mudah menggunakan database testcontainers.

en

It works but yeah users would need to manually setup the database. Ini berfungsi tetapi ya pengguna perlu mengatur database secara manual.

But so should users using more complex setups :) Tetapi begitu juga pengguna yang menggunakan pengaturan yang lebih kompleks :)

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. Apa yang dapat Anda lakukan adalah mengatur skrip jbang melalui wadah uji secara manual daripada menggunakan sihir url jdbc yang tidak berfungsi (belum) dengan hibernate reaktif.

en

Saya memang melihat secara singkat untuk membuat kode bootstrap testcontainers di suite pengujian kami dapat digunakan kembali, tetapi itu tidak akan menjadi sepele.

en

Maksud saya ... testcontainers adalah alat yang hebat ... tapi saya mengambil risiko di sini dan mengatakan bahwa kita dapat mengharapkan orang yang menggunakan Hibernate Reactive (atau ORM) untuk dapat memulai db tanpa itu :-)

en

It's certainly not a deal breaker to me, most of the boring part is really the configuration of the project. Ini tentu bukan pemecah kesepakatan bagi saya, sebagian besar bagian yang membosankan sebenarnya adalah konfigurasi proyek. 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. Jika saya harus memulai db meluncurkan skrip secara manual sebelum dapat menjalankan aplikasi utama, itu sudah menjadi peningkatan besar.

en

Sure, that's fine. Tentu, tidak apa-apa. But it's a nice-to-have. Tapi itu bagus untuk dimiliki.

en

Memikirkannya, kami mungkin bahkan tidak memerlukan template untuk memulai, kami dapat menyediakan file Java dengan semua dependensi yang diperlukan untuk JBag untuk menjalankannya.

en

Saya pikir dengan "templat" Anda berharap untuk membuat parameter berdasarkan tipe basis data.

en

I was talking about a JBang template, something that would allow the user to write: Saya sedang berbicara tentang template JBang, sesuatu yang memungkinkan pengguna untuk menulis:

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

but I guess this would also be possible: tapi saya kira ini juga mungkin:

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: Sekarang saya pikir kita dapat mencapai hasil yang sama dengan menyediakan satu file (atau satu per database) sehingga pengguna dapat menjalankannya dengan:

jbang HReactiveWithDb2.java

With the caveat that a Db2 instance with the right credentials must be already running. Dengan peringatan bahwa instance Db2 dengan kredensial yang tepat harus sudah berjalan.

Then they could start editing it with: Kemudian mereka dapat mulai mengeditnya dengan:

 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. Kami dapat memikirkan cara untuk menambahkan semua lonceng dan peluit yang kami inginkan, tetapi ini akan menjadi titik awal yang baik bagi saya.

en

In my previous example, HReactiveWithDb2.java is somewhere on our GitHub repository and a user has to download it first. Dalam contoh saya sebelumnya, HReactiveWithDb2.java ada di suatu tempat di repositori GitHub kami dan pengguna harus mengunduhnya terlebih dahulu.

Although, I expect JBang to have some way to run something like: Meskipun, saya berharap JBang memiliki beberapa cara untuk menjalankan sesuatu seperti:

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

Template jbang memiliki semacam dukungan untuk parameter AFAIU, dan saya pikir itu cukup untuk mengatakan beralih dalam file persistence.xml tertentu.

en

Tentu, kedengarannya bagus.

en

Very interesting! Sangat menarik!

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. Satu hal tambahan yang mungkin ingin Anda pertimbangkan: sangat sering pengguna Quarkus didorong untuk membuat "proyek reproducer" tetapi dalam kebanyakan kasus ini akhirnya menjadi sesuatu yang harus saya adaptasi kembali menjadi tes integrasi nyata untuk digabungkan di arus utama 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. Saya bertanya-tanya apakah kita dapat menyusun "reproduksi" kita sedemikian rupa sehingga dapat secara otomatis dipromosikan menjadi tes integrasi baru.

en

Anda dapat membuat kelas "utama" pada dasarnya menjadi pelari uji junit yang menjalankan kelas dengan @Test di dalamnya.

en

Btw. Omong-omong. If Properties / qute template is not enough / not working let me know. Jika Properties/template qute tidak cukup/tidak berfungsi, beri tahu saya. The init templates are new so if you find things missing I Can easily fix/release new jbang. Template init baru jadi jika Anda menemukan hal-hal yang hilang, saya dapat dengan mudah memperbaiki/melepaskan jbang baru.

en

@maxanderson Saya dapat menambahkan template dan init dengan mereka thx!

en

I'm looking at our hibernate-reactive examples which use the entity manager factory and persistence.xml and separate entity classes. Saya melihat contoh hibernasi-reaktif kami yang menggunakan pabrik manajer entitas dan persistence.xml dan kelas entitas terpisah. The tests chain multiple transactions by waiting indefinitely . Tes rantai beberapa transaksi dengan menunggu indefinitely . All of our HR JUnit tests use chained CompletionStage 's as opposed to the single session transactions used in our examples . Semua pengujian HR JUnit kami menggunakan CompletionStage yang dirantai sebagai lawan dari transaksi sesi tunggal yang digunakan dalam examples kami.

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. Fitur Jbang memungkinkan melampirkan sumber daya (kelas entitas dan persistence.xml ) pada proses add (atau pendaftaran) yang akan disertakan dalam registri template Jbang. This will result in a copy of those entities will be included in the project and build. Ini akan menghasilkan salinan entitas tersebut akan disertakan dalam proyek dan build. 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. Jadi secara teori, kita dapat menghasilkan kelas pengujian Main.java dan/atau MutinyMain.java dan berakhir dengan sesuatu yang mirip dengan direktori contoh ini.

Note there is another feature that uses .jsh script that allows setting user-defined parameters to be replaced in a template file. Perhatikan ada fitur lain yang menggunakan skrip .jsh yang memungkinkan pengaturan parameter yang ditentukan pengguna diganti dalam file template. (alluded to earlier ^^^) but @MaxAndersen indicated they could be added to the JBang init command. (disinggung sebelumnya ^^^) tetapi @MaxAndersen mengindikasikan bahwa mereka dapat ditambahkan ke perintah JBag init .

Questions: Pertanyaan:

  1. Is there a target hibernate-reactive user/customer and use case we're aiming for? Apakah ada target pengguna/pelanggan hibernasi-reaktif dan kasus penggunaan yang kami tuju?

    • Based on the complexity, we may need to build/publish a hibernate-reactive-test to maven, which would need to be maintained Berdasarkan kerumitannya, kita mungkin perlu membangun/memublikasikan hibernate-reactive-test ke maven, yang perlu dipertahankan
  2. Do we want to be able to test these generated tests against older or newer versions of HR & HR ORM? Apakah kita ingin dapat menguji tes yang dihasilkan ini terhadap versi HR & HR ORM yang lebih lama atau lebih baru?

    • 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 ) Template dasar memerlukan dependensi (seperti impor di masa mendatang) yang ditarik selama pembuatan proyek (contoh: //DEPS org.hibernate:hibernate-core:5.4.10.Final )
    • This would help users define/document their build environment as part of the test generation Ini akan membantu pengguna mendefinisikan/mendokumentasikan lingkungan build mereka sebagai bagian dari generasi pengujian
  3. Simple examples like we have now are still viable, of course. Contoh sederhana seperti yang kita miliki sekarang masih layak, tentu saja.

en

Saya akan menyarankan hanya melakukan Hal Paling Sederhana yang Mungkin Bisa Bekerja untuk saat ini.

en

@blafond , here's your use case: @blafond , inilah kasus penggunaan Anda:
You are User and found this issue while using hibernate reactive in your Anda adalah Pengguna dan menemukan masalah ini saat menggunakan hibernate reaktif di . Anda
project : https://github.com/hibernate/hibernate-reactive/issues/702 proyek: https://github.com/hibernate/hibernate-reactive/issues/702

You want to send us a reproducer without having to clone the whole Anda ingin mengirimi kami sebuah reproduksi tanpa harus mengkloning keseluruhannya
hibernate reactive project and without having to spend too much time on all hibernasi proyek reaktif dan tanpa harus menghabiskan terlalu banyak waktu untuk semua
the scaffolding needed to create a brand new project. perancah yang diperlukan untuk membuat proyek baru. Ideally, with jbang, Idealnya, dengan jbang,
you could just send us a single file and we could run it. Anda cukup mengirimkan satu file kepada kami dan kami dapat menjalankannya.

Use ORM 5.4, the default, for now. Gunakan ORM 5.4, default, untuk saat ini.
Not sure why we need to worry about maven, but do what you think is right. Tidak yakin mengapa kita perlu khawatir tentang maven, tetapi lakukan apa yang menurut Anda benar.

Don't worry about CI, if it's easy for a user to run, it's easy for us to Jangan khawatir tentang CI, jika mudah bagi pengguna untuk menjalankannya, mudah bagi kami untuk
add it to ci tambahkan ke ci

On Wed, 5 May 2021, 21:48 Gavin King, @ . Pada Rabu, 5 Mei 2021, 21:48 Gavin King, @ . * > wrote: * > menulis:

I would suggest just doing the Simplest Thing That Could Possibly Work for Saya akan menyarankan hanya melakukan Hal Paling Sederhana yang Mungkin Bisa Bekerja untuk
now. sekarang.


You are receiving this because you authored the thread. Anda menerima ini karena Anda yang menulis utas.
Reply to this email directly, view it on GitHub Balas email ini secara langsung, lihat di GitHub
https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 , https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 ,
or unsubscribe atau berhenti berlangganan
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 Hanya untuk memperjelas, masalah ditemukan menggunakan quarkus, tetapi pembuatnya
should only use hibernate reactive seharusnya hanya menggunakan reaktif hibernasi

On Thu, 6 May 2021, 10:51 Davide D'Alto, @ . Pada Kam, 6 Mei 2021, 10:51 Davide D'Alto, @ . * > wrote: * > menulis:

@blafond , here's your use case: @blafond , inilah kasus penggunaan Anda:
You are User and found this issue while using hibernate reactive in your Anda adalah Pengguna dan menemukan masalah ini saat menggunakan hibernate reaktif di . Anda
project : https://github.com/hibernate/hibernate-reactive/issues/702 proyek: https://github.com/hibernate/hibernate-reactive/issues/702

You want to send us a reproducer without having to clone the whole Anda ingin mengirimi kami sebuah reproduksi tanpa harus mengkloning keseluruhannya
hibernate reactive project and without having to spend too much time on all hibernasi proyek reaktif dan tanpa harus menghabiskan terlalu banyak waktu untuk semua
the scaffolding needed to create a brand new project. perancah yang diperlukan untuk membuat proyek baru. Ideally, with jbang, Idealnya, dengan jbang,
you could just send us a single file and we could run it. Anda cukup mengirimkan satu file kepada kami dan kami dapat menjalankannya.

Use ORM 5.4, the default, for now. Gunakan ORM 5.4, default, untuk saat ini.
Not sure why we need to worry about maven, but do what you think is right. Tidak yakin mengapa kita perlu khawatir tentang maven, tetapi lakukan apa yang menurut Anda benar.

Don't worry about CI, if it's easy for a user to run, it's easy for us to Jangan khawatir tentang CI, jika mudah bagi pengguna untuk menjalankannya, mudah bagi kami untuk
add it to ci tambahkan ke ci

On Wed, 5 May 2021, 21:48 Gavin King, @ . Pada Rabu, 5 Mei 2021, 21:48 Gavin King, @ . * > wrote: * > menulis:

I would suggest just doing the Simplest Thing That Could Possibly Work Saya sarankan hanya melakukan Hal Paling Sederhana yang Mungkin Bisa Bekerja
for now. untuk sekarang.


You are receiving this because you authored the thread. Anda menerima ini karena Anda yang menulis utas.
Reply to this email directly, view it on GitHub Balas email ini secara langsung, lihat di GitHub
https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 , https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 ,
or unsubscribe atau berhenti berlangganan
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 , selalu, akan ada bug yang terintegrasi dengan HR. For example, suppose Quarkus passes arguments to HR in the wrong order. Misalnya, Quarkus meneruskan argumen ke HR dalam urutan yang salah. This is not a use case that you need to be concerned about here. Ini bukan kasus penggunaan yang perlu Anda khawatirkan di sini. Integration bugs will need to be reproduced in some other way. Bug integrasi perlu direproduksi dengan cara lain.

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. Salah satu cara untuk memudahkan kita menambahkan pereproduksi pengguna ke pengujian unit adalah dengan membuat template entah bagaimana diperpanjang BaseReactiveTest , jadi yang harus kita lakukan hanyalah menyalin/menempel ke suite pengujian. I have no idea if that is the proper approach here. Saya tidak tahu apakah itu pendekatan yang tepat di sini. I'm just mentioning it as an example. Saya hanya menyebutkannya sebagai contoh.

en

@maxandersen @gavinking What was the problem with JBang and testcontainers? @maxandersen @gavinking Apa masalahnya dengan JBang dan testcontainers? It seems to work fine to me: Tampaknya berfungsi dengan baik bagi saya:

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. Ya, jika Anda mengaturnya secara manual, itu berfungsi. Issue is it won't work by just setting the jdbc or similar url. Masalahnya adalah itu tidak akan berfungsi hanya dengan mengatur jdbc atau url serupa.

en

Masalahnya adalah dengan penggunaan URL JDBC yang berisi tc: .

en

Ah, I remember now. Ah, aku ingat sekarang. We still have this issue open: https://github.com/hibernate/hibernate-reactive/issues/468 Kami masih memiliki masalah ini terbuka: https://github.com/hibernate/hibernate-reactive/issues/468

en

I think we have good starting point now and we can improve on it later. Saya pikir kami memiliki titik awal yang baik sekarang dan kami dapat meningkatkannya nanti.
In particular, when we have a solution for #468 Khususnya, ketika kami memiliki solusi untuk #468

en

is there a reason you don't have that jbang script available as a template so you can do apakah ada alasan Anda tidak memiliki skrip jbang yang tersedia sebagai templat sehingga Anda dapat melakukannya

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. Tidak, tidak juga, terutama karena saya masih mengutak-atiknya dan saya merasa lebih mudah untuk bekerja saat itu bukan template.

But I'm not sure I understand the syntax you are using. Tapi saya tidak yakin saya mengerti sintaks yang Anda gunakan. What's testcase@hibernate/hibernate-reactive ? Apa itu 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? Apakah itu sesuatu yang telah ditambahkan ke katalog melalui jbang template add ... atau apakah itu merujuk ke sesuatu yang lain?

Would it be possible to refer to a github repository as the location of the template? Apakah mungkin untuk merujuk ke repositori github sebagai lokasi templat?

en

testcase is the template name found in jbang-catalog. testcase adalah nama template yang ditemukan di jbang-catalog.

hibernate/hibernate-reactive maps to github.com/hibernate/hibernate-reactive. peta hibernate/hibernate-reactive ke github.com/hibernate/hibernate-reactive.

so that is the github repository location. jadi itu adalah lokasi repositori github.

en

Ah nice! Ah bagus! I will try it saya akan mencobanya

en
Apakah halaman ini membantu?
0 / 5 - 0 peringkat