Java:使用Toxiproxy模拟各种连接问题

用Toxiproxy和Java的HttpURLConnection模拟各种连接问题,以查看产生了什么样的错误:连接超时vs.读取超时vs.连接被拒绝…。

结果:

系统:openjdk 11.0.1 2018-10-16

  1. (.setConnectTimeout 1) => java.net.SocketTimeoutException:连接超时
  2. (.setReadTimeout 1) => javax.net.ssl.SSLProtocolException: Read timed out在HTTPS上javax.net.ssl.SSLProtocolException: Read timed outjava.net.SocketTimeoutException: Read timed out在HTTP上java.net.SocketTimeoutException: Read timed out (或Toxiproxy,延迟或超时为5s)
  3. 在端口上没有监听=> java.net.ConnectException:连接被拒绝
  4. 未配置上游的Toxiproxy(即,端口已打开,但连接没有问题)=> javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake HTTPS上javax.net.ssl.SSLHandshakeException: Remote host terminated the handshakejava.net.SocketTimeoutException: Read timed out HTTP java.net.SocketTimeoutException: Read timed out
  5. limit_data_downstream => java.io.IOException:过早的EOF

(我还无法模拟(但)是“连接中断/断开”。)

设置

先决条件

要在/etc/hosts添加:

127.0.0.1       proxied.google.com

毒物替代品设置

开始使用抗氧化剂:

docker pull shopify/toxiproxy
# BEFORE we `run` it: case #3
docker run --rm -p 5555:5555 -p 6666:6666 -p 8474:8474 --name toxiproxy -it shopify/toxiproxy

配置它(我们可以只发布到:8474但是使用CLI更容易):

$ docker exec -it toxiproxy /bin/sh
/ # cd /go/bin/
# ./toxiproxy-cli create google -l 0.0.0.0:6666 -u www.google.com:443 # BEFORE this is run: case #4
# ./toxiproxy-cli toxic add google -t latency -a latency=5000 # case #2
Added downstream latency toxic 'latency_downstream' on proxy 'google
# ./toxiproxy-cli toxic remove google -n latency_downstream
Removed toxic 'latency_downstream' on proxy 'google'# ./toxiproxy-cli toxic add google -t  timeout -a timeout=2000 # case #2
Added downstream timeout toxic 'timeout_downstream' on proxy 'google'
# ./toxiproxy-cli toxic remove google -n timeout_downstream
Removed toxic 'timeout_downstream' on proxy 'google'# ./toxiproxy-cli toxic add google -t limit_data -a bytes=5000 # case #5
Added downstream limit_data toxic 'limit_data_downstream' on proxy 'google'

测试代码

(import '[java.net URL HttpURLConnection])
(->(doto ^HttpURLConnection (.openConnection (URL. "https://proxied.google.com:6666/"));; BEWARE: JVM *must* be started with `-Dsun.net.http.allowRestrictedHeaders=true` to allow setting the Host:(.setRequestProperty "Host" "www.google.com")(.setConnectTimeout 1000)(.setReadTimeout 1000))(.getInputStream)slurp)

巴克特

阅读我的toxiproxy模拟网络超时以了解为什么我们需要打扰/etc/hostsHost标头。

翻译自: https://www.javacodegeeks.com/2018/11/java-simulating-connection-problems.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯基础模块4_1:独立按键

一、模块题目 二、原理简述 1、独立按键的处理思路(转载) 一般情况下,独立按键有两个引脚,其中一个通过上拉电阻接到单片机的I/O端口,另外一端接地。也就是说,平时按键没有动作的时候,输出的是高电平,如果有按下动作发生,则输出的是低电平。那么,我们在程序设计的时…

【渝粤教育】广东开放大学 行政管理 形成性考核 (35)

选择题 题目: ( )是从行政过程的角度来看待行政职能的 选择一项: 答案:看左侧 题目: 经过1993年的机构改革,国务院机构减少到59个,其中部委40个,直属机构13个,办事机构5个和1个办公…

【渝粤教育】广东开放大学 Photoshop 图像处理 形成性考核 (24)

选择题 题目: 使用变换命令中的缩放命令时,按住哪个键可以保证等比例缩放?( ) 答案:看左侧 题目: 将前景色和背景色恢复为默认颜色的快捷键是()? 答案&#…

【渝粤教育】广东开放大学 个人与团队管理 形成性考核 (57)

选择题 题目:按照KOLB学习周期,一个完整的学习过程包含四个阶段,不属于这四个阶段的是()。 答案:看左侧 题目: 小米的新工作需要录入大量文件,可他对打字不是很在行。他给自己制定了…

junit动态忽略测试_有条件忽略测试的JUnit规则

junit动态忽略测试我一直认为使用Ignore停用测试是一个坏主意。 例外,这可能是一种将间歇性失败的测试放入隔离区以供以后处理的方法(如Martin Fowler 在此处所述 )。 随着越来越多的测试不断被忽略和遗忘,这带来了测试套件衰减的…

【渝粤教育】广东开放大学 企业标准化 形成性考核 (49)

选择题 题目: 对接受评价部门/单位标准化子体系的建立和实施不能采用随机抽查样本的方式进行评价。 选择一项: 答案:看左侧 题目: 现场确认一般是采用随机抽查,填写记录表和评分表,并通过确认人员的______…

蓝桥杯基础模块4_3:矩阵按键

一、模块题目 二、原理简述 1、矩阵键盘的扫描思想(转载+删减) 与独立按键不同的是,按键的两个引脚都分别连接的单片机的I/O端口,一个作为行信号,另外一个作为列信号。下以4X4的矩阵键盘为例,探讨其工作方式和扫描思路。 要识别出黄色按键的按下状态,逐行扫描,然后读…

【渝粤教育】广东开放大学 刑法 形成性考核 (42)

选择题 题目:以下哪个不是我国刑法的法定原则? 题目:以下哪个管辖权是我国管辖权的基础? 题目:以下哪种情况不适用属地管辖? 题目:犯罪的最本质特征在于它是( )。 题目&a…

休息一下,或者:如何使用Java 12制作出色的拼图游戏

Java 12以实验形式提供了switch表达式以及switch和break语句的新形式。 对于可能很少用到的构造,有大量新语法和语义,当然,对于那些困惑者和认证考试问题的作者来说,这是一件了不起的礼物。 如果您喜欢Java难题,并且可…

蓝桥杯基础模块5:外部中断

一、模块题目 二、原理简述 (转载,删改) 1、什么是中断 你正在追电视剧《神雕侠侣》,正看得入迷的时候,电话响了,你暂停电视剧,去接电话,在接电话的过程中,门铃又响了,你暂时放下电话,去把门打开。如果追电视剧是在执行主程序,那么电话就是中断源,电话铃响了就是中…

【渝粤教育】广东开放大学 商务谈判 形成性考核 (34)

选择题 题目: 对明智的谈判者而言,应当在保持()的基础上,追求自己利益的最大化,在使对方通过谈判获得利益时,自己也获得相应的利益。 选择一项: 答案:看左侧 题目&#…

【渝粤教育】广东开放大学 数据结构 形成性考核 (30)

选择题 题目:链接存储的存储结构所占存储空间( ) 题目:线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。 题目:顺序表中第一个元素的存储地址是100,每个元…

蓝桥杯基础模块06_1:定时器计数器

一、模块题目 二、原理简述 (转载,删改) 1、定时器、计数器定义 在没有钟表的时候,定时的方式通过有一注香的时间,或者一桶水的时间。前者烧香不断减少是减法,后者滴水不断增加是加法。 定时/计数器&#…

structure101_使用structure101分析软件包的依赖关系

structure101稳定应用程序的一个关键是结构良好的代码库。 我们知道我们应该建立尽可能多的黑匣子,因为一旦完成一个黑匣子,我们就不必再考虑其内部了。 您只需要使用您或其他团队成员通过明确定义的界面编写的代码即可。 这使您可以专注于要添加的下一个…

【渝粤教育】广东开放大学 机械制造基础 形成性考核 (55)

选择题 题目:车削加工中大部分切削热传给了( ) 题目:下列诸因素中,哪个是造成45钢淬火硬度偏低的主要原因( ) 题目:切削用量中对切削力影响最大的因素是背吃刀量。 题目:焊接接头中的…

【渝粤教育】广东开放大学 电子商务(本) 形成性考核 (21)

选择题 题目:( )的域名含义是政府组织。 答案:看左侧 题目:( )是指包含巨量资料的信息资产? 答案:看左侧 题目:www.sina.com.cn的二级域名是( &…

蓝桥杯基础模块6_2:定时器进阶

一、模块题目 二、原理图 1、数码管

JDK 9 / JEP 280:字符串串联永远不会相同

JEP 280 (“ Indify String Concatenation”)是与JDK 9结合实现的,根据其“摘要”部分,“更改了javac生成的静态String -concatenation字节码序列,以使用对JDK库函数的invokedynamic调用。 ” 通过查看在JDK 9之前和JD…

【渝粤教育】广东开放大学 综合英语1 形成性考核 (36)

选择题 题目: I love traveling in the countryside, but I don’t like losing my way. I went on a trip recently, but my trip took me longer than I expected. “I’m going to Woodford Green,” I said to the conductor as I got on the bus, “b…