Использование встроенного локатора и сервера gemfire для интеграционного тестирования

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

Я попытался запустить локатор и сервер, когда тесты начинают использовать LocatorLauncher и ServerLauncher. Он запускает локатор, но выдает исключение с указанием IllegalStateException: A connection to a distributed system already exists in this VM.

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


person Mukund Jalan    schedule 15.01.2019    source источник


Ответы (1)


Было бы полезно узнать немного больше о том, что именно вы пытаетесь протестировать. У нас есть разные уровни тестирования в кодовой базе Geode. Если вы можете обойтись только сервером, я бы предложил использовать ServerStarterRule в ваших JUnits. Вот пример этого: https://github.com/apache/geode/blob/f12055ae3ae4b1f4731c0447af0c4cb9abdd4159/geode-core/src/integrationTest/java/org/apache/geode/management/internal/cli/команды/AlterRegionCommandIntegrationTest.java

Это правило запустит сервер как часть JVM JUnit. Это означает, что вы не сможете использовать ClientCache одновременно (вы не можете иметь экземпляры ClientCache и Cache в одном и том же экземпляре JVM).

Следующий уровень тестирования называется DUnit тестированием. Эта структура позволяет вам запускать несколько JVM и формировать фактический кластер. Лучший способ использовать это с ClusterStartupRule вместе с GfshCommandRule. Примером этого может быть: https://github.com/apache/geode/blob/10d89ede6f90f046c15e12e3d16aed259d7044b0/geode-cq/src/distributedTest/java/org/apache/geode/management/internal/cli/команды/ListClientCommandDUnitTest.java

Здесь запускаются различные компоненты, включая клиентскую виртуальную машину. Преимущество использования этих правил заключается в том, что они будут обрабатывать запуск и отключение последовательно и безопасно.

person Jens D    schedule 15.01.2019