Annotate

tools/generate_format_spec.lua @ 12468:353836684009

net.connect: Fix accumulation of connection attempt references Connection attempts that failed the Happy Eyeballs race were not unreferenced and would accumulate. Tested by inspecting the 'pending_connections_map' after establishing s2s with a s2s target where the IPv6 port has a -j DROP rule causing it to time out and the IPv4 attempt wins the race. Expected is that the losing connection stays around until net.server timeouts kick in where it should be removed. The map table should tend towards being empty during idle times.
author Kim Alvefur <zash@zash.se>
date Wed, 20 Apr 2022 22:41:54 +0200
parent 12039:e0a8c5b1ab4f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local format = require"util.format".format;
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
2 local dump = require"util.serialization".new("oneline")
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local types = {
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 "nil";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 "boolean";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 "number";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 "string";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 "function";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 -- "userdata";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 "thread";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 "table";
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 };
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 local example_values = {
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 ["nil"] = { n = 1; nil };
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 ["boolean"] = { true; false };
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
16 ["number"] = { 97; -12345; 1.5; 73786976294838206464; math.huge; 2147483647 };
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
17 ["string"] = { "hello"; "foo \1\2\3 bar"; "nödåtgärd"; string.sub("nödåtgärd", 1, -4) };
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 ["function"] = { function() end };
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 -- ["userdata"] = {};
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 ["thread"] = { coroutine.create(function() end) };
12039
e0a8c5b1ab4f util.format: Ensure metatable __tostring results are also sanitized
Kim Alvefur <zash@zash.se>
parents: 12037
diff changeset
21 ["table"] = { {}, setmetatable({},{__tostring=function ()return "foo \1\2\3 bar"end}) };
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 };
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 local example_strings = setmetatable({
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 ["nil"] = { "nil" };
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 ["function"] = { "function() end" };
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
26 ["number"] = { "97"; "-12345"; "1.5"; "73786976294838206464"; "math.huge"; "2147483647" };
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 ["thread"] = { "coroutine.create(function() end)" };
12039
e0a8c5b1ab4f util.format: Ensure metatable __tostring results are also sanitized
Kim Alvefur <zash@zash.se>
parents: 12037
diff changeset
28 ["table"] = { "{ }", "setmetatable({},{__tostring=function ()return \"foo \\1\\2\\3 bar\"end})" }
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 }, { __index = function() return {} end });
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 for _, lua_type in ipairs(types) do
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 print(string.format("\t\tdescribe(\"%s\", function ()", lua_type));
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 local examples = example_values[lua_type];
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 for fmt in ("cdiouxXaAeEfgGqs"):gmatch(".") do
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 print(string.format("\t\t\tdescribe(\"to %%%s\", function ()", fmt));
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 print("\t\t\t\tit(\"works\", function ()");
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
36 for i = 1, examples.n or #examples do
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 local example = examples[i];
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 if not tostring(example):match("%w+: 0[xX]%x+") then
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
39 print(string.format("\t\t\t\t\tassert.equal(%q, format(%q, %s))", format("%" .. fmt, example), "%" .. fmt,
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
40 example_strings[lua_type][i] or dump(example)));
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 else
12037
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
42 print(string.format("\t\t\t\t\tassert.matches(\"[%s: 0[xX]%%x+]\", format(%q, %s))", lua_type, "%" .. fmt,
82f6a0b0a425 tools/generate_format_spec: Apply lua-format to silence luacheck
Kim Alvefur <zash@zash.se>
parents: 12034
diff changeset
43 example_strings[lua_type][i] or dump(example)));
12034
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 end
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 end
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 print("\t\t\t\tend);");
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 print("\t\t\tend);");
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48 print()
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
49 end
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 print("\t\tend);");
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
51 print()
ee94ac51b2dd util.format: ALL THE TESTS!!!
Kim Alvefur <zash@zash.se>
parents:
diff changeset
52 end