Функция Tsung Erlang (dynvars) - экранирование кавычек

Новичок в Tsung и Erlan и столкнулся с проблемой, на которую не смог найти ответ. Я использую erlang-mysql-driver в функции Tsung dynvars Erlang, и у меня, похоже, проблема с экранированными кавычками.

Я хотел бы сделать что-то вроде этого:

      <setdynvars sourcetype="eval"
              code='fun({Pid,DynVars})->
                  mysql:start_link(p1, "localhost", "user", "pass", "db"), 
                  Result = mysql:fetch(p1, "SELECT * FROM consumers WHERE first_name=\'Doonley\'") end.'>
      <var name="myres" />
    </setdynvars>

но я получаю ошибку пробела:

Douglas-Sparlings-MacBook-Pro:.tsung dsparling$ tsung start
Starting Tsung
"Log directory is: /Users/dsparling/.tsung/log/20091110-16:35"
3284- fatal: {whitespace_required_between_attributes}
["Config Error, aborting ! ",{fatal,{{whitespace_required_between_attributes},{file,"/Users/dsparling/.tsung/tsung.xml"},{line,72},{col,221}}}]

Мне действительно нужно использовать переменную для выбора, но я не уверен в синтаксисе. Что-то вроде следующего - это то, что я ищу:

      <setdynvars sourcetype="eval"
              code='fun({Pid,DynVars})->
                  Val='Doonley",
                  mysql:start_link(p1, "localhost", "user", "pass", "db"), 
                  Result = mysql:fetch(p1, "SELECT * FROM consumers WHERE first_name=?", Val) end.'>
      <var name="myres" />
    </setdynvars>

person Doug Sparling    schedule 10.11.2009    source источник


Ответы (1)


Попробуйте экранировать одинарные кавычки как &apos;. Например.:

  <setdynvars sourcetype="eval"
          code='fun({Pid,DynVars})->
              mysql:start_link(p1, "localhost", "user", "pass", "db"), 
              Result = mysql:fetch(p1, "SELECT * FROM consumers WHERE first_name=&apos;Doonley&apos;") end.'>
  <var name="myres" />
</setdynvars>
person legoscia    schedule 10.11.2009
comment
Я подумал об этом позже, хотя это тоже не похоже на успех: [Ошибка конфигурации, прерывание ! ,{function_clause,[{erl_scan,scan_string1,[[',68,111,111,110,108,101,121,',34,41,32,101,110,100,46],1,no_col,34,=eman_tsrif EREHW sremusnoc MORF * TCELES,=eman_tsrif EREHW sre ]},{erl_scan,scan_string,6},{erl_scan,string1,5},{ts_utils,eval,1},{ts_config,parse,2},{lists,foldl,3},{ts_config,parse,2} ,{списки,foldl,3}]}] - person Doug Sparling; 12.11.2009
comment
Хм, кажется, строка превратилась в глубокий список из-за апострофов. Я предполагаю, что это ошибка в Tsung, которую можно исправить, изменив erl_scan:string(Code) на erl_scan:string(lists:flatten(Code)) в функции eval в ts_utils.erl. - person legoscia; 12.11.2009
comment
Спасибо, вроде получилось. Я отправил но отчет. - person Doug Sparling; 13.11.2009