В настоящее время я работаю над бенчмаркингом службы RESTful, которую я создал, и часть этого процесса убеждается, что она выполняется в разумные количества раз для большого массива параметров. Например, допустим, у меня есть RESTful API формы some_site.com/item?item_id=y
. В этом случае, чтобы убедиться, что моя служба работает так быстро, как хотелось бы, чтобы она работала, я хотел бы попробовать множество значений для y один за другим, предпочтительно из некоторого текстового файла. Я не могу понять, как это сделать в ab или httperf. Я открыт для использования другой программы бенчмаркинга, если есть, но предпочел бы что-то простое и легкое. То, что я хочу сделать, похоже на что-то довольно стандартное, поэтому я предполагаю, что уже должна быть программа, которая позволит мне это делать, но час или около того от Google не получил ответа. Идеи?Как настроить RESTful Service с переменными параметрами?
ответ
Ответ: Jmeter (что, по-видимому, удивительно). This faq объясняет, как это сделать. Надеюсь, это помогает кому-то другому, поскольку мне понадобился день поиска, чтобы понять это.
У меня только что был хороший опыт использования 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 помогло немного, кстати.
Вы можете написать простой скрипт bash/php/perl для этого задания и отслеживать время загрузки для каждого вызова. –
Да, но это похоже на нечто настолько распространенное, что я предположил, что уже существует обычное решение. Наверное, может быть, не все ... – Eli