gpt4 book ai didi

Java Commons-httpclient : Testing timeout values

转载 作者:行者123 更新时间:2023-11-30 05:41:56 28 4
gpt4 key购买 nike

摘要:开发人员如何集成测试http请求超时?

背景故事:我的团队遇到了与异常持久的 HTTP Web 请求相关的问题。我们使用 Apache 的 commons-httpclient 版本 3。代码看起来与此类似:

PostMethod post = new PostMethod(endpoint);
post.getParams().setSoTimeout(someInt);
httpClient.executeMethod(post);

完成此请求的时间通常是可以接受的(2 秒左右),但偶尔,我们会看到 50-60 秒的请求,尽管我们将 SO 超时设置为 4 秒。这促使我做了一些研究,发现大多数人都设置连接超时 ANNNNND SO 超时。看来 SO 超时应该设置得较低(因为它们只是对传输中的字节之间的距离进行计时),并且连接超时是我们最初计划使用的(即请求和返回的第一个字节之间的初始延迟)。这是我们抓取并计划使用的代码:

httpClient.getHttpConnectionManager().getParams()
.setConnectionTimeout(someInt);

httpClient.getHttpConnectionManager().getParams()
.setSoTimeout(someInt);

这里的主要痛苦是我们无法集成测试此更改。更准确地说,我们对如何集成测试来自套接字连接到外部服务器的延迟感到困惑。在深入研究了 commons-httpclient 后,我看到了我们必须重现的 protected 类和私有(private)类(因为它们不可扩展且无法从类外部使用)、模拟并将这些类串在一起以最终得到结果java 中的套接字类(它依赖于 java native 方法 - 我们还需要通过模拟来重现和注入(inject) - 这是我在该级别上不经常看到的)。

我联系 Stack Overflow 的原因是为了了解其他人如何测试这个/不测试这个。我想不惜一切代价避免在性能环境中测试此功能。我的另一个想法是建立一个模拟服务器,以可编程的延迟时间响应 httpclient。我还没有看到这样的例子。

最佳答案

首先,不存在诸如单元测试 http 请求之类的东西 - 那将是集成测试。

其次,可以使用JMeter等工具发送http请求,测试在一定时间内是否收到响应as shown here in JMeter

关于Java Commons-httpclient : Testing timeout values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55481272/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com