MojoHaus cassandra-maven-plugin

Как всем известно, для запуска интеграционных тестов maven имеет три фазы:

  1. pre-integration-test
  2. integration-test
  3. post-integration-test

Фаза pre-integration-test специально создана для того, чтобы подготовить среду к запуску интеграционных тестов. В этой фазе можно (и нужно) запускать внешние сервисы, создавать структуры баз данных, деплоить собранный war и т. д.

На фазе integration-test осуществляется непосредственный запуск интеграционных тестов (по умолчанию интеграционными считаются тесты, названия классов которых заканчиваются на IT).

Фаза post-integration-test позволяет освободить ресурсы и остановить запущенные на фазе pre-integration-test сервисы.

Плагин Mojo’s Cassandra Maven Plugin позволяет нам запускать Cassandra для использования интеграционными тестами.

В самом простейшем случае он подключается в “pom.xml” в разделе plugins следующим образом:

Использованные параметры конфигурации:

cqlEncoding задаёт кодировку файла, указанного в script.

script указывает на путь к файлу с CQL-командами, инициализирующими базу Cassandra.

startNativeTransport по умолчанию false, мы выставляем true, чтобы использовать datastax клиент.

nativeTransportPort  — порт.

На момент написания этой статьи CQL-команды в файле инициализации базы разделяются обычным string.split(";"), что не позволяет заполнять таблицы Cassandra строковыми литералами, содержащими символ «;» (semicolon или точка с запятой). Посмотрите сами, если не верите.

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

Зацените мой pull request с предложенным исправлением:

Я также подготовил небольшой тест для проверки возможности отправки символа «;» внутри строк.

Файл «tracking-cassandra-init.cql» подготовленного теста, пытающийся вставить строку, содержащую символ «;» в базу:

Тест, пытающийся считать вставленную строку с символом «;»:

Готовый проект выложен на GitHub. Можете склонировать репозиторий:

 Тесты запускаются из корня проекта командой:

Вы также можете запускать отдельные тесты из вашей IDE, но вам сначала нужно запустить Cassandra в фоновом режиме с фазы pre-integration-test:

После чего запускайте тесты как обычно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *