云压测 TCP/UDP 协议压测

Socket 是一种操作系统提供的进程之间的通信机制。操作系统会提供一组封装了 TCP/IP 协议的 Socket 接口,进程便可通过这些接口来使用 Socket、收发网络数据。

相关产品
云压测 产品页,含版本规格、价格与购买入口。

一、Socket 基本概念

在使用 Socket 接口时,一个进程的 IP 地址加上端口构成一个 Socket 地址;客户端与服务器双方进程的 Socket 地址再加上传输协议(TCP 或 UDP),就构成了 Socket 五元组,标识一次网络通信。

二、脚本编写

·PTS API 的 socket 模块提供了支持 Socket 的相关接口,详见 Socket 概览。

·使用这些接口,你可以建立 Socket 实例,然后通过该实例发送或接收 TCP/UDP 数据。

基本用法:

1. 创建 Socket 实例

通过 new socket.Conn 方法,可以创建一个 Socket 实例。该方法的参数为协议名(tcp 或 udp)、服务地址、服务端口。

2. 使用 Socket 实例

·发送数据:通过实例的 send 方法发送数据。参数为二进制数据,返回值为发送的字节数。

·接收数据:通过实例的recv 方法接收数据。参数为接收的字节数,返回值为接收的二进制数据。

·关闭连接:通过实例的 close 方法关闭连接。

使用 TCP 协议的脚本示例:

// tcp connect to send package import socket from "pts/socket";import util from 'pts/util';import {sleep} from 'pts';export default function () { const tcp_socket = new socket.Conn('tcp', '127.0.0.1', 80); const send_data = `GET /get HTTP/1.1Host: 127.0.0.1User-Agent: pts-engine\\r\\n`; tcp_socket.send(util.toArrayBuffer(send_data)); const bytes_read = tcp_socket.recv(512); tcp_socket.close(); console.log(bytes_read); sleep(1);}

使用 UDP 协议的脚本示例:

// udp connect to send packageimport socket from "pts/socket";import util from 'pts/util';export default function main() { const udp_socket = new socket.Conn('udp', '127.0.0.1', 20001); const send_data = `test data`; udp_socket.send(util.toArrayBuffer(send_data)); const bytes_read = udp_socket.recv(1024); udp_socket.close(); console.log(bytes_read);}

三、脚本验证

若要验证脚本执行结果,可在正式压测前,先使用 PTS 调试功能,快速验证结果是否符合预期。更多详情可参见 调试场景。

四、文件依赖

在压测场景里,你可上传以下几种类型的文件,提供压测执行时的状态数据:

·参数文件:以 csv 文件的形式,动态提供测试数据。也即,场景被每个并发用户(VU)执行时,会获取参数文件里的每行数据,作为测试数据的值,供脚本里的变量引用。具体使用方法参见:使用参数文件。

·请求文件:构建你的请求所需的文件,如需要上传的文件。具体使用方法参见:使用请求文件。

·协议文件:请求序列化所需要用到的文件。具体使用方法参见:使用协议文件。

赞 (0)
上一篇 4天前
下一篇 4天前