-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhints.lua
More file actions
128 lines (109 loc) · 4.31 KB
/
Copy pathhints.lua
File metadata and controls
128 lines (109 loc) · 4.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
---@meta
---wrk 全局对象
---@class wrk
---@field scheme string URL scheme (http/https)
---@field host string 目标主机名
---@field port string|nil 目标端口
---@field method string HTTP 方法 (GET/POST/PUT/DELETE 等)
---@field path string 请求路径
---@field headers table<string, string> 请求头表
---@field body string|nil 请求体内容
---@field thread wrk.thread 当前线程对象
---@field addrs wrk.addr[] 解析后的地址列表
---@field request fun(): string 请求生成函数(可被用户覆盖)
---@field lookup fun(host: string, service: string): wrk.addr[] DNS 查询函数
---@field connect fun(addr: wrk.addr): boolean 测试连接函数
---@field format fun(method?: string, path?: string, headers?: table<string, string>, body?: string): string 格式化 HTTP 请求字符串
---@field resolve fun(host: string, service: string) 解析主机名并测试连接
---@field setup fun(thread: wrk.thread) 设置线程(内部调用)
---@field init fun(args: string[]) 初始化函数(内部调用)
wrk = {}
---地址对象
---@class wrk.addr
---@field ai_family integer 地址族 (AF_INET/AF_INET6)
---@field ai_socktype integer Socket 类型 (SOCK_STREAM)
---@field ai_protocol integer 协议
---@field ai_addr userdata 地址数据
---@field ai_addrlen integer 地址长度
local addr = {}
---转换为字符串 (host:port 格式)
---@return string
function addr:__tostring() end
---统计对象
---@class wrk.stats
---@field min number 最小值 (微秒)
---@field max number 最大值 (微秒)
---@field mean number 平均值 (微秒)
---@field stdev number 标准差 (微秒)
local stats = {}
---获取指定分位数的值
---@param percentile number 分位数 (0.0-100.0)
---@return number 该分位数的延迟值 (微秒)
function stats:percentile(percentile) end
---获取指定索引的值和计数
---@param index integer 索引 (从1开始)
---@return number value 该索引的延迟值 (微秒)
---@return number count 该值出现的次数
function stats:__call(index) end
---获取统计数据点数量
---@return integer
function stats:__len() end
---线程对象
---@class wrk.thread
---@field addr wrk.addr 线程使用的地址
local thread = {}
---从线程获取全局变量值
---只能传递 boolean, nil, number, string 或这些类型的表
---@param key string 变量名
---@return boolean|nil|number|string
function thread:get(key) end
---设置线程的全局变量
---只能传递 boolean, nil, number, string 或这些类型的表
---@param key string 变量名
---@param value boolean|nil|number|string 变量值
function thread:set(key, value) end
---停止线程(只能在线程运行时调用)
function thread:stop() end
---初始化回调 (在每个线程中调用一次)
---在 setup() 之后、开始发送请求之前调用
---@param args string[] 命令行参数(通过 -- 分隔传递)
function init(args) end
---延迟回调 (可选)
---返回下次请求的延迟时间
---@return integer 延迟时间 (毫秒)
function delay() end
---请求生成回调 (可选)
---返回 HTTP 请求字符串
---如果未定义此函数,wrk 会使用 wrk.request() 生成静态请求
---@return string HTTP 请求字符串
function request() end
---响应处理回调 (可选)
---处理每个响应
---@param status integer HTTP 状态码
---@param headers table<string, string> 响应头表
---@param body string 响应体
function response(status, headers, body) end
---设置回调 (可选)
---在主线程中为每个工作线程调用
---在 IP 地址解析后、线程启动前调用
---@param t wrk.thread 线程对象
function setup(t) end
---汇总信息对象
---@class wrk.summary
---@field duration integer 测试持续时间 (微秒)
---@field requests integer 总完成请求数
---@field bytes integer 总接收字节数
---@field errors wrk.errors 错误统计
---错误统计对象
---@class wrk.errors
---@field connect integer Socket 连接错误数
---@field read integer Socket 读取错误数
---@field write integer Socket 写入错误数
---@field status integer HTTP 状态码 > 399 的响应数
---@field timeout integer 请求超时数
---完成回调 (可选)
---测试结束时在主线程中调用
---@param summary wrk.summary 汇总信息
---@param latency wrk.stats 延迟统计
---@param requests wrk.stats 每秒请求数统计
function done(summary, latency, requests) end