2012-03-05 2 views
1

В настоящее время я работаю над бенчмаркингом службы RESTful, которую я создал, и часть этого процесса убеждается, что она выполняется в разумные количества раз для большого массива параметров. Например, допустим, у меня есть RESTful API формы some_site.com/item?item_id=y. В этом случае, чтобы убедиться, что моя служба работает так быстро, как хотелось бы, чтобы она работала, я хотел бы попробовать множество значений для y один за другим, предпочтительно из некоторого текстового файла. Я не могу понять, как это сделать в ab или httperf. Я открыт для использования другой программы бенчмаркинга, если есть, но предпочел бы что-то простое и легкое. То, что я хочу сделать, похоже на что-то довольно стандартное, поэтому я предполагаю, что уже должна быть программа, которая позволит мне это делать, но час или около того от Google не получил ответа. Идеи?Как настроить RESTful Service с переменными параметрами?

+1

Вы можете написать простой скрипт bash/php/perl для этого задания и отслеживать время загрузки для каждого вызова. –

+0

Да, но это похоже на нечто настолько распространенное, что я предположил, что уже существует обычное решение. Наверное, может быть, не все ... – Eli

ответ

1

Ответ: Jmeter (что, по-видимому, удивительно). This faq объясняет, как это сделать. Надеюсь, это помогает кому-то другому, поскольку мне понадобился день поиска, чтобы понять это.

1

У меня только что был хороший опыт использования JavaScript (через BSF/Rhino) в JMeter.

Я поместил одну группу потоков в свой план тестирования и вставил «Простой контроллер» с двумя элементами под ним - пробоотборщик «HTTP Request» и «BSF PreProcessor».

Установите язык BSF на «javascript» и введите код в текстовое поле или укажите его в файл (используйте полный путь или относительно CWD процесса JMeter).

/* Since `Math.random()` gives us float, we use `java.util.Random()` 
* see: http://docs.oracle.com/javase/7/docs/api/java/util/Random.html */ 
var Random = new Packages.java.util.Random(); 

var min = 10-1; 
var max = 2; 
var maxLines = (min)+Random.nextInt(max-min); 

var s = ''; 

for (var d = 0; d <= maxLines; d++) { 
    s += d.toString()+','+Random.nextInt(1000).toString()+'\n'; 
} 

// s => '0,312\n1,104\n2,608\n' 

vars.put('PAYLOAD', s); 

Теперь я могу обратиться к ${PAYLOAD} по запросу HTTP!

Вы можете создавать JSON, но вам нужно будет обновить jakarta-jmeter-2.5.1/lib/js-1.6R5.jar с новейшей версией Rhino получить JSON.stringify и JSON.parse. Это отлично сработало для меня, хотя я подумал, что я приведу здесь простой пример.

Вы можете использовать предварительный процессор BSF для параметров URL также, просто установите другую переменную с vars.put('X', 'some value') и передайте ее как ${X} в параметре запроса.

This blog post помогло немного, кстати.