JMeter - Сценарий Velocity JSR223 не может использовать переменные / среду JMeter - PullRequest
2 голосов
/ 05 июня 2019

Я могу загрузить Velocity в качестве языка для JSR223 в JMeter 4/5,

Я добавил velocity-engine-core-2.0.jar и velocity-engine-scripting-2.0.jar, которые включают скорость в списке языков JSR223,

(пробовал также с последней скоростью версии 2.1 )

Проблема в том, что любой заданный текст игнорируется, даже если я введу неверный синтаксис, он не выдает никаких исключений (как в других языках) или использует vars, log, ...

Кажется, что скрипт не выполняется, как я могу выполнить скрипт скорости JSR223? мне нужно добавить конфигурации или банки? Или есть какие-то ограничения JMeter / Java для скорости?

Попробовал, например:

log.info("Hello Velocity");
vars.put("a","Hello Velocity");
System.out.println("Hello Velocity");
NoExists.out.println("Hello Velocity");

Кажется, у меня есть зависимости скорости выполнения

slf4j-api 1.7.25 Да Да Да, вам также понадобится привязка slf4j во время выполнения

commons-lang 3.5 Да Да Да

библиотека содержит slf4j-api-1.7.25.jar commons-lang3-3.8.1.jar и добавлена ​​slf4j-simple-1.7.25.jar к библиотеке JMeter по умолчанию

Вход

2019-06-05 11:48:05,739 DEBUG o.a.j.c.GenericController: Calling next on: class org.apache.jmeter.control.GenericController
2019-06-05 11:48:05,739 DEBUG o.a.j.t.TestBeanHelper: Preparing class org.apache.jmeter.protocol.java.sampler.JSR223Sampler
2019-06-05 11:48:05,739 DEBUG o.a.j.t.TestBeanHelper: Setting scriptLanguage=velocity
2019-06-05 11:48:05,739 DEBUG o.a.j.t.TestBeanHelper: Setting parameters=
2019-06-05 11:48:05,739 DEBUG o.a.j.t.TestBeanHelper: Setting filename=
2019-06-05 11:48:05,739 DEBUG o.a.j.t.TestBeanHelper: Setting cacheKey=false
2019-06-05 11:48:05,739 DEBUG o.a.j.t.TestBeanHelper: Setting script=log.info("Hello Velocity");
vars.put("a","Hello Velocity");
System.out.println("Hello Velocity");
NoExists.out.println("Hello Velocity");
2019-06-05 11:48:05,739 DEBUG o.a.velocity: Initializing Velocity, Calling init()...
2019-06-05 11:48:05,739 TRACE o.a.velocity: *****************************
2019-06-05 11:48:05,739 DEBUG o.a.velocity: Starting Apache Velocity v2.0
2019-06-05 11:48:05,739 TRACE o.a.velocity: RuntimeInstance initializing.
2019-06-05 11:48:05,741 DEBUG o.a.velocity: Default Properties resource: org/apache/velocity/runtime/defaults/velocity.properties
2019-06-05 11:48:05,741 TRACE o.a.v.loader: ResourceManager initializing: class org.apache.velocity.runtime.resource.ResourceManagerImpl
2019-06-05 11:48:05,741 DEBUG o.a.velocity: ResourceLoader instantiated: org.apache.velocity.runtime.resource.loader.FileResourceLoader
2019-06-05 11:48:05,741 TRACE o.a.v.l.file: FileResourceLoader: initialization starting.
2019-06-05 11:48:05,741 DEBUG o.a.v.l.file: FileResourceLoader: adding path '.'
2019-06-05 11:48:05,741 TRACE o.a.v.l.file: FileResourceLoader: initialization complete.
2019-06-05 11:48:05,741 DEBUG o.a.velocity: initialized (class org.apache.velocity.runtime.resource.ResourceCacheImpl) with class java.util.Collections$SynchronizedMap cache map.
2019-06-05 11:48:05,741 TRACE o.a.v.loader: Default ResourceManager initialization complete.
2019-06-05 11:48:05,741 DEBUG o.a.velocity: Loaded System Directive: org.apache.velocity.runtime.directive.Stop
2019-06-05 11:48:05,742 DEBUG o.a.velocity: Loaded System Directive: org.apache.velocity.runtime.directive.Define
2019-06-05 11:48:05,742 DEBUG o.a.velocity: Loaded System Directive: org.apache.velocity.runtime.directive.Break
2019-06-05 11:48:05,742 DEBUG o.a.velocity: Loaded System Directive: org.apache.velocity.runtime.directive.Evaluate
2019-06-05 11:48:05,742 DEBUG o.a.velocity: Loaded System Directive: org.apache.velocity.runtime.directive.Macro
2019-06-05 11:48:05,742 DEBUG o.a.velocity: Loaded System Directive: org.apache.velocity.runtime.directive.Parse
2019-06-05 11:48:05,742 DEBUG o.a.velocity: Loaded System Directive: org.apache.velocity.runtime.directive.Include
2019-06-05 11:48:05,742 DEBUG o.a.velocity: Loaded System Directive: org.apache.velocity.runtime.directive.Foreach
2019-06-05 11:48:05,743 DEBUG o.a.v.parser: Created '20' parsers.
2019-06-05 11:48:05,743 TRACE o.a.v.macro: initialization starting.
2019-06-05 11:48:05,743 DEBUG o.a.v.macro: "velocimacro.library" is not set. Trying default library: VM_global_library.vm
2019-06-05 11:48:05,743 DEBUG o.a.v.macro: Default library not found.
2019-06-05 11:48:05,743 DEBUG o.a.v.macro: allowInline = true: VMs can be defined inline in templates
2019-06-05 11:48:05,743 DEBUG o.a.v.macro: allowInlineToOverride = false: VMs defined inline may NOT replace previous VM definitions
2019-06-05 11:48:05,743 DEBUG o.a.v.macro: allowInlineLocal = false: VMs defined inline will be global in scope if allowed.
2019-06-05 11:48:05,744 DEBUG o.a.v.macro: autoload off: VM system will not automatically reload global library macros
2019-06-05 11:48:05,744 TRACE o.a.v.macro: Velocimacro: initialization complete.
2019-06-05 11:48:05,744 TRACE o.a.velocity: RuntimeInstance successfully initialized.
2019-06-05 11:48:05,744 DEBUG o.a.j.c.GenericController: Calling next on: class org.apache.jmeter.control.GenericController

EDIT

Кажется, что неверный контекст скорости может вызвать ошибку,

например. для вызова не существует переменная скорости $a

2019-06-05 12:39:28,804 DEBUG o.a.v.rendering: Null reference [template '<unknown>', line 2, column 7]: $a cannot be resolved.

Но проблема остается в том, что JMeter не может использовать переменную скорости в своем контексте

EDIT

Обходной путь - добавить скорость LogTool (speed-tools-generic-3.0.jar) и использовать $log

$log.debug( "Hello Velocity");

Но нельзя использовать переменную JMeter в качестве

$log.debug( "Hello " + vars.get("a"));

1 Ответ

1 голос
/ 06 июня 2019

Я нашел проблему, в Velocity вам нужно добавить $ перед именем вашей контекстной переменной,

Поэтому вместо vars используйте $vars:

$log.debug( "Hello " + $vars.get("a"));

Есть улучшение в , добавьте Velocity в JMeter как язык JSR223 , Вы можете голосовать

...