rubyscript2exe-0.5.3 生成 native image 的問題

IBM Performance Tester 7.0.2 無法錄製 rubyscript2exe-0.5.3 生成的 Socket Client 應用的 Socket 通信

 

    上週五作了一份 IBM Performance Tester 實踐的工具導入培訓,其中爲了演示基於 Socket API 協議的應用測試過程,用 Ruby 寫了一個 Socket Client 應用,Server 部分由於使用了一個之前用 C# 寫的 Class lib,所以使用 C# 來編寫。

 

require 'socket'

command = nil
socket = nil

puts "Expression evaluator client. Version 1.0"

while(1)
  printf "expression>"
  
  command = gets()

  break if command.eql?("bye\n")
  redo if command.eql?("\n")

  begin
  
    socket = TCPSocket::new("192.168.180.22", 99)

    socket.send(command, 0)

    puts "=>#{socket.recv(4096)}"
    
  rescue Exception => err
    puts err.message
  ensure
    if (socket)
      socket.close
      socket = nil
    end
  end
  
end

 

    由於演示使用的機器沒有安裝 Ruby runtime,所以爲了省事,使用 rubyscript2exe (0.5.3) 生成了一個 Native image 放了上去,在實踐過程中發現了問題,通過 IBM Performance Tester (7.0.2) 就是無法捕捉 Socket 通信,錄製的測試腳本都是空的。而通過 Loadrunner (9.0) 來錄製腳本卻一切正常。之後 google 到 IBM 的一個說明:“Cannot record socket traffic of Internet Explorer and other native clients ”,說是 7.0.2 和 7.0.2.1 版本 IBM Performance Tester 無法錄製動態加載 ws2_32.dll 庫的 Native 應用中的 Socket 通信。既然這樣不行,爲了驗證,將 Ruby (1.8.7) runtime安裝好,通過 IBM Performance Tester 啓動 Ruby,以參數的方式傳入 Socket client 應用的腳本,結果這樣就正常錄到了Socket 通信了。

 

 

rpt7.0.2-socket-record-option

 

    難道是 rubyscript2exe 生成的 Native image 中 Load library 方式與 Ruby 不同?僅僅是 Socket?

 

    另外,以上的問題是在 Windows 2003 上發現的,沒有在 Linux 上驗證,不知道是否也是這樣。

 

// 2009.03.07 13:30 添加 ////


作者:lzy.je
出處:http://lzy.iteye.com
本文版權歸作者所有,只允許以摘要和完整全文兩種形式轉載,不允許對文字進行裁剪。未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章