JMeter генерирует подписанные запросы API AWS

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

Моя первая попытка заключалась в том, чтобы поместить те же параметры, которые отлично работают в моих запросах Postman, внутри диспетчера заголовков HTTP. Этими параметрами были «AccessKey», «SecretKey», «Регион AWS», «Имя службы» и «Токен сеанса», но в ответе говорилось «Отказано в доступе». В лучшем случае я просто использовал неправильные имена на этом шаге, и их переименование уже все исправляет.

Моя вторая попытка состояла в том, чтобы следовать документации 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());
}
}

Заранее спасибо за вашу помощь!


person Thomas    schedule 25.05.2018    source источник


Ответы (1)


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

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

Дополнительную информацию о использование сценариев Groovy в тестах JMeter.

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

person Dmitri T    schedule 25.06.2018