【问题标题】:Tsung Load-Test XMPP with TLS使用 TLS 的 Tsung 负载测试 XMPP
【发布时间】:2014-05-12 20:58:05
【问题描述】:

有没有人有一个带有 TLS 实现的 xml tsung 配置文件?我想在我的 XMPP 服务器上测试 TLS 安全连接,但我无法在启用 TLS 的情况下运行脚本。

<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/Users/Downloads/tsung-1-5-0/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">
  <clients>
   <client host="localhost" use_controller_vm="true" maxusers="600"/>
  </clients>

  <!-- Server side setup -->
 <servers>
  <server host="chat.example.com" port="5222" type="tcp"></server>
 </servers>

  <load>
   <arrivalphase phase="1" duration="10" unit="minute">
    <users interarrival="0.01" unit="second"></users>
   </arrivalphase>
  </load>

  <!-- JABBER parameters -->
  <!-- to synchronise users,  use a global acknoledgement -->
 <options>
  <option type="ts_jabber" name="global_number" value="1000"></option>
  <option type="ts_jabber" name="userid_max" value="10000"></option>
  <option type="ts_jabber" name="domain" value="chat.example.com"></option>
  <option type="ts_jabber" name="username" value="tsunguser"></option>
  <option type="ts_jabber" name="passwd" value="tsunguser"></option>
 </options>

<sessions>
   <session probability="50" name="jabber-example" type="ts_jabber">

    <request> <jabber type="starttls" ack="local" cacertfile="%%_cacert%%" certfile="%%_certfile%%" keyfile="%%_keyfile%%" /></request>
    <thinktime value="2"></thinktime>
    <transaction name="authenticate">
      <request> <jabber type="auth_get" ack="local"></jabber> </request>
      <request> <jabber type="auth_set_plain" ack="local"></jabber> </request>
    </transaction>

    <request> <jabber type="presence:initial" ack="no_ack"/> </request>
    <thinktime value="2  "></thinktime>

    <transaction name="roster">
      <request> <jabber type="iq:roster:get" ack="local"></jabber></request>
    </transaction>

    <thinktime value="30"></thinktime>

    <transaction name="online">
    <request> <jabber type="chat" ack="no_ack" size="16" destination="online"></jabber> </request>
    </transaction>

    <thinktime value="30"></thinktime>

    <transaction name="offline">
      <request> <jabber type="chat" ack="no_ack" size="56" destination="offline"></jabber> </request>
    </transaction>

    <thinktime value="30"></thinktime>

    <transaction name="close">
      <request> <jabber type="close" ack="no_ack"></jabber> </request>
    </transaction>

  </session>

  <session probability="20" name="jabber-digest" type="ts_jabber">

    <!-- regexp captures stream ID returned by server -->
    <request>
      <dyn_variable name="sid" re="&lt;stream:stream id=&quot;(.*)&quot; xmlns:stream"/>
      <jabber type="connect" ack="local"></jabber>
    </request>

    <thinktime value="2"></thinktime>

    <transaction name="auth_digest">
      <request> <jabber type="auth_get" ack="local"></jabber> </request>
      <request subst='true'> <jabber type="auth_set_digest" ack="local"></jabber> </request>
    </transaction>
    <thinktime value="30"></thinktime>

    <transaction name="close">
      <request> <jabber type="close" ack="no_ack"></jabber> </request>
    </transaction>
  </session>


 </sessions>
</tsung>

这是我执行 xml 时的错误日志。当我删除 TLS 部分时,一切正常。

594- fatal: {failed_validation,
                {element_seq_not_conform,{wait,session},{is,jabber}}}
Config Error, aborting ! {fatal,
                             {{failed_validation,
                                  {element_seq_not_conform,
                                      {wait,session},
                                      {is,jabber}}},
                              {file,"jabber.xml"},
                              {line,112},
                              {col,1}}}

【问题讨论】:

  • 向我们展示您的尝试。发布您的脚本,我们可以提供帮助。
  • 这个脚本到目前为止它在没有 TLS 的情况下工作。
  • 当您尝试使用 TLS 时会发生什么?有什么错误吗?
  • 既然已经提供了进一步的信息,这个问题可以重新打开。
  • 那么jabber.xml 的第 112 行是什么?

标签: xmpp load-testing ejabberd tsung


【解决方案1】:

使用以下事务值与 TLS 进行“连接”

<transaction name="connect">
  <request> <jabber type="connect" ack="local"/> </request>
  <request> <jabber type="starttls" ack="bidi_ack"/> </request>
  <request> <jabber type="connect" ack="local"/> </request>
</transaction>

另外,您必须添加选项值,如下所示,

<options>
 <option name="ssl_reuse_sessions" value="false"/>
 <option name="ssl_versions" value="'tlsv1.2'"/>
</options>

请与服务器团队交叉检查 TLS 版本。

如果您有任何疑问,请告诉我。

【讨论】:

    【解决方案2】:

    element_seq_not_conform 错误可能是 Tsung 抱怨元素序列。尝试根据tsung-1.0.dtd 验证 XML 以获得提示。

    我昨天遇到了类似的错误。验证 XML 后,出现以下错误。

    元素类型“tsung”的内容必须匹配 “(信息?,客户端,服务器,监控?,负载,选项?,会话)”。

    所有必需的子元素(&lt;clients&gt;&lt;servers&gt;&lt;load&gt;&lt;sessions&gt;)都在 &lt;tsung&gt; 元素中。

    <tsung>
      <clients>...</clients>
      <servers>...</servers>
      <monitoring>...</monitoring>
      <options>...</options>
      <load>...</load>
      <sessions>...</sessions>
    </tsung>
    

    看起来 Tsung 想要以正确的顺序排列子元素。所以我把&lt;load&gt;移到&lt;options&gt;上面。

    <tsung>
      <clients>...</clients>
      <servers>...</servers>
      <monitoring>...</monitoring>
      <load>...</load>
      <options>...</options>
      <sessions>...</sessions>
    </tsung>
    

    Tsung 不再抱怨 XML。它运行。

    【讨论】:

      【解决方案3】:

      你在没有 TSL 的情况下成功运行了吗?

      【讨论】:

      • 是的,没有 TLS 也可以运行!
      • 您能帮助我们如何在没有 TLS 的情况下进行负载测试吗?你能分享配置文件和命令来运行它吗?
      猜你喜欢
      • 2022-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 1970-01-01
      相关资源
      最近更新 更多