Получить и установить свойства JMeter в Java Request Sampler

avatar
Peter
8 апреля 2018 в 09:55
3496
2
2

Я использовал сэмплер JSR223 для некоторого кода Java, но теперь я внедряю сэмплер Java Request. Код JSR223 не может напрямую работать в сэмплере запроса Java. Необходимо внести некоторые изменения. Например, в JSR223 код:

 props.put("p_driver", driver);
 object = props.get("p_driver").getJsonObject(dbser, dbn, wfid);

Здесь драйвер — это объект типа Driver (написанный нами служебный класс.

Я хочу создать свойство типа Object и сохранить в нем объект драйвера. Также я хочу получить и установить различные свойства через Java. Я знаю, что мы можем использовать:

JMeterContextService.getContext().getCurrentSampler().getProperties("p_driver");

Но очень мало ясности в том, как переменные и свойства jmeter могут работать в пробоотборнике запросов Java.

Источник

Ответы (2)

avatar
user7294900
8 апреля 2018 в 13:34
2

Отметьте JavaSamplerContext, который является контекстом Sampler, он поддерживает только операции получения (только чтение):

JavaSamplerContext используется для предоставления контекстной информации реализации JavaSamplerClient. В настоящее время он состоит из параметров инициализации, которые были указаны в графическом интерфейсе.

Также примечание о реализации в коде:

Все методы этого класса в настоящее время доступны только для чтения.

Я вижу, вам удалось получить свойство, так что это было намерение прочитать свойство/переменную, используемую в графическом интерфейсе, но не установить/обновить свойства/переменные.

Особенно не поддерживаются свойства обновления, влияющие на многопоточность:

Если методы обновления будут включены в будущем, они должны быть определены так, чтобы с каждым потоком может быть связан один экземпляр JavaSamplerContext.

Вот пример kafka чтения переменных JMeter:

Peter
8 апреля 2018 в 16:11
0

Вы имеете в виду, что свойства не могут быть установлены в сэмплере запросов Java и могут быть получены только?

avatar
UBIK LOAD PACK
11 апреля 2018 в 13:11
1

То, что вы ищете, это JavaSamplerContext.

Используйте JMeter 4.0, и вы получите доступ к:

  • javaSamplerContext.getJMeterProperties(), который позволяет вам устанавливать/получать свойства, к которым вы затем можете получить доступ, используя ${__P(propName)}, убедитесь, что вы используете его потокобезопасным способом

  • javaSamplerContext.getJMeterVariables(), который позволяет вам устанавливать/получать переменные, к которым вы затем можете получить доступ, используя ${varName}, убедитесь, что вы используете его потокобезопасным способом

Затем вы можете получить переменную или свойство через:

javaSamplerContext.getJMeterProperties().get("propName")

javaSamplerContext.getJMeterVariables().get("varName")

Затем можно установить переменную или свойство с помощью:

javaSamplerContext.getJMeterProperties().put("propName", объект, который вы хотите)

javaSamplerContext.getJMeterVariables().putObject("varName", нужный объект)

Peter
11 апреля 2018 в 16:07
0

Но я не могу использовать $, так как я кодирую сэмплер запросов Java, а не сэмплер jsr223 или beans hell. Верно ?