Search in sources :

Example 11 with Header

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());
}
Also used : Header(org.apache.jmeter.protocol.http.control.Header) HeaderManager(org.apache.jmeter.protocol.http.control.HeaderManager) Test(org.junit.jupiter.api.Test)

Example 12 with Header

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());
}
Also used : Header(org.apache.jmeter.protocol.http.control.Header) HeaderManager(org.apache.jmeter.protocol.http.control.HeaderManager) Test(org.junit.jupiter.api.Test)

Example 13 with Header

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();
    }
}
Also used : MappingBuilder(com.github.tomakehurst.wiremock.client.MappingBuilder) Header(org.apache.jmeter.protocol.http.control.Header) WireMockServer(com.github.tomakehurst.wiremock.WireMockServer) URL(java.net.URL) HeaderManager(org.apache.jmeter.protocol.http.control.HeaderManager) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 14 with Header

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();
}
Also used : JMeterProperty(org.apache.jmeter.testelement.property.JMeterProperty) AuthManager(org.apache.jmeter.protocol.http.control.AuthManager) HTTPFileArg(org.apache.jmeter.protocol.http.util.HTTPFileArg) FileInputStream(java.io.FileInputStream) HeaderManager(org.apache.jmeter.protocol.http.control.HeaderManager) Header(org.apache.jmeter.protocol.http.control.Header) BufferedInputStream(java.io.BufferedInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) File(java.io.File)

Example 15 with Header

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);
    }
}
Also used : CollectionProperty(org.apache.jmeter.testelement.property.CollectionProperty) JMeterProperty(org.apache.jmeter.testelement.property.JMeterProperty) Header(org.apache.jmeter.protocol.http.control.Header)

Aggregations

Header (org.apache.jmeter.protocol.http.control.Header)15 HeaderManager (org.apache.jmeter.protocol.http.control.HeaderManager)10 Test (org.junit.jupiter.api.Test)5 ByteArrayInputStream (java.io.ByteArrayInputStream)3 IOException (java.io.IOException)2 MalformedURLException (java.net.MalformedURLException)2 URL (java.net.URL)2 ArrayList (java.util.ArrayList)2 ConfigTestElement (org.apache.jmeter.config.ConfigTestElement)2 Authorization (org.apache.jmeter.protocol.http.control.Authorization)2 HeaderPanel (org.apache.jmeter.protocol.http.gui.HeaderPanel)2 TestElement (org.apache.jmeter.testelement.TestElement)2 JMeterProperty (org.apache.jmeter.testelement.property.JMeterProperty)2 TestElementProperty (org.apache.jmeter.testelement.property.TestElementProperty)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 WireMockServer (com.github.tomakehurst.wiremock.WireMockServer)1 MappingBuilder (com.github.tomakehurst.wiremock.client.MappingBuilder)1 UnsupportedFlavorException (java.awt.datatransfer.UnsupportedFlavorException)1 BufferedInputStream (java.io.BufferedInputStream)1 File (java.io.File)1