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




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