false true true stoptest false 1 1 1 1488116764000 1488116764000 false true import org.apache.jmeter.protocol.http.control.HttpMirrorServer; HttpMirrorServer mirrorServer = new HttpMirrorServer(8081, 10, 10); props.put("MIRROR_SERVER", mirrorServer); mirrorServer.start(); groovy continue false 1 1 1 1488116271000 1488116271000 false /test GET true false true false GET /test HTTP/1.1 Connection: keep-alive Host: localhost:8081 User-Agent: Assertion.response_data false 16 Content-Length: Content-Type: Assertion.request_headers false 20 TEST_GET.jmx file text/xml /test?name=value GET true false true false Content-Length: Content-Type: Assertion.request_headers false 20 GET Connection: keep-alive Host: localhost:8081 User-Agent: /test?name=value Assertion.response_data false 16 false value1 = true name1 /test?name0=value0 GET true false true false Content-Length: Content-Type: Assertion.request_headers false 20 GET Connection: keep-alive Host: localhost:8081 User-Agent: /test?name0=value0&name1=value1 Assertion.response_data false 16 ${__jexl3("${__P(jmeter.httpsampler,)}" != "Java",)} false true true false Get with body = /test GET true false true false Content-Length: 13 Content-Type: text/plain Content-Type: Assertion.request_headers false 16 GET /test HTTP/1.1 Connection: keep-alive Host: localhost:8081 User-Agent: Get with body Assertion.response_data false 16 localhost 8081 6 3000 30000 continue false 1 1 1 1488116271000 1488116271000 false www.example.org 6 3000 30000 / GET true false true false Accept-Encoding gzip Accept-Encoding: gzip Assertion.request_headers false 16 Content-Length: Content-Type: Assertion.request_headers false 20 Example Domain Assertion.response_data false 16 / GET true false true false Content-Encoding: gzip Assertion.response_headers false 20 Content-Length: Content-Type: Assertion.request_headers false 20 Accept-Encoding: gzip Assertion.request_headers false 20 Example Domain Assertion.response_data false 16 continue false 1 1 1 1488116271000 1488116271000 false localhost 8081 http 6 3000 30000 / GET false false true false Accept-Encoding gzip X-SetHeaders Location:http://localhost:8081/redirect X-ResponseStatus 302 Accept-Encoding: gzip Assertion.request_headers false 16 Content-Length: Content-Type: Assertion.request_headers false 20 ${__jexl3("${__P(jmeter.httpsampler,)}" != "Java",)} false true true false Method has body = / GET false false true false BUG 60682 Accept-Encoding gzip X-SetHeaders Location:http://localhost:8081/redirect X-ResponseStatus 302 Accept-Encoding: gzip Assertion.request_headers false 16 Content-Length: Content-Type: Assertion.request_headers false 16 true false We have a body = / GET true false true false Accept-Encoding gzip X-SetHeaders Location:http://localhost:8081/redirect X-ResponseStatus 302 Exceeded maximum number of redirects Assertion.response_message true 16 Content-Length: Content-Type: Assertion.request_headers false 20 / GET false true true false Accept-Encoding gzip X-SetHeaders Location:http://localhost:8081/redirect X-ResponseStatus 302 Non HTTP response message Assertion.response_message true 16 continue false 1 1 1 1488116271000 1488116271000 false localhost 8081 http 6 3000 30000 false value1 = true name1 /test?name0=value0 POST false false true false Accept-Encoding gzip POST /test?name0=value0 HTTP/1.1 Connection: keep-alive Accept-Encoding: gzip Content-Length: 12 Host: localhost:8081 User-Agent: Assertion.response_data false 16 false value1 = true name1 /test?name0=value0 POST false false true true Accept-Encoding gzip false boundary boundary=(.*) $1$ nv_boundary 1 POST /test?name0=value0 HTTP/1.1 Connection: keep-alive Accept-Encoding: gzip Host: localhost:8081 User-Agent: Content-Type: multipart/form-data; boundary= Content-Disposition: form-data; name="name1" Content-Type: text/plain Content-Transfer-Encoding: 8bit value1 boundary=${boundary} ${boundary} Assertion.response_data false 16 false value1 = true name1 false value2 = true 安_param UTF-8 /test?name0=value0 POST false false true true true Accept-Encoding gzip false boundary boundary=(.*) $1$ nv_boundary 1 POST /test?name0=value0 HTTP/1.1 Connection: keep-alive Accept-Encoding: gzip Host: localhost:8081 User-Agent: Content-Type: multipart/form-data; boundary= Content-Disposition: form-data; name="name1" value1 boundary=${boundary} ${boundary} Assertion.response_data false 16 Content-Type: multipart/form-data; boundary= Workaround as Mirror Server corrupts encoding true String textToCheck = 'Content-Disposition: form-data; name="?_param"'; if(prev.getSamplerData().indexOf(textToCheck) < 0) { AssertionResult.setFailure(true); AssertionResult.setFailureMessage("Request does not contains '"+textToCheck+"'"); } groovy true false Veni vidi vici = /test?name0=value0 POST false false true false Accept-Encoding gzip request_headers contentType Content-Type: (.*) $1$ nv_contentType 1 POST /test?name0=value0 HTTP/1.1 Connection: keep-alive Accept-Encoding: gzip Content-Length: 14 Host: localhost:8081 User-Agent: Veni vidi vici Assertion.response_data false 16 nv_contentType text/plain Assertion.response_data false 40 variable contentType user.properties fileName text/plain /test?name0=value0 POST false false true false Accept-Encoding gzip false boundary boundary=(.*) $1$ nv_boundary 1 POST /test?name0=value0 HTTP/1.1 Connection: keep-alive Accept-Encoding: gzip Host: localhost:8081 User-Agent: Content-Type: multipart/form-data; boundary= Content-Disposition: form-data; name="fileName"; filename="user.properties" Content-Type: text/plain Content-Transfer-Encoding: binary boundary=${boundary} ${boundary} Assertion.response_data false 16 user.properties text/plain /test?name0=value0 POST false false true false Accept-Encoding gzip Content-Type: multipart/form-data; boundary= Content-Disposition: form-data; name="fileName"; filename="user.properties" Content-Transfer-Encoding: binary boundary= Assertion.response_data false 20 Sample user.properties file Host: localhost:8081 User-Agent: Assertion.response_data false 16 Connection: keep-alive Accept-Encoding: gzip Content-Type: text/plain Content-Length: Assertion.request_headers false 16 user.properties text/plain /test?name0=value0 POST false false true false Accept-Encoding gzip Content-Type text/plain Content-Type: multipart/form-data; boundary= Content-Disposition: form-data; name="fileName"; filename="user.properties" Content-Transfer-Encoding: binary boundary= PUT http://localhost:8081/test?name0=value0 Assertion.response_data false 20 Sample user.properties file User-Agent: Host: localhost:8081 Assertion.response_data false 16 Connection: keep-alive Accept-Encoding: gzip Content-Type: text/plain Content-Length: Assertion.request_headers false 16 user.properties text/plain /test?name0=value0 PUT false false true false Accept-Encoding gzip Content-Type text/plain Content-Type: multipart/form-data; boundary= Content-Disposition: form-data; name="fileName"; filename="user.properties" Content-Transfer-Encoding: binary boundary= Assertion.response_data false 20 Sample user.properties file PUT /test?name0=value0 HTTP/1.1 Host: localhost:8081 User-Agent: Assertion.response_data false 16 Connection: keep-alive Accept-Encoding: gzip Content-Type: text/plain Content-Length: Assertion.request_headers false 16 true false Body of Put = /test?name0=value0 PUT false false true false Accept-Encoding gzip Content-Type text/plain Content-Type: multipart/form-data; boundary= Content-Disposition: form-data; name="fileName"; filename="user.properties" Content-Transfer-Encoding: binary boundary= Assertion.response_data false 20 PUT /test?name0=value0 HTTP/1.1 Body of Put User-Agent: Assertion.response_data false 16 Connection: keep-alive Accept-Encoding: gzip Content-Type: text/plain Content-Length: Assertion.request_headers false 16 ${__jexl3("${__P(jmeter.httpsampler,)}" == "Java",)} false true false value1 = true name1 /test?name0=value0 PUT false false true false Accept-Encoding gzip Content-Type: multipart/form-data; boundary= Content-Disposition: form-data; name="fileName"; filename="user.properties" Content-Transfer-Encoding: binary boundary= Content-Type: text/plain Assertion.response_data false 20 PUT /test?name0=value0 HTTP/1.1 Host: localhost:8081 User-Agent: Assertion.response_data false 16 Connection: keep-alive Accept-Encoding: gzip Assertion.request_headers false 16 ${__jexl3("${__P(jmeter.httpsampler,)}" != "Java",)} false true false value1 = true name1 /test?name0=value0 PUT false false true false Accept-Encoding gzip Content-Type: multipart/form-data; boundary= Content-Disposition: form-data; name="fileName"; filename="user.properties" Content-Transfer-Encoding: binary boundary= Content-Type: text/plain Assertion.response_data false 20 PUT /test?name0=value0 HTTP/1.1 Host: localhost:8081 User-Agent: name1=value1 Assertion.response_data false 16 Connection: keep-alive Accept-Encoding: gzip Assertion.request_headers false 16 stoptest false 1 1 1 1488116768000 1488116768000 false groovy true import org.apache.jmeter.protocol.http.control.HttpMirrorServer; HttpMirrorServer mirrorServer = (HttpMirrorServer) props.get("MIRROR_SERVER"); mirrorServer.stopServer(); false saveConfig false false true true false true true false false false false false false false false false false false 0 TEST_HTTP_${__P(jmeter.httpsampler,)}.csv false saveConfig false false true true false false true false true true false false true false false false false false 0 TEST_HTTP_${__P(jmeter.httpsampler,)}.xml