我一直試圖通過將一些外部Erlang代碼放入我的Tsung配置文件(tsung.xml)並設置一些動態來消除構建過程中的一些複雜問題變量,但已經發現一些表達式似乎不能正常工作。當嘗試使用If語句,個案或甚至函數定義(funs或normal)時,或者Tsung抱怨帶有「unexpected_char」消息(但沒有提及可能的char),或者對於後者,Erlang返回一個「語法錯誤之前'[]'「解析錯誤。如果整個函數表達式的僅僅是如果表達發生Tsung.xml中的嵌入式Erlang動態變量無法解析If表達式
<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" />
相同的結果:
<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.
">
這導致上述解析錯誤。
我對Erlang和Tsung很陌生,所以也許我誤解了這些命令需要如何構造,或者tsungu需要提供什麼Tsung的eval。它似乎使用標準的Erlang掃描,解析和eval方法,所以我想它肯定支持分支操作和函數。
所以我的問題本身歸結爲:這段代碼(語法)正確和不聰根本不支持這一點,其次,是有這樣做的更好或更地道的正確方法?
啊,當然!我沒有想過XML解析器本身是一個潛在的問題,因爲 - >的初始代碼=函數定義解析否則。也看起來我沒有很好地閱讀這本手冊,對於匿名函數來說已經足夠了。謝謝! – user3022071