精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-06-23
最后修改:2009-12-21
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 通信了。
难道是 rubyscript2exe 生成的 Native image 中 Load library 方式与 Ruby 不同?仅仅是 Socket?
另外,以上的问题是在 Windows 2003 上发现的,没有在 Linux 上验证,不知道是否也是这样。
// 2009.03.07 13:30 添加 ////
作者:lzy.je
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1882 次