一直认为异常的测试不好处理
受淘宝的启发,linux的iptables和tc可以很好的做到这一点
利用iptables实现网络不通,TC实现流量控制,慢的情况
使用java的ssh框架封装了一下
简单记录一下:
tc 的最最基本的使用
64位机器上,先执行下面命令:
ln -s /usr/lib64/tc/ /usr/lib/tc
才可以使用netem
tc qdisc show # 显示
tc qdisc add dev eth0 root ...... # 加入
tc qdisc change dev eth0 root ...... # 修改存在的 qdisc ,记的,加入同一条后只能用 change 来修改
tc qdisc del dev eth0 root # 删除
1、模拟延迟传输
# tc qdisc add dev eth0 root netem delay 100ms
该命令将 eth0 网卡的传输设置为延迟100毫秒发送。
更真实的情况下,延迟值不会这么精确,会有一定的波动,我们可以用下面的情况来模拟出带有波动性的延迟值:
# tc qdisc add dev eth0 root netem delay 100ms 10ms
该命令将 eth0 网卡的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送。
还可以更进一步加强这种波动的随机性:
# tc qdisc add dev eth0 root netem delay 100ms 10ms 30%
该命令将 eth0 网卡的传输设置为 100ms ,同时,大约有 30% 的包会延迟 ± 10ms 发送。
2、模拟网络丢包
# tc qdisc add dev eth0 root netem loss 1%
该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包。
也可以设置丢包的成功率:
# tc qdisc add dev eth0 root netem loss 1% 30%
该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包,成功率为 30% 。
3、模拟包重复
# tc qdisc add dev eth0 root netem duplicate 1%
该命令将 eth0 网卡的传输设置为随机产生 1% 的重复数据包 。
4、模拟包损坏
# tc qdisc add dev eth0 root netem corrupt 0.2%
该命令将 eth0 网卡的传输设置为随机产生 0.2% 的损坏的数据包 。 (内核版本需在2.6.16以上)
5、模拟包乱序
# tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
该命令将 eth0 网卡的传输设置为:有 25% 的数据包(50%相关)会被立即发送,其他的延迟 10 秒。
新版本中,如下命令也会在一定程度上打乱发包的次序:
# tc qdisc add dev eth0 root netem delay 100ms 10ms
TC命令很复杂,需要深入理解理解,先记录
iptables -A INPUT -s ip -j ACCEPT --允许ip
iptables -I INPUT -s ip -j DROP --拒绝ip
iptables:
http://wiki.centos.org/HowTos/Network/IPTables
TC:
http://www.linuxfoundation.org/collaborate/workgroups/networking/netem
SSH封装就是利用java直接ssh访问linux,执行以上的命令,就不说了
分享到:
相关推荐
10. **数据库异常测试**:如数据库服务器崩溃、数据迁移或数据损坏,测试系统的错误处理和恢复机制。 11. **网络故障模拟**:中断网络连接或增加网络流量,检验系统在通信问题下的处理策略。 12. **软件冲突测试**...
software异常测试是检测系统对异常情况的处理,包括硬件或软件异常时的处理。异常测试的目的是为了验证软件的健壮性、可靠性,确保软件在正式上线后长时间的保持良好的运营状态,给最终用户以信心。 在设计异常...
异常测试是一种特殊的测试方法,它通过向系统输入不正常的数据或模拟异常操作,来检查系统是否能正确处理这些异常,避免程序崩溃或者数据丢失。在Linux环境中,这可能包括但不限于磁盘满载、网络中断、内存不足、...
OpenGL ES异常测试是确保应用程序在使用OpenGL ES时能够正确处理错误和异常情况的重要环节。 在"opengl es 初始化测试"中,我们关注的是在启动OpenGL ES环境时可能出现的问题。初始化阶段包括创建OpenGL ES上下文、...
03/Part 异常测试设计 异常测试设计是确保测试覆盖全面且有效的关键步骤。以下是进行异常测试设计时需要考虑的几个方面: 1. 分析需求:首先,测试人员需深入理解系统的需求文档,找出可能的异常输入和边界条件。...
高效的 Java 异常处理...4、异常测试:对异常处理逻辑进行测试,确保程序的健壮性。 设计一个高效的 Java 异常处理框架需要遵循基本原则,分类处理不同的异常,设计合适的异常处理逻辑,并对异常处理逻辑进行测试。
异常测试是软件质量保证的关键环节,它专注于检测系统在遇到异常情况时的处理能力,确保软件在遇到错误、异常操作或硬件故障时仍能稳定运行。异常测试的目的是提高软件的健壮性和可靠性,减少软件上线后的故障率,...
在实际编程过程中,结合模块提供的功能,开发者应当遵循良好的异常处理原则,如尽早捕获异常、避免空异常处理和充分测试异常处理逻辑,以确保在各种情况下程序都能正常运行。 总的来说,易语言异常处理辅助模块是...
在Spring Boot应用中,全局异常处理是至关重要的一个部分,它能确保系统在遇到错误时,仍然能够优雅地响应客户端,提供友好的错误信息,而不是返回默认的、未经处理的堆栈跟踪。本教程将详细介绍如何在Spring Boot中...
Java异常处理是编程中至关重要的一个环节,它帮助我们在程序执行过程中有效地管理和处理错误,确保程序的健壮性。在Java中,异常处理是通过五个关键字来实现的:`try`, `catch`, `finally`, `throw`, 和 `throws`。...
通过运行包含异常情况的测试用例,可以验证异常处理机制是否按预期工作。在实验总结中,学生应该记录测试过程,包括输入、预期输出和实际结果,以确保程序在遇到异常时能够正确地捕获和处理。 **Java异常处理的优势...
6. AssertionError:在调试阶段使用,用于测试假设条件是否成立,如果断言失败,会抛出此异常。 7. ExceptionInInitializerError:当初始化类或静态块时遇到错误,如初始化过程中抛出了未捕获的异常,会抛出此错误...
16. **编写测试用例**:对异常处理的测试同样重要,确保在预期和非预期情况下,程序都能正确处理异常。 总之,良好的Java异常处理设计能提升代码质量,降低维护成本,并确保程序在遇到异常情况时能够优雅地处理,...
单元测试中遇到异常的处理软件测试首先来看看两条关于异常处理的原则:●如果无法处理某个异常,那么就不要捕获它●如果捕获到一个异常,那么不要胡乱处理它单元测试的代码和开发的生产代码,虽然同是程序代码,但是...
7. **测试与监控**: 开发过程中,使用单元测试和集成测试来检测可能的异常路径。上线后,可以借助第三方服务如Crashlytics、Sentry等进行实时的异常监控,及时发现并处理线上问题。 通过以上步骤,我们可以构建一个...
在本文中,我们将深入探讨如何使用JUnit进行异常测试,特别关注一个名为`Calculator`类的简单示例。 首先,我们来看`Calculator`类的`divide()`方法。在该方法中,当除数为0时,会抛出一个`Exception`,以防止出现...
在编程领域,异常处理是确保...- 不要忽视异常,即使在测试环境中也要处理它们。 通过以上例子和解释,希望你对Java异常处理有了更深入的理解。在实践中,灵活运用这些知识将有助于编写出更稳定、更易于维护的代码。
### C/C++异常处理方法总汇 #### 引言 在C/C++编程中,异常处理是一项关键的技术,尤其对于构建稳定、可靠的软件系统至关重要。本文将深入探讨C/C++中的异常处理机制,包括传统的错误处理方法与现代的异常处理机制...