Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Баг в 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') &&
2 комментария
mamyashev.marat@gmail.com 2013

похожа на apache ab

Евгений Степанищев (bolknote.ru) 2013

Комментарий для mamyashev.marat@gmail.com:

Таких инструментов много. От ab отличается несколькими вещами, основные две:

1) умеет ходить по урлам, имитируя поведение пользователя (в т.ч. куки запоминает)
2) умеет делать POST-запрос не из файла (из файла тоже умеет)