Hibernate-reactive: Узнайте, как создать шаблон для JBang, чтобы помочь с отчетами об ошибках.

Созданный на 23 апр. 2021  ·  31Комментарии  ·  Источник: hibernate/hibernate-reactive

See https://github.com/jbangdev/jbang#init -templates См. https://github.com/jbangdev/jbang#init -шаблоны

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. Было бы неплохо, если бы пользователи могли создать базовый тестовый проект с помощью JBang , чтобы у них был быстрый способ начать создание проекта для воспроизведения проблемы, с которой они столкнулись.

I haven't checked if this is feasible or helpful yet. Я еще не проверял, возможно ли это или полезно. In my head it should make it even easier than cloning a template from our repository . В моей голове это должно быть даже проще, чем клонирование шаблона из нашего репозитория .

en

Все 31 Комментарий

@maxandersen already played with this. @maxandersen уже играл с этим. What he didn't like, and what might also be a problem here, is that he couldn't easily use a testcontainers database. Что ему не нравилось и что здесь тоже может быть проблемой, так это то, что он не мог легко использовать базу данных testcontainers.

en

It works but yeah users would need to manually setup the database. Это работает, но да, пользователям нужно будет вручную настроить базу данных.

But so should users using more complex setups :) Но то же самое должны делать и пользователи, использующие более сложные настройки :)

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. Что вы можете сделать, так это настроить скрипт jbang через тестовые контейнеры вручную, а не использовать магию URL-адресов jdbc, которая (пока) не работает с реактивным спящим режимом.

en

Я кратко рассмотрел возможность повторного использования загрузочного кода testcontainers в нашем тестовом наборе, но это не было настолько тривиально.

en

Я имею в виду... testcontainers - отличный инструмент... но я рискну и скажу, что мы можем ожидать, что люди, использующие Hibernate Reactive (или ORM), смогут запускать БД без него :-)

en

It's certainly not a deal breaker to me, most of the boring part is really the configuration of the project. Это, конечно, не мешает мне, большая часть скучной части — это конфигурация проекта. 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. Если мне придется запускать БД, запускающую скрипт вручную, прежде чем я смогу запустить основную часть приложения, это уже будет большим улучшением.

en

Sure, that's fine. Конечно, это нормально. But it's a nice-to-have. Но это приятно иметь.

en

Если подумать, нам, вероятно, даже не нужен шаблон для начала, мы могли бы предоставить java-файл со всеми зависимостями, необходимыми JBang для его запуска.

en

Я понял, что под «шаблоном» вы надеялись параметризовать тип базы данных.

en

I was talking about a JBang template, something that would allow the user to write: Я говорил о шаблоне JBang, который позволит пользователю написать:

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

but I guess this would also be 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: Теперь я думаю, что мы могли бы добиться того же результата, предоставив один файл (или один файл для каждой базы данных), чтобы пользователь мог запустить его с помощью:

jbang HReactiveWithDb2.java

With the caveat that a Db2 instance with the right credentials must be already running. С той оговоркой, что экземпляр Db2 с правильными учетными данными уже должен быть запущен.

Then they could start editing it with: Затем они могли начать редактировать его с помощью:

 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. Мы можем придумать способы добавить все навороты, которые захотим, но для меня это было бы хорошей отправной точкой.

en

In my previous example, HReactiveWithDb2.java is somewhere on our GitHub repository and a user has to download it first. В моем предыдущем примере HReactiveWithDb2.java находится где-то в нашем репозитории GitHub, и пользователь должен сначала загрузить его.

Although, I expect JBang to have some way to run something like: Хотя я ожидаю, что у JBang будет какой-то способ запустить что-то вроде:

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

Что ж, шаблоны jbang имеют некоторую поддержку параметров AFAIU, и я думаю , что этого должно быть достаточно, чтобы сказать, что переключатель в определенном файле persistence.xml .

en

Конечно, звучит отлично.

en

Very interesting! Очень интересно!

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. Еще одна вещь, которую, возможно, вы захотите учесть: очень часто пользователям Quarkus предлагается создать «проект-воспроизводитель», но в большинстве случаев это заканчивается тем, что мне нужно повторно адаптировать его к реальному интеграционному тесту, который будет объединен с основной веткой 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. Мне интересно, можем ли мы структурировать наши «воспроизводители» таким образом, чтобы их можно было автоматически продвигать в новый интеграционный тест.

en

Вы можете сделать так, чтобы «основной» класс был в основном исполнителем тестов junit, который запускает классы с @Test в нем.

en

Btw. Кстати. If Properties / qute template is not enough / not working let me know. Если свойств/шаблона qute недостаточно/не работает, дайте мне знать. The init templates are new so if you find things missing I Can easily fix/release new jbang. Шаблоны инициализации новые, поэтому, если вы обнаружите, что чего-то не хватает, я могу легко исправить/выпустить новый jbang.

en

@maxanderson Я могу добавлять шаблоны и запускать их, спасибо!

en

I'm looking at our hibernate-reactive examples which use the entity manager factory and persistence.xml and separate entity classes. Я смотрю на наши примеры , реагирующие на гибернацию, которые используют фабрику диспетчера сущностей и persistence.xml и отдельные классы сущностей. The tests chain multiple transactions by waiting indefinitely . Тесты связывают несколько транзакций, ожидая indefinitely . All of our HR JUnit tests use chained CompletionStage 's as opposed to the single session transactions used in our examples . Все наши тесты HR JUnit используют цепочку CompletionStage , в отличие от транзакций с одним сеансом, используемых в нашем 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. Функции JBang позволяют прикреплять ресурсы (классы сущностей и persistence.xml ) к процессу add (или регистрации), которые будут включены в реестр шаблонов Jbang. This will result in a copy of those entities will be included in the project and 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. Таким образом, теоретически мы можем сгенерировать тестовые классы Main.java и/или MutinyMain.java и в итоге получить что-то похожее на эти примеры каталогов.

Note there is another feature that uses .jsh script that allows setting user-defined parameters to be replaced in a template file. Обратите внимание, что есть еще одна функция, использующая сценарий .jsh , который позволяет заменять пользовательские параметры в файле шаблона. (alluded to earlier ^^^) but @MaxAndersen indicated they could be added to the JBang init command. (упоминается ранее ^^^), но @MaxAndersen указал, что их можно добавить в команду JBang init .

Questions: Вопросы:

  1. Is there a target hibernate-reactive user/customer and use case we're aiming for? Есть ли целевой пользователь/клиент, реагирующий на гибернацию, и вариант использования, к которому мы стремимся?

    • Based on the complexity, we may need to build/publish a hibernate-reactive-test to maven, which would need to be maintained В зависимости от сложности нам может потребоваться создать/опубликовать hibernate-reactive-test в maven, который необходимо будет поддерживать.
  2. Do we want to be able to test these generated tests against older or newer versions of HR & HR ORM? Хотим ли мы иметь возможность протестировать эти сгенерированные тесты на старых или новых версиях 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 ) Для базовых шаблонов требуются зависимости (например, будущие импорты), которые извлекаются во время сборки проекта (пример: //DEPS org.hibernate:hibernate-core:5.4.10.Final )
    • This would help users define/document their build environment as part of the test generation Это поможет пользователям определить/задокументировать свою среду сборки как часть тестовой генерации.
  3. Simple examples like we have now are still viable, of course. Простые примеры, как у нас сейчас, конечно, все еще жизнеспособны.

en

Я бы посоветовал пока сделать самое простое, что может сработать.

en

@blafond , here's your use case: @blafond , вот ваш вариант использования:
You are User and found this issue while using hibernate reactive in your Вы являетесь пользователем и обнаружили эту проблему при использовании hibernate reactive в вашем
project : https://github.com/hibernate/hibernate-reactive/issues/702 проект: https://github.com/hibernate/hibernate-reactive/issues/702

You want to send us a reproducer without having to clone the whole Вы хотите отправить нам репродукцию без необходимости клонирования всего
hibernate reactive project and without having to spend too much time on all перевести реактивный проект в спящий режим и не тратить слишком много времени на все
the scaffolding needed to create a brand new project. строительные леса, необходимые для создания совершенно нового проекта. Ideally, with jbang, В идеале с jbang,
you could just send us a single file and we could run it. вы могли бы просто отправить нам один файл, и мы могли бы запустить его.

Use ORM 5.4, the default, for now. Используйте на данный момент ORM 5.4 по умолчанию.
Not sure why we need to worry about maven, but do what you think is right. Не уверен, почему нам нужно беспокоиться о maven, но делайте то, что считаете правильным.

Don't worry about CI, if it's easy for a user to run, it's easy for us to Не беспокойтесь о CI, если пользователю легко запустить, нам легко
add it to ci добавить его в ci

On Wed, 5 May 2021, 21:48 Gavin King, @ . В среду, 5 мая 2021 г., 21:48 Гэвин Кинг, @ . * > wrote: * > написал:

I would suggest just doing the Simplest Thing That Could Possibly Work for Я бы предложил просто сделать самое простое, что могло бы сработать для
now. Теперь.


You are receiving this because you authored the thread. Вы получаете это, потому что вы создали тему.
Reply to this email directly, view it on GitHub Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 , https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 ,
or unsubscribe или отписаться
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 Просто чтобы уточнить, проблема была обнаружена с помощью quarkus, но репродуктор
should only use hibernate reactive следует использовать только спящий режим

On Thu, 6 May 2021, 10:51 Davide D'Alto, @ . Чт, 6 мая 2021 г., 10:51 Давиде Д'Альто, @ . * > wrote: * > написал:

@blafond , here's your use case: @blafond , вот ваш вариант использования:
You are User and found this issue while using hibernate reactive in your Вы являетесь пользователем и обнаружили эту проблему при использовании hibernate reactive в вашем
project : https://github.com/hibernate/hibernate-reactive/issues/702 проект: https://github.com/hibernate/hibernate-reactive/issues/702

You want to send us a reproducer without having to clone the whole Вы хотите отправить нам репродукцию без необходимости клонирования всего
hibernate reactive project and without having to spend too much time on all перевести реактивный проект в спящий режим и не тратить слишком много времени на все
the scaffolding needed to create a brand new project. строительные леса, необходимые для создания совершенно нового проекта. Ideally, with jbang, В идеале с jbang,
you could just send us a single file and we could run it. вы могли бы просто отправить нам один файл, и мы могли бы запустить его.

Use ORM 5.4, the default, for now. Используйте на данный момент ORM 5.4 по умолчанию.
Not sure why we need to worry about maven, but do what you think is right. Не уверен, почему нам нужно беспокоиться о maven, но делайте то, что считаете правильным.

Don't worry about CI, if it's easy for a user to run, it's easy for us to Не беспокойтесь о CI, если пользователю легко запустить, нам легко
add it to ci добавить его в ci

On Wed, 5 May 2021, 21:48 Gavin King, @ . В среду, 5 мая 2021 г., 21:48 Гэвин Кинг, @ . * > wrote: * > написал:

I would suggest just doing the Simplest Thing That Could Possibly Work Я бы предложил просто сделать самую простую вещь, которая может сработать.
for now. теперь.


You are receiving this because you authored the thread. Вы получаете это, потому что вы создали тему.
Reply to this email directly, view it on GitHub Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 , https://github.com/hibernate/hibernate-reactive/issues/721#issuecomment-832997030 ,
or unsubscribe или отписаться
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 , всегда будут ошибки при интеграции с HR. For example, suppose Quarkus passes arguments to HR in the wrong order. Например, предположим, что Quarkus передает аргументы в HR в неправильном порядке. This is not a use case that you need to be concerned about here. Это не тот вариант использования, о котором вам нужно беспокоиться. Integration bugs will need to be reproduced in some other way. Ошибки интеграции нужно будет воспроизвести каким-то другим способом.

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. Один из способов упростить добавление пользовательского репродуктора в модульный тест — это каким-то образом расширить шаблон BaseReactiveTest , поэтому все, что нам нужно сделать, это скопировать/вставить в набор тестов. I have no idea if that is the proper approach here. Я понятия не имею, является ли это правильным подходом здесь. I'm just mentioning it as an example. Я просто упоминаю это как пример.

en

@maxandersen @gavinking What was the problem with JBang and testcontainers? @maxandersen @gavinking В чем проблема с JBang и тестовыми контейнерами? It seems to work fine to me: Мне кажется, это работает нормально:

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. Да, если настроить вручную, то работает. Issue is it won't work by just setting the jdbc or similar url. Проблема в том, что это не сработает, просто установив jdbc или аналогичный URL-адрес.

en

Проблема заключается в использовании URL-адресов JDBC, содержащих tc: .

en

Ah, I remember now. А, теперь вспомнил. We still have this issue open: https://github.com/hibernate/hibernate-reactive/issues/468 У нас все еще есть эта проблема: https://github.com/hibernate/hibernate-reactive/issues/468 .

en

I think we have good starting point now and we can improve on it later. Я думаю, что у нас есть хорошая отправная точка сейчас, и мы можем улучшить ее позже.
In particular, when we have a solution for #468 В частности, когда у нас есть решение для #468

en

is there a reason you don't have that jbang script available as a template so you can do есть ли причина, по которой у вас нет этого скрипта jbang в качестве шаблона, чтобы вы могли сделать

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. Нет, не совсем, в основном потому, что я все еще его настраиваю, и мне легче работать, когда это не шаблон.

But I'm not sure I understand the syntax you are using. Но я не уверен, что понимаю синтаксис, который вы используете. What's testcase@hibernate/hibernate-reactive ? Что такое 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? Это что-то, что было добавлено в каталог через jbang template add ... , или оно относится к чему-то другому?

Would it be possible to refer to a github repository as the location of the template? Можно ли ссылаться на репозиторий github в качестве местоположения шаблона?

en

testcase is the template name found in jbang-catalog. testcase — это имя шаблона, найденное в каталоге jbang.

hibernate/hibernate-reactive maps to github.com/hibernate/hibernate-reactive. hibernate/hibernate-reactive сопоставляется с github.com/hibernate/hibernate-reactive.

so that is the github repository location. так что это расположение репозитория github.

en

Ah nice! Ах здорово! I will try it Я попробую

en
Была ли эта страница полезной?
0 / 5 - 0 рейтинги