use of org.apache.jmeter.protocol.http.control.Header in project jmeter by apache.
the class TestHeaderManager method testReplaceNoMatch.
@Test
public void testReplaceNoMatch() throws Exception {
HeaderManager headerManager = new HeaderManager();
headerManager.add(new Header("Referer", "https://jmeter.apache.org/changes.html"));
headerManager.add(new Header("JSESSIONID", "AZAZDZDAFEFZEVZEZEVZEVZEVZZ"));
int numberOfReplacements = headerManager.replace("JMeter.apache.org", "${host}", true);
assertEquals(0, numberOfReplacements);
assertEquals("Referer", headerManager.getHeader(0).getName());
assertEquals("JSESSIONID", headerManager.getHeader(1).getName());
assertEquals("https://jmeter.apache.org/changes.html", headerManager.getHeader(0).getValue());
assertEquals("AZAZDZDAFEFZEVZEZEVZEVZEVZZ", headerManager.getHeader(1).getValue());
headerManager = new HeaderManager();
headerManager.add(new Header("Referer", "https://jmeter.apache.org/changes.html"));
headerManager.add(new Header("JSESSIONID", "AZAZDZDAFEFZEVZEZEVZEVZEVZZ"));
numberOfReplacements = headerManager.replace("JMeterx.apache.org", "${host}", false);
assertEquals(0, numberOfReplacements);
assertEquals("Referer", headerManager.getHeader(0).getName());
assertEquals("JSESSIONID", headerManager.getHeader(1).getName());
assertEquals("https://jmeter.apache.org/changes.html", headerManager.getHeader(0).getValue());
assertEquals("AZAZDZDAFEFZEVZEZEVZEVZEVZZ", headerManager.getHeader(1).getValue());
}
use of org.apache.jmeter.protocol.http.control.Header in project jmeter by apache.
the class TestHeaderManager method testReplace.
@Test
public void testReplace() throws Exception {
HeaderManager headerManager = new HeaderManager();
headerManager.add(new Header("Referer", "https://jmeter.apache.org/changes.html"));
headerManager.add(new Header("JSESSIONID", "AZAZDZDAFEFZEVZEZEVZEVZEVZZ"));
int numberOfReplacements = headerManager.replace("jmeter.apache.org", "${host}", true);
assertEquals(1, numberOfReplacements);
assertEquals("Referer", headerManager.getHeader(0).getName());
assertEquals("JSESSIONID", headerManager.getHeader(1).getName());
assertEquals("https://${host}/changes.html", headerManager.getHeader(0).getValue());
assertEquals("AZAZDZDAFEFZEVZEZEVZEVZEVZZ", headerManager.getHeader(1).getValue());
headerManager = new HeaderManager();
headerManager.add(new Header("Referer", "https://JMeter.apache.org/changes.html"));
headerManager.add(new Header("JSESSIONID", "AZAZDZDAFEFZEVZEZEVZEVZEVZZ"));
numberOfReplacements = headerManager.replace("jmeter.apache.org", "${host}", false);
assertEquals(1, numberOfReplacements);
assertEquals("Referer", headerManager.getHeader(0).getName());
assertEquals("JSESSIONID", headerManager.getHeader(1).getName());
assertEquals("https://${host}/changes.html", headerManager.getHeader(0).getValue());
assertEquals("AZAZDZDAFEFZEVZEZEVZEVZEVZZ", headerManager.getHeader(1).getValue());
}
use of org.apache.jmeter.protocol.http.control.Header in project jmeter by apache.
the class TestDecompression method mockServer.
@ParameterizedTest
@MethodSource("mockServerParams")
public void mockServer(String httpImpl, ClientGzip clientGzip, ServerGzip serverGzip) throws MalformedURLException {
WireMockServer server = createServer(c -> c.gzipDisabled(serverGzip == ServerGzip.NOT_SUPPORTED));
server.start();
try {
HTTPSamplerBase http = HTTPSamplerFactory.newInstance(httpImpl);
String expectedResponse = "Hello, 丈, \uD83D\uDE03, and नि";
HeaderManager hm = new HeaderManager();
if (clientGzip == ClientGzip.REQUESTED) {
hm.add(new Header("Accept-Encoding", "gzip"));
}
hm.add(new Header("Content-Encoding", "utf-8"));
http.setHeaderManager(hm);
MappingBuilder mappingBuilder = WireMock.get("/gzip");
if (clientGzip == ClientGzip.REQUESTED) {
mappingBuilder = mappingBuilder.withHeader("Accept-Encoding", WireMock.equalTo("gzip"));
}
server.stubFor(mappingBuilder.willReturn(WireMock.aResponse().withBody(expectedResponse).withHeader("Content-Type", "text/plain;charset=utf-8")));
HTTPSampleResult res = http.sample(new URL(server.url("/gzip")), "GET", false, 1);
Assertions.assertAll(() -> {
Matcher<String> matcher;
if (clientGzip == ClientGzip.NOT_REQUESTED || serverGzip == ServerGzip.NOT_SUPPORTED) {
matcher = Matchers.not(Matchers.containsStringIgnoringCase("Content-Encoding:"));
} else {
matcher = Matchers.containsStringIgnoringCase("Content-Encoding: gzip");
}
MatcherAssert.assertThat("getResponseHeaders", res.getResponseHeaders(), matcher);
}, () -> {
Assertions.assertEquals(expectedResponse, res.getResponseDataAsString(), "response body");
});
} finally {
server.stop();
}
}
use of org.apache.jmeter.protocol.http.control.Header in project jmeter by apache.
the class AjpSampler method setConnectionHeaders.
private String setConnectionHeaders(URL url, String host, String method) throws IOException {
HeaderManager headers = getHeaderManager();
AuthManager auth = getAuthManager();
StringBuilder hbuf = new StringBuilder();
// Allow Headers to override Host setting
// $NON-NLS-1$
hbuf.append("Host").append(COLON_SPACE).append(host).append(NEWLINE);
// Host
setInt(0xA00b);
setString(host);
if (headers != null) {
for (JMeterProperty jMeterProperty : headers.getHeaders()) {
Header header = (Header) jMeterProperty.getObjectValue();
String n = header.getName();
String v = header.getValue();
hbuf.append(n).append(COLON_SPACE).append(v).append(NEWLINE);
int hc = translateHeader(n);
if (hc > 0) {
setInt(hc + AJP_HEADER_BASE);
} else {
setString(n);
}
setString(v);
}
}
if (method.equals(HTTPConstants.POST)) {
int cl = -1;
HTTPFileArg[] hfa = getHTTPFiles();
if (hfa.length > 0) {
HTTPFileArg fa = hfa[0];
String fn = fa.getPath();
File input = new File(fn);
cl = (int) input.length();
if (body != null) {
JOrphanUtils.closeQuietly(body);
body = null;
}
body = new BufferedInputStream(new FileInputStream(input));
setString(HTTPConstants.HEADER_CONTENT_DISPOSITION);
setString("form-data; name=\"" + encode(fa.getParamName()) + "\"; filename=\"" + encode(fn) + // $NON-NLS-1$ //$NON-NLS-2$
"\"");
String mt = fa.getMimeType();
hbuf.append(HTTPConstants.HEADER_CONTENT_TYPE).append(COLON_SPACE).append(mt).append(NEWLINE);
// content-type
setInt(0xA007);
setString(mt);
} else {
hbuf.append(HTTPConstants.HEADER_CONTENT_TYPE).append(COLON_SPACE).append(HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED).append(NEWLINE);
// content-type
setInt(0xA007);
setString(HTTPConstants.APPLICATION_X_WWW_FORM_URLENCODED);
StringBuilder sb = new StringBuilder();
boolean first = true;
for (JMeterProperty arg : getArguments()) {
if (first) {
first = false;
} else {
sb.append('&');
}
sb.append(arg.getStringValue());
}
stringBody = sb.toString();
@SuppressWarnings("DefaultCharset") byte[] // TODO - charset?
sbody = stringBody.getBytes();
cl = sbody.length;
body = new ByteArrayInputStream(sbody);
}
hbuf.append(HTTPConstants.HEADER_CONTENT_LENGTH).append(COLON_SPACE).append(String.valueOf(cl)).append(NEWLINE);
// Content-length
setInt(0xA008);
setString(String.valueOf(cl));
}
if (auth != null) {
String authHeader = auth.getAuthHeaderForURL(url);
if (authHeader != null) {
// Authorization
setInt(0xA005);
setString(authHeader);
hbuf.append(HTTPConstants.HEADER_AUTHORIZATION).append(COLON_SPACE).append(authHeader).append(NEWLINE);
}
}
return hbuf.toString();
}
use of org.apache.jmeter.protocol.http.control.Header in project jmeter by apache.
the class HTTPJavaImpl method setConnectionHeaders.
/**
* Extracts all the required headers for that particular URL request and
* sets them in the <code>HttpURLConnection</code> passed in
*
* @param conn
* <code>HttpUrlConnection</code> which represents the URL
* request
* @param u
* <code>URL</code> of the URL request
* @param headerManager
* the <code>HeaderManager</code> containing all the cookies
* for this <code>UrlConfig</code>
* @param cacheManager the CacheManager (may be null)
*/
private void setConnectionHeaders(HttpURLConnection conn, URL u, HeaderManager headerManager, CacheManager cacheManager) {
// Add all the headers from the HeaderManager
Header[] arrayOfHeaders = null;
if (headerManager != null) {
CollectionProperty headers = headerManager.getHeaders();
if (headers != null) {
int i = 0;
arrayOfHeaders = new Header[headers.size()];
for (JMeterProperty jMeterProperty : headers) {
Header header = (Header) jMeterProperty.getObjectValue();
String n = header.getName();
String v = header.getValue();
arrayOfHeaders[i++] = header;
conn.addRequestProperty(n, v);
}
}
}
if (cacheManager != null) {
cacheManager.setHeaders(conn, arrayOfHeaders, u);
}
}
Aggregations