Не удается импортировать com.paytm.merchant.CheckSumServiceHelper при запуске скрипта бобовой оболочки в jmeter - PullRequest
1 голос
/ 16 января 2020

Я новичок в препроцессоре Jmeter JSR223. Мы только что интегрировали платежный шлюз Paytm в наш продукт, и нам пришлось выполнять нагрузочные тесты с использованием Jmeter. Мы должны сгенерировать контрольную сумму, используя набор значений, а затем вставить ее в нашу Json полезную нагрузку. Я использую Java Beanshell для выполнения кода. Я добавил файл jar , доступный здесь , в свой каталог bin, а также добавил его в путь к классам перед началом тестов. Вот как выглядит мой код:

import com.paytm.merchant.CheckSumServiceHelper;

com.paytm.merchant.CheckSumServiceHelper checkSumServiceHelper = com.paytm.merchant.CheckSumServiceHelper.getCheckSumServiceHelper();

TreeMap<String,String> parameters = new TreeMap<String,String>();
String merchantKey = "xxxxxxxxxxxxxxxxx";
parameters.put("MID", "xxxxxxxxxxxxxxxxxxxxxx");
parameters.put("ORDERID", "${orderId}");
parameters.put("TXNID", "20200113111212800110168201701179744");
parameters.put("TXN_AMOUNT", "10.01");
parameters.put("PAYMENTMODE", "DC");
parameters.put("CURRENCY", "INR");
parameters.put("TXNDATE", "2020-01-13 13:59:03.0");
parameters.put("STATUS", "TXN_SUCCESS");
parameters.put("RESPCODE", "01");
parameters.put("RESPMSG", "Txn Success");
parameters.put("GATEWAYNAME", "HDFC");
parameters.put("BANKTXNID", "777001911059826");
parameters.put("BANKNAME", "JPMORGAN CHASE BANK");
parameters.put("BANKNAME", "JPMORGAN CHASE BANK");

String checkSum = checkSumServiceHelper.genrateCheckSumGAE(merchantKey, parameters);

vars.put("checkSum", checkSum)

Вот ошибка, которую я получаю в результате:

javax.script.ScriptException: Sourced file: inline evaluation of: ``import com.paytm.merchant.CheckSumServiceHelper;  com.paytm.merchant.CheckSumSer . . . '' : Typed variable declaration : Class: com.paytm.merchant.CheckSumServiceHelper not found in namespace : at Line: 3 : in file: inline evaluation of: ``import com.paytm.merchant.CheckSumServiceHelper;  com.paytm.merchant.CheckSumSer . . . '' : com .paytm .merchant .CheckSumServiceHelper 
 in inline evaluation of: ``import com.paytm.merchant.CheckSumServiceHelper;  com.paytm.merchant.CheckSumSer . . . '' at line number 3
    at bsh.engine.BshScriptEngine.evalSource(BshScriptEngine.java:93) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
    at bsh.engine.BshScriptEngine.eval(BshScriptEngine.java:46) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:233) ~[java.scripting:?]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:225) ~[ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.modifiers.JSR223PreProcessor.process(JSR223PreProcessor.java:44) [ApacheJMeter_components.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.runPreProcessors(JMeterThread.java:935) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:537) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.1.1 r1855137]
    at java.lang.Thread.run(Thread.java:830) [?:?]

Любая помощь в устранении этой ошибки будет высоко оценена. Это может быть глупый вопрос, но я новичок в этом, поэтому, пожалуйста, помогите! :)

РЕДАКТИРОВАТЬ:

Теперь я использую синтаксис groovy для этого. Я не могу просмотреть свою переменную контрольной суммы в Дереве результатов просмотра с помощью моего отладочного сэмплера, но я могу видеть ее в консоли. Значение отображается правильно в консоли. Но переменная не экспортируется.

import com.paytm.pg.merchant.CheckSumServiceHelper;

com.paytm.pg.merchant.CheckSumServiceHelper checkSumServiceHelper = com.paytm.pg.merchant.CheckSumServiceHelper.getCheckSumServiceHelper();

TreeMap parameters = new TreeMap();
String merchantKey = "xxxxxxxxxxxxxxxxx";
parameters.put("MID", "xxxxxxxxxxxxxxxxxxxxxx");
parameters.put("ORDERID", "${orderId}");
parameters.put("TXNID", "20200113111212800110168201701179744");
parameters.put("TXN_AMOUNT", "10.01");
parameters.put("PAYMENTMODE", "DC");
parameters.put("CURRENCY", "INR");
parameters.put("TXNDATE", "2020-01-13 13:59:03.0");
parameters.put("STATUS", "TXN_SUCCESS");
parameters.put("RESPCODE", "01");
parameters.put("RESPMSG", "Txn Success");
parameters.put("GATEWAYNAME", "HDFC");
parameters.put("BANKTXNID", "777001911059826");
parameters.put("BANKNAME", "JPMORGAN CHASE BANK");
parameters.put("BANKNAME", "JPMORGAN CHASE BANK");

String checkSum = checkSumServiceHelper.genrateCheckSumGAE(merchantKey, parameters);
Out. println "s====================================ssssss"
OUT. println checkSum
props.put("checkSum", checkSum);

Вот ошибка, когда я запускаю это:

javax.script.ScriptException: javax.script.ScriptException: java.security.InvalidKeyException: Invalid AES key length: 17 bytes

Я думаю, что эта ошибка связана с моими входными значениями.

1 Ответ

1 голос
/ 16 января 2020

Beanshell не Java и не на 100% соответствует Java, вам нужно придерживаться Java 1,5 языкового уровня в целом.

В частности, Beanshell не поддерживает Операторы Diamond , вам необходимо удалить их из кода, например:

TreeMap parameters = new TreeMap();

В общем запуск из JMeter 3.1 рекомендуется использовать JSR223 Test Elements и Groovy язык для сценариев , причины этого в:

  • Groovy сценарии могут быть скомпилированы и кэшированы, в то время как каждый компонент Beanshell оценивается каждый время, когда она называется, Groovy производительность намного выше
  • Groovy поддерживает все базовые функции языка JDK , в то время как Beanshell застрял на Java 5
  • Кроме того Groovy предоставляет множество улучшений по сравнению с обычным Java SDK

Проверьте Apache Groovy - Почему и как вы должны его использовать статья для более подробной информации.

...