Tsung.xml动态变量中嵌入的Erlang无法解析If表达式

Tsung.xml动态变量中嵌入的Erlang无法解析If表达式,erlang,tsung,Erlang,Tsung,我一直试图通过在Tsung配置文件(Tsung.xml)中引入一些外部Erlang代码并设置一些动态变量来消除构建过程中的一些复杂问题,但发现一些表达式似乎无法正常工作 当尝试使用If语句、cases甚至函数定义(funs或normal)时,Tsung会发出“unexpected_char”消息(但没有提到可能的字符),或者对于后者,Erlang会返回“语法错误在“[]”之前”的解析错误 <setdynvars sourcetype="eval" code="

我一直试图通过在Tsung配置文件(Tsung.xml)中引入一些外部Erlang代码并设置一些动态变量来消除构建过程中的一些复杂问题,但发现一些表达式似乎无法正常工作

当尝试使用If语句、cases甚至函数定义(funs或normal)时,Tsung会发出“unexpected_char”消息(但没有提到可能的字符),或者对于后者,Erlang会返回“语法错误在“[]”之前”的解析错误

<setdynvars sourcetype="eval"
               code="fun({Pid,DynVars}) ->
                        {Var_Scale, ScaleUp} = {3, 100},
                        Random=random:uniform() * 100 * ScaleUp,
                        Compare=round(Var_Scale * ScaleUp),
                        if
                                 Random =< Compare ->
                                     Return = 1;
                                 true ->
                                     Return = 0
                        end,
                        Return.
                        ">
            <var name="someVariable" />

如果整个函数表达式只是if表达式,则会出现相同的结果:

<setdynvars sourcetype="eval"
               code="fun({Pid,DynVars}) ->
                        if
                            1 < 2 -> Return = 2;
                            true -> Return = 3
                        end.
                        ">
            <var name="anotherVariable" />
        </setdynvars>

对于内联函数或匿名函数

<setdynvars ...
  Compare=round(Var_Scale * ScaleUp),
  Fn = fun() -> a
  end.
">
a
结束。
">
这将导致前面提到的解析错误

<setdynvars sourcetype="eval"
               code="fun({Pid,DynVars}) ->
                        {Var_Scale, ScaleUp} = {3, 100},
                        Random=random:uniform() * 100 * ScaleUp,
                        Compare=round(Var_Scale * ScaleUp),
                        if
                                 Random =< Compare ->
                                     Return = 1;
                                 true ->
                                     Return = 0
                        end,
                        Return.
                        ">
            <var name="someVariable" />
我对Erlang和Tsung有点陌生,所以可能我误解了这些命令需要如何构造,或者Tsung在Tsu utils中的eval需要提供什么。它似乎使用标准的Erlang扫描、解析和eval方法,所以我认为它肯定支持分支操作和函数


所以我的问题本身可以归结为:这是代码(语法上)吗正确,Tsung根本不支持这一点,其次,有没有更好或更惯用的正确方法来做到这一点?

我想它对
字符嵌入XML属性感到不高兴。试着以
的形式输入它们。另外,与命名函数不同的是
需要乐趣匹配的
end
标记:

<setdynvars sourcetype="eval"
               code="fun({Pid,DynVars}) -&gt;
                        if
                            1 &lt; 2 -&gt; Return = 2;
                            true -&gt; Return = 3
                        end
                     end.
                        ">
            <var name="anotherVariable" />
        </setdynvars>

啊,当然!我没有想到XML解析器本身是一个潜在的问题,因为->for the initial code=function definition在其他情况下解析得很好。另外,对于匿名函数,我似乎阅读手册不够好。谢谢!