Jmeter BSF с использованием Groovy, импорт функции одного скрипта в другой - PullRequest
1 голос
/ 21 сентября 2011

Я использую groovy в моем Jmeter BSF, и иногда у меня есть функции, которые используются достаточно часто, чтобы перейти к какому-либо сценарию, который я могу использовать в качестве библиотеки. Мой подход состоял в том, чтобы создать файл, скажем «library.groovy», и добавить туда некоторую функцию

public void function()
{
    println("hello!");
}

и затем используйте следующий код в моем скрипте BSF

import library.groovy;
function();

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

Кто-нибудь может предложить решение для этого?

Обновление: Я перепробовал практически все возможные решения, описанные в интернете. И все, что работает в Groovy консоли или Eclipse, не в Jmeter. Вероятно, это из-за ЧФ. Кто-нибудь знает обходные пути?

Ответы [ 3 ]

3 голосов
/ 31 октября 2012

У меня просто была эта проблема, и я решил ее так, что мне кажется более привлекательным. Это в основном ответ winstaan74, но с дополнительными битами, необходимыми для его работы.

У вас есть файл groovy вашей функции с именем скажем: MyJmeterFunctions.groovy:

package My.JmeterFunctions

public class MyHelloClass   {
    public void hello() {
        println("Hello!");
    }
}

Затем вы компилируете это из терминала:

$ groovyc -d myJmeterFunctions myJmeterFunctions.groovy

и превратите его в файл .jar в папке / lib вашей установки jmeter со всеми остальными файлами .jar, поставляемыми с jmeter

$ jar cvf /<>/apache-jmeter-2.8/lib/myJmeterFunctions.jar -C myJmeterFunctions.

Теперь перезапустите jmeter. Он не узнает о вашем новом .jar, пока вы не узнаете.

Наконец, у вас есть скрипт, из которого вы хотите запустить функцию hello (), на которую указывает / слушает ваше BSF-утверждение jmeter:

import My.JmeterFunctions.*

def my_hello_class_instance = new MyHelloClass();
my_hello_class_instance.hello();

И это то, что сработало для меня. Если вы предпочитаете организовать .jar в другую папку, чем jmeter / lib, я думаю, вы можете запустить jmeter используя (из здесь ): $ jmeter -Jsearch_paths = / path / to / yourfunction.jar

Но я сам не пробовал.

0 голосов
/ 26 сентября 2011

В итоге у меня было 2 файла, как показано ниже: «MyHelloClass.groovy»

public class MyHelloClass   {
    public void hello() {
        println("Hello!");
    }
}

и «HelloScript.groovy»

try {
    ClassLoader parent = getClass().getClassLoader();
    GroovyClassLoader loader = new GroovyClassLoader(parent);
    Class groovyClass = loader.parseClass(new File("../GroovyScripts/MyHelloClass.groovy"));
    GroovyObject helloClass = (GroovyObject) groovyClass.newInstance();
    helloClass.hello();
}
catch (Throwable e) {
    println(e.toString());
}

Затем я могу запустить «HelloScript.groovy»в ЧФ от Jmeter.

0 голосов
/ 21 сентября 2011

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

package library

class UsefulFunctions {
   static function() {
        println 'hello'
    }
}

А затем в вашем тестовом скрипте, скажем,

import static library.UsefulFunctions.*

function()

Теперь, это просто царапина на поверхности, но я надеюсь, что это 'Достаточно, чтобы вы начали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...