Как загрузить внешнюю библиотеку JS в Jmeter?
У меня есть следующий код в сэмплере jsr223:
var key = "key";
var dateStamp = "20160329T134359Z";
var regionName = "us-east-1";
var serviceName = "execute-api";
var kDate= Crypto.HMAC(Crypto.SHA256, dateStamp, "AWS4" + key, { asBytes: true})
var kRegion= Crypto.HMAC(Crypto.SHA256, regionName, kDate, { asBytes: true });
var kService=Crypto.HMAC(Crypto.SHA256, serviceName, kRegion, { asBytes: true });
var kSigning= Crypto.HMAC(Crypto.SHA256, "aws4_request", kService, { asBytes: true });
vars.put("AWSKey", kSigning);
Теперь, когда я запускаю его, я получаю эту ошибку: Код ответа: 500 Ответное сообщение: javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "Crypto" не определено. (№ 6) в строке № 6
Очевидно, у меня нет крипто-библиотек. Однако я не знаю, как их загрузить. Я загрузил все соответствующие js и поместил их в папку /lib, но ничего не вышло. Я скачал этот файл: https://github.com/Boussetta/CryptoJS-v3.1.2 который обрабатывает функции, описанные в приведенном выше коде, но я не представляю, как его импортировать.
ТИА
1 ответ
Если вы хотите перейти на JavaScript - есть 2 варианта:
Используйте Rhino
load()
метод как:load("crypto.js")
Используйте класс HmacUtils из кодека Apache Commons из JavaScript
var rawhmac = org.apache.commons.codec.digest.HmacUtils.hmacSha1(key,data) var encoded = org.apache.commons.codec.binary.Base64.encodeBase64String(rawhmac)
Однако я бы порекомендовал перейти к варианту 3 - переключиться на "отличный" язык вместо JavaScript, чтобы вы могли:
- Повторно используйте образцы аутентификации Amazon в своем тесте
- Получите максимальную производительность и уверенность, так как скрипты Groovy могут быть скомпилированы, в то время как другие языки интерпретируются, поэтому реализация Groovy займет меньше ресурсов и будет работать быстрее. См. Beanshell против JSR223 против Java JMeter Scripting: снижение производительности, которого вы так долго ждали! статья для более подробной информации.