有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

Socket 基本概念

Socket 是一种操作系统提供的进程之间的通信机制。操作系统会提供一组封装了 TCP/IP 协议的 Socket 接口,进程便可通过这些接口来使用 Socket、收发网络数据。
在使用 Socket 接口时,一个进程的 IP 地址加上端口构成一个 Socket 地址;客户端与服务器双方进程的 Socket 地址再加上传输协议(TCP 或 UDP),就构成了 Socket 五元组,标识一次网络通信。

脚本编写

PTS API 的 socket 模块提供了支持 Socket 的相关接口,详见:Socket 概览
使用这些接口,您可以建立 Socket 实例,然后通过该实例发送或接收 TCP/UDP 数据。
基本用法:
1. 创建 Socket 实例
通过 new socket.Conn 方法,可以创建一个 Socket 实例。该方法的参数为协议名(tcpudp)、服务地址、服务端口。
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.1
Host: 127.0.0.1
User-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 package
import 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)执行时,会获取参数文件里的每行数据,作为测试数据的值,供脚本里的变量引用。具体使用方法参见:使用参数文件
请求文件:构建您的请求所需的文件,如需要上传的文件。具体使用方法参见:使用请求文件
协议文件:请求序列化所需要用到的文件。具体使用方法参见:使用协议文件