JMeter / Beanshell "ошибка вызова метода bsh: файл источника eval:"
у меня проблема в JMeter, где я получаю эту ошибку
2014/08/14 14:13:26 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``String RequestUrl = vars.get("RequestUrl"); String[] params = RequestUrl.split(" . . . '' : Typed variable declaration
2014/08/14 14:13:26 WARN - jmeter.extractor.BeanShellPostProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``String RequestUrl = vars.get("RequestUrl"); String[] params = RequestUrl.split(" . . . '' : Typed variable declaration
Я понятия не имею, что случилось, и код, в противном случае, кажется, работает. Кто-нибудь может дать мне совет?
вот блок кода, о котором идет речь:
String RequestUrl = vars.get("RequestUrl");
String[] params = RequestUrl.split("?");
String RequestTask = params[1].split("&")[1].split("=")[1];
System.out.println(RequestTask);
vars.put("RequestTask",RequestTask);
вероятно, следует упомянуть, что код находится в постпроцессоре, который сопряжен с экстрактором Xpath для "RequestUrl"
отредактировано, чтобы включить всю ошибку
3 ответов
Я не вижу вашего URL-адреса и что возвращает запрос XPath, но в любом случае ваша логика синтаксического анализа URL-адресов выглядит неустойчивой, поскольку она сильно зависит от порядка параметров и присутствия и может укусить вас в будущем в случае изменения URL-адреса запроса, т. е. дополнительного параметра или измененного порядка параметров или чего-то закодированного и т. д.
ниже ссылка:
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import java.net.URI;
import java.util.List;
String url = vars.get("RequestUrl");
List params = URLEncodedUtils.parse(new URI(url), "UTF-8");
for (NameValuePair param : params) {
if (param.getName().equals("put your actual param name here")) {
vars.put("RequestTask", param.getValue());
}
}
также стоит проверить как использовать BeanShell: любимый встроенный компонент JMeter для советы по устранению неполадок. В общем, для локализации журнала ошибок следует использовать:
log.info("something");
log.error("something else");
поэтому, если вы не видите сообщение в журнале, чем Beanshell не смог выполнить строку и не удалось где-то выше.
также сообщения об ошибках Beanshell не очень информативны, я использую следующую конструкцию в своих скриптах:
try {
//script logic here
}
catch (Throwable ex) {
log.error("Failed to do this or that", ex);
}
таким образом, ошибка stracktrace может быть прочитана в jmeter.журнал.
надеюсь, что это помогает.
не могли бы вы показать весь ошибка?
попробуйте добавить один оператор за другим, чтобы увидеть, какой из них является основной причиной.
Я полагаю, вы можете сделать гипотезу о результатах (доступ к массиву), которые могут быть причиной проблемы.
Если вы покрываете сценарий JMS записанный VuGen в JMeter, то вам нужно искать lr
функции скопированы, которые будут вызывать эту / подобную ошибку.
например: int orderlinecount = Integer.parseInt(lr.eval_string("strInt"));
вы должны убедиться, что ваш скрипт свободен от всех функций, связанных с lr, чтобы jmeter успешно выполнил ваш скрипт.