Yandex坦克工具

tanktools的Python项目详细描述


https://travis-ci.org/travis-ci/travis-web.svg?branch=masterhttps://codecov.io/gh/gaainf/tanktools/branch/master/graph/badge.svghttps://img.shields.io/badge/python-2.7-blue.svghttps://img.shields.io/badge/python-3.5-blue.svghttps://img.shields.io/badge/python-3.6-blue.svghttps://img.shields.io/pypi/l/tanktools.svg

Yandex Tank在负载测试后准备带有统计信息的文件。 tanktools模块有助于分析此类文件并转换为dataframe。 您可以在手动模式下使用pandas模块来处理数据帧 或者使用内置函数

使用pcap2ammo从pcap或har文件生成yandex坦克弹药 或是纸条完全提取HTTP请求 有头部和身体。

所以你可以:

  • 计算分位数
  • 获取有关计时、延迟、状态代码的信息
  • 按时间戳、标记和其他列提取请求
  • 分组并分析特定数据,如总/部分RPS, 平均请求/响应大小
  • 计算统计指标
  • 将PCAP文件转换为弹药
  • 将har文件转换为弹药
  • 过滤并修改弹药生成请求

安装

pipinstalltanktools

示例

按时间戳选择数据帧

可以按时间和总计数分析一部分统计信息

fromtanktoolsimportphoutflags={'from_date':'2018-01-18 20:09:50.123','to_date':'2018-01-18 20:10:00.456','limit':100}data=phout.parse_phout('phout.log',flags)print("Total count: %d"%phout.size(data))
Total count: 100

获取RPS

data=phout.parse_phout('phout.log')rps=phout.get_rps(data)

选择200个OK响应并打印延迟中值

data=phout.parse_phout('phout.log')selected_http_responses=data[data.proto_code==200]print("Latency median for 200 OK: %d"%selected_http_responses.latency.median())
Latency median for 200 OK: 3539

pcap2ammo

将PCAP文件转换为yandex坦克弹药

pcap2ammo file.pcap
73
GET https://rambler.ru/ HTTP/1.1\r\n
Host: rambler.ru\r\n
Content-Length: 0\r\n\r\n

有关http请求的计数统计信息

pcap2ammo -S file.pcap

Stats:
    total: 1
    complete: 1
    incorrect: 0
    incomplete: 0

添加或删除标题

应用于包含指定标题的所有请求

pcap2ammo --add-header 'Referer: http://domain.com' --add-header 'X-Ip: 1.1.1.1' file.pcap
pcap2ammo --delete-header 'Content-Length' file.pcap
pcap2ammo --delete-header 'Connection' --add-header 'Connection: keep-alive' file.pcap

过滤TCP/IP数据包

pcap2ammo -f 'ip.src==10.10.10.10 and tcp.dport==8080' file.pcap

过滤HTTP数据包

pcap2ammo -F '"rambler.ru" in http.uri' file.pcap

您可以在筛选器中使用逻辑表达式

pcap2ammo -F '"keep-alive" in http.headers["connection"] or "Keep-alive" in http.headers["connection"]' file.pcap

http头上的字符串函数

pcap2ammo -F '"keep-alive" in http.headers["connection"].lower()' file.pcap

也可使用排除过滤器

pcap2ammo -F '"rambler.ru" != http.headers["host"]' file.pcap

har2ammo

将pcap文件转换为Yandex坦克弹药

har2ammo file.har
73
GET https://rambler.ru/ HTTP/1.1\r\n
Host: rambler.ru\r\n
Content-Length: 0\r\n\r\n

有关HTTP请求的计数统计信息

har2ammo -S file.har

Stats:
    total: 1
    complete: 1
    incorrect: 0
    incomplete: 0

打印到文件

har2ammo -o out.ammo file.har

添加或删除标题

适用于所有请求,包含指定的标题

har2ammo --add-header 'Referer: http://domain.com' --add-header 'X-Ip: 1.1.1.1' file.har
har2ammo --delete-header 'Content-Length' file.har
har2ammo --delete-header 'Connection' --add-header 'Connection: keep-alive' file.har

过滤http数据包

har2ammo -F '"rambler.ru" in http.uri' file.har

您可以在过滤器中使用逻辑表达式和python函数

har2ammo -F '"keep-alive" in http.headers["connection"] or "Keep-alive" in http.headers["connection"]' file.har
har2ammo -F '"keep-alive" not in http.headers["connection"].lower()' file.har

请参阅pcaper包描述中有关筛选器的详细信息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在jprogressbar上添加文本?   java生成30到32位之间的随机数   我想从我自己的服务器而不是java worldwind中的nasa服务器获取数据   jsp中带有外部java文件的html计数器   java如何找到运行Servlet的主机和端口   我怎么能看到数学。java中的cos方法计算平方根?   java这个docker run命令做什么?   java如何在将表单提交到servlet后将原始JSP保存在URL中?   如何在Java中访问Arraylist中的字典数据?   java JPA如果我有一个实体被用作复合键,那么级联是否也构成复合键的一部分?   连接Java:文件读取/添加到文件程序时未按预期工作(逻辑错误)   java从Android向PLC发送布尔值   java Get build。gradle文件作为一个。类文件   Youtube API V3 Java无需调用浏览器即可上传视频   java如何在Unittest中测试StackOverflower错误   实现方法中的java异常处理   java这个::instanceMethod在java8中用作方法参数有什么用途   java偶尔会获得javax。邮政使用javamail阅读gmail电子邮件时的FolderClosedException