Java 如何故意拒绝连接?

Java 如何故意拒绝连接?,java,jetty,functional-testing,parallel-testing,Java,Jetty,Functional Testing,Parallel Testing,我有一些功能测试,测试一个系统,该系统与一些内部模拟HTTP服务器建立HTTP连接。通过模拟,我的意思是它们是真正的服务器,只是由我自己实现来模拟实际的第三方服务器。他们使用的是java,使用的是jetty 到目前为止,为了测试这些HTTP服务器何时停机,我一直在停止模拟服务器,然后再开始测试,并启动它们进行备份。这很好,但是现在它阻碍了测试的并行运行 模拟HTTP服务器根据请求进行不同的响应或不响应 我的问题是,有没有办法让模拟HTTP服务器拒绝某些连接,例如基于请求的连接 我想这是Jetty

我有一些功能测试,测试一个系统,该系统与一些内部模拟HTTP服务器建立HTTP连接。通过模拟,我的意思是它们是真正的服务器,只是由我自己实现来模拟实际的第三方服务器。他们使用的是java,使用的是jetty

到目前为止,为了测试这些HTTP服务器何时停机,我一直在停止模拟服务器,然后再开始测试,并启动它们进行备份。这很好,但是现在它阻碍了测试的并行运行

模拟HTTP服务器根据请求进行不同的响应或不响应

我的问题是,有没有办法让模拟HTTP服务器拒绝某些连接,例如基于请求的连接


我想这是Jetty特有的,但是如果需要的话,我很乐意使用另一个库。

您不能基于来自已接受连接的流数据拒绝连接

真正的问题是:

  • 你为什么用嘲弄
  • 为什么只使用服务器的一个实例
每个并行测试单元启动一个真正的嵌入式服务器,在该单元完成后停止。(一个“并行测试单元”是并行测试使用的任何切片,无论是通过测试方法、测试用例、测试套件等)

使实际服务器使用动态绑定的端口(设置
ServerConnector.setPort(0)
),然后使用
server.getURI()
了解基本服务器URI(包括方案、主机、端口和默认上下文路径)


您不能拒绝来自应用程序的连接

一个简单的替代方法是让客户端使用错误的端口进行测试。如果让客户端尝试连接到端口12345,则会出现连接被拒绝错误


当操作系统网络堆栈发现没有应用程序正在侦听连接的目标端口时,会生成连接拒绝错误。但是您的模拟服务器正在侦听其端口。

因此存在多个环境。这些是针对位于env上的应用程序服务器运行的功能测试(bdd),其中所有第三方http服务器都被基于输入进行应答的“本地”http服务器所取代。功能测试实际上没有办法在应用程序服务器上启动模拟服务器。明白你的意思了吗?重新拒绝已被接受的连接是不可能的。我知道我必须做一些架构上的改变。