Баг в Siege 3.0.2
Сегодня на работе патчил утилиту Siege, она применяется для простенького нагрузочного тестирования. Нужно было несколько расширить её возможности. Попутно нашёл баг — время от времени под «Маком» (не знаю, проявляется ли баг на других платформах, по идее, должен) не раскрывались переменные в строках запроса.
Баг плавающий, так как всё зависит от того в каких адресах выделится память для файла урлов. Сделал патч, может пригодится кому:
diff -urd --ignore-blank-lines --minimal src/cfg.c.orig src/cfg.c
--- src/cfg.c.orig 2013-07-20 00:26:04.000000000 +0400
+++ src/cfg.c 2013-07-20 00:26:10.000000000 +0400
@@ -168,18 +168,17 @@
BOOLEAN
is_variable_line(char *line)
{
- int pos;
- int x;
+ char *pos, *x;
char c;
/**
* check for variable assignment; make sure that on the left side
* of the = is nothing but letters, numbers, and/or underscores.
*/
- pos = (int)strstr(line, "=");
- if(pos > 0){
- for(x = 0; x < (pos - (int)line); x++){
- c = line[x];
+ pos = strstr(line, "=");
+ if(pos != NULL){
+ for (x = line; x < pos; x++) {
+ c = *x;
/* c must be A-Z, a-z, 0-9, or underscore. */
if ((c < 'a' || c > 'z') &&
(c < 'A' || c > 'Z') &&
похожа на apache ab
Комментарий для mamyashev.marat@gmail.com:
Таких инструментов много. От ab отличается несколькими вещами, основные две:
1) умеет ходить по урлам, имитируя поведение пользователя (в т.ч. куки запоминает)
2) умеет делать POST-запрос не из файла (из файла тоже умеет)