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
本文版权归作者所有,只允许以摘要和完整全文两种形式转载,不允许对文字进行裁剪。未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页