Опция grails geb -baseUrl не работает для удаленных служб
Я использую плагин geb 0.9.2 для grails 2.3.4
Я хочу запускать функциональные тесты отдельно от службы на двух отдельных хостах.
Я заметил следующее:
Если я запустил службу на том же хосте и выполнил:
grails test-app functional: -baseUrl=http://localhost:8080/foo/
- неинтерактивныйкод >
тогда тесты выполняются с этой уже запущенной службой и проходят.
Если служба не запущена, и я выполняю ту же самую команду, тогда в grails test-app
запускается новый экземпляр службы, и тесты выполняются против этого.
(Это неожиданно для меня)
Если служба запущена на другом хосте, скажем http://other:16060/foo/
, и я запускаю:
grails test-app functional: -baseUrl=http://other:16060/foo/
--non-interactive
... затем запускается локальная служба, и тесты выполняются против этого, а не против указанной удаленной службы. Опять это неожиданно для меня.
Я не могу найти документацию, объясняющую это поведение.
Можно ли запустить test-app
для удаленного сервиса?
(мое воспоминание, хотя я еще не проверял его в последнее время, это поведение также имеет место с гравюрами 2.2.2)
Ответы
Ответ 1
Это кажется ошибкой grails (? feature).
Grails проверяет, работает ли служба, подключившись к служебному порту.
Если служба не запущена, она запускает службу.
Неправильное: проверка, чтобы убедиться, что служба запущена, всегда выполняется против localhost/127.0.0.1, даже если baseUrl указывает на другой хост.
Я работал вокруг него, запустив поддельный сервер на 127.0.0.1, используя инструмент unix nc. Этого достаточно, чтобы кризировать, что служба уже запущена, а не запускает новую. Затем он уважает baseUrl и тестирует удаленный.
Тьфу.
Ответ 2
Передача аргумента baseUrl заключается в том, как вы запускаете его на удаленном сервере, чтобы вы делали все прямо там. Единственная причина, по которой это не произойдет, - это также передать флаг -inline или -war.
Попробуйте отключить разветвленное выполнение в ваших тестах и посмотреть, разрешает ли это проблема, возможно, аргумент не передается разветвленной JVM.
http://grails.org/doc/2.3.x/guide/commandLine.html#forkedMode