Встроенные тесты веб-сервисов Elasticsearch junit

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

Теперь я пытаюсь изменить свои интеграционные тесты этих служб, чтобы использовать встроенный экземпляр elasticsearch, чтобы не полагаться на внешние ресурсы. В тестах на огурцы используются

@ContextConfiguration(classes = Application.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

Это запускает экземпляр причального сервера для внутреннего развертывания приложения, а затем запускает несколько спокойных вызовов для тестирования сервисов. Эти тесты работали нормально при использовании внутреннего hsqldb. Однако переключение на встроенный экземпляр elasticsearch, похоже, не работает. У меня есть несколько регулярных модульных тестов, использующих встроенный экземпляр elasticsearch, просто напрямую используя уровень сервиса через код, и это отлично работает ... но когда я использую restassured для отправки фактического HTTP-запроса в конечную точку веб-сервиса, репозитории, похоже, не работают и он не будет храниться в elasticsearch. Моя конфигурация следующая:

Settings.Builder elasticsearchSettings = Settings.settingsBuilder()
                        .put("http.enabled", "true")
                        .put("cluster.name", "myCluster")
                        .put("path.home", "target/elasticsearch-home")
                        .put("elasticsearch.host","localhost")
                        .put("elasticsearch.port", "9300");
                        .put("path.data", dataDirectory.toString());

                node = NodeBuilder.nodeBuilder()
                        .local(true)
                        .settings(elasticsearchSettings.build())
                        .node();
                node.client().admin().indices().prepareCreate("dataset").get();

Я могу отлаживать тесты и видеть извне через браузер, что экземпляр и кластер elasticsearch создаются с помощью «http: // локальный: 9200 / набор данных /», но вызовы веб-службы с restassured, похоже, не могут сохранять в настроенном репозитории, но обычные тесты просто вызывают репозиторий. работают нормально. Кто-нибудь знает, какой дополнительный шаг мне не хватает, который требуется, чтобы эти веб-службы в тестовой среде могли использовать встроенный экземпляр elasticsearch, когда служба данных веб-службы, использующая репозитории, не автоматически подключается в самом тесте, а создается с помощью запуска весенней загрузки вверх в классах веб-сервисов?

Эти тесты веб-службы работают при использовании / настройке внешнего экземпляра elasticsearch. Он просто почему-то не совсем связывает встроенный, который отлично запускается и работает с обычными модульными тестами, используя те же репозитории, что и сервисы, развернутые на причале, в сквозном тестировании.

Большое спасибо ... пожалуйста, дайте мне знать, если вам понадобится дополнительная информация ... это большой процесс с большим количеством движущихся частей, поэтому просто стараюсь придерживаться минимальной настройки.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
929
1

Ответы 1

Выяснилось ... Оказывается, это не прямая проблема с подключением / эластичным поиском. Я вернулся к автономному экземпляру elasticsearch, но тесты все равно не прошли. Оказывается, сами службы не сработали, потому что я изменил сопоставления дат на своих объектах, и теперь они больше не соответствуют форматам тестовых примеров. Встроенный экземпляр поглотил ошибки, возвращаемые веб-службой. Таким образом, прямая вставка через сервисный уровень сработала ... но отображение Джексона веб-сервиса испортилось и больше не вставлялось. Исправлено, и теперь встроенный экземпляр работает нормально.

Спасибо!

Другие вопросы по теме