Опция 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