JMeter генерирует подписанные запросы API AWS - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь сгенерировать подписанный запрос AWS в JMeter.

Моя первая попытка состояла в том, чтобы поместить те же параметры, которые прекрасно работают в моих запросах Postman, в диспетчер заголовков HTTP.Такими параметрами были «AccessKey», «SecretKey», «AWS Region», «Service Name» и «Session Token», но в ответе было указано «Access denied».В лучшем случае я просто использовал неправильные имена на этом шаге, и переименование их уже исправляет все.

Моя вторая попытка состояла в том, чтобы следовать документации AWS и написать класс Java, который генерируетподписанный запрос.Затем я хотел использовать препроцессор JSR223 для установки переменных с помощью vars.put.Как я могу сделать это правильно?Я новичок в JMeter и подумал, что смогу вставить свой Java-код, добавить оператор vars.put и все.Но, к сожалению, это не создает переменную с именем «aaauthorization», если я запускаю Debug Sampler впоследствии:

class aws_request {

public static String bytesToHex(byte[] hash) {
    ...
    return hexString.toString();
}

private static byte[] HmacSHA256(String data, byte[] key) throws Exception {
    ...
    return mac.doFinal(data.getBytes("UTF8"));
}

private static byte[] getSignatureKey(String key, String dateStamp, String regionName, String serviceName)
        throws Exception {
    ...
    return kSigning;
}

public static String getAuthorization() {
    try {...
        return authorization;
    } catch (Exception e) {
        return "failed";
    }

}
public static void main(String args[]) {
    vars.put("aaauthorization", getAuthorization());
}
}

Заранее благодарю за помощь!

1 Ответ

0 голосов
/ 25 июня 2018

Вам необходимо удалить определение class aws_request { и закрыть фигурную скобку }. Тестовые элементы JSR223 отличаются от обычных классов Java, код оценивается с помощью ScriptEngine , поэтому вам не разрешено иметь "классы", однако обычные методы будут разрешены, и вы сможетевыполнить их.

Если ваш скрипт Groovy не выполняет то, что должен делать, в первую очередь проверьте файл jmeter.log - если будут какие-либо ошибки - они пойдут туда.

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

Не путайте с языковой опцией java, она реализуется через интерпретатор Beanshell , который ограничивает вас языковыми функциями Java SE 1.5 и его производительностьбольшой вопросительный знак, когда речь идет о высоких нагрузках.

...