在测试中模拟可变网络条件

问题描述:

我正在用GWT在GAE/J上编写应用程序。在我的开发机器上,事情完美无缺 - 并且RPC始终以相同的顺序成功返回。当我部署到appengine时,一些RPC失败,并且它们通常以不同的顺序返回。在测试中模拟可变网络条件

测试环境如何纳入这种变化?有没有什么好的工具可以处理这个appengine?

NIST Net是一个成熟的网络仿真器。

从他们的网站GRUB.EXE返回:

的NIST Net网络模拟器是在IP网络性能仿真动态的通用工具。该工具旨在允许在简单的实验室环境中对网络性能敏感/自适应应用和控制协议进行可控,可重复的实验。通过在IP级别运行,NIST Net可以模拟由各种广域网络情况(例如拥塞丢失)或各种潜在子网技术(例如,xDSL和电缆调制解调器的非对称带宽情况)所施加的关键端到端性能特征)。

我认为JMockit是一个很好的工具,可以让你模拟变化的网络状况。但我不确定它是否适合您的开发环境。

可变的网络条件当然需要从现实中收集。

在WANem看看:

WANem是一个广域网络仿真器,旨在提供一个广域网/互联网的实际经验,在通过局域网环境下的应用开发/测试。通常,应用程序开发人员在局域网上开发应用程序,而其预期目的可能是客户端通过广域网甚至互联网访问相同的应用程序。因此,WANem允许应用程序开发团队设置一个透明的应用程序网关,可用于模拟广域网的特性,如网络延迟,数据包丢失,数据包损坏,断开连接,数据包重新排序,抖动等。WANem可用于模拟广域数据/语音流量的网络条件,并在广泛接受的GPL v2许可下发布。

http://wanem.sourceforge.net/

netem是主要的Linux distris的一部分。您可以以某种概率丢弃,复制,重新排序和延迟IP数据包。错误模型并不现实,但应该足以测试应用程序。 Sloppy似乎也很有用,但我没有尝试过。