Когда я запускаю в среде Docker с Дженкинсом тест JMeter с использованием jmeter-maven-plugin, то HttpRequests всегда будет завершаться с 403.
Не имеет значения, работает ли принимающее SpringBootApplication в среде Docker или только на моем ПК (хосте).
Среда Docker - это «Docker для Windows».
Запуск jmeter-maven-script в Maven в Windows (без Docker), тогда все работает гладко. Также работает в графическом интерфейсе JMeter работает нормально.
Обновления :
- Когда я изменяю URL на недействительный, статус 403 http остается. Изменение пути к недействительному серверу продолжает давать статус http 403.
- Когда я запускаю JMeter (1 поток, 2 раза) на http://example.com, это работает.
- Запуск SpringBootApplication в той же сети Docker через порт 80 также не работает. Оба с использованием http://localhost и http://dockercontainername завершаются с ошибкой «Не HTTP-код ответа: java.net.ConnectException, Не HTTP-ответное сообщение: соединение отклонено (соединение отклонено)»
Я готовлю файл сценария JMeter в Windows. Я копирую файл в свой проект Spring Maven.
Я предпочитаю НЕ устанавливать JMeter во всех моих средах, поэтому работа с плагином jmeter-maven-является хорошим решением.
Можете ли вы помочь мне решить эту очень раздражающую проблему?
Описание плагина My Maven:
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>2.7.0</version>
<executions>
<execution>
<id>jmeter-tests</id>
<goals>
<goal>jmeter</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
<configuration>
<skipTests>${skipPerformanceTests}</skipTests>
<testFilesDirectory>${project.basedir}/src/main/resources/jmeter</testFilesDirectory>
<resultsDirectory>${project.basedir}/target/jmeter/testFiles</resultsDirectory>
<resultsFileFormat>csv</resultsFileFormat>
</configuration>
</plugin>
Мой скрипт JMeter:
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments">
<elementProp name="" elementType="HTTPArgument">
<boolProp name="HTTPArgument.always_encode">false</boolProp>
<stringProp name="Argument.value"></stringProp>
<stringProp name="Argument.metadata">=</stringProp>
<boolProp name="HTTPArgument.use_equals">true</boolProp>
</elementProp>
</collectionProp>
</elementProp>
<stringProp name="HTTPSampler.domain"></stringProp>
<stringProp name="HTTPSampler.port"></stringProp>
<stringProp name="HTTPSampler.protocol"></stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.path">http://127.0.0.1:8080/indexRoleA.html</stringProp>
<stringProp name="HTTPSampler.method">GET</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
<stringProp name="HTTPSampler.response_timeout"></stringProp>
</HTTPSamplerProxy>
Мои JMeter HttpRequets так же просты, как и переход к /indexRole.html.