Как использовать Java-код в JMeter, который генерирует некоторый идентификатор HKSTD?Этот идентификатор будет использоваться в дальнейшем http запрос сэмплера - PullRequest
0 голосов
/ 04 марта 2019

Я работаю над проектом, в котором генерируется hkstd id, и этот идентификатор используется в дальнейшем HTTP Request Sampler.Этот идентификатор hkstd генерируется Java-кодом, предоставленным разработчиком.Мой сценарий заключается в том, что я должен сначала вызвать этот код Java, который будет возвращать идентификатор, а затем я буду использовать это в моем HTTP-запросе.Я пытался вызвать этот Java-код в Beanshell Sampler и в JSR223 Sampler, но безрезультатно, хотя этот сэмплер передает результат без каких-либо ошибок.Когда я пытаюсь поставить log / System.out, то ничего не печатает.Я не уверен, работает ли мой код / ​​звонит или нет?

Заранее спасибо!

JMeter Sampler for this java code

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Если вы хотите запустить этот класс Java как есть:

  1. Скомпилируйте исходный код, предоставленный разработчиком, и поместите полученный файл .jar в JMeter Classpath
  2. Перезапустите JMeter, чтобы выбрать файл .jar
  3. Добавьте JSR223 Sampler в свой план тестирования
  4. Поместите следующий код в область «Сценарий»:

    AppendHtstd.main()
    
  5. Вот и все, ваш класс будет выполнять JMeter

    enter image description here

См. Apache Groovy - почему и как его следует использовать статья, чтобы узнать больше о пользовательских сценариях в тестах JMeter

0 голосов
/ 04 марта 2019

Удалите класс и метод main и просто введите свой код, например:

import org.apache.commons.codec.digest.DigestUtils;

String contextRoot = "root";
String csrfToken = "a";
String url = "http://www.google.com/root?ta=b&_hkstd=1234c=d";

String urlWithQueryString = removeParamsAndHost(url, contextRoot);
String token = getHashValueOfUrl(urlWithQueryString, csrfToken);
String urlWithToken = findurlWithToken(url, token);

private static String findurlWithToken(String url, String token) {
    StringBuilder builder = new StringBuilder(removeParams(url));
    if (builder.indexOf("?") == -1) {
        builder.append("?");
    } else {
        builder.append("&");
    }
    builder.append("_hkstd").append("=").append(token);
    ;
    return builder.toString();

}

private static String removeParamsAndHost(String url, String contextRoot) {
    if (url.indexOf("_hkstd") != -1) {
        return url.substring(url.indexOf(contextRoot), url.indexOf("_hkstd") - 1);
    } else {
        return url.substring(url.indexOf(contextRoot));
    }
}

private static String removeParams(String url) {
    if (url.indexOf("_hkstd") != -1) {
        return url.substring(0, url.indexOf("_hkstd") - 1);
    } else {
        return url;
    }
}

public static String getHashValueOfUrl(String url, String csrfToken) {
    return DigestUtils.md5Hex(url + csrfToken);
}

Вы можете добавить переменную JMeter, которую сможете использовать позже, используя vars.put:

vars.put("url", urlWithToken );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...