diff options
| author | Diego Nehab <diego.nehab@gmail.com> | 2015-08-25 15:43:48 -0300 |
|---|---|---|
| committer | Diego Nehab <diego.nehab@gmail.com> | 2015-08-25 15:43:48 -0300 |
| commit | 4110e4125dace9df3a744067066e5dee62670561 (patch) | |
| tree | 10927b57ea5c543054d01bd2bd538a4f97128678 /test | |
| parent | 46d7e75f3e71d75bf07ae83d7df4aa276e484473 (diff) | |
| parent | 77bba625d7aaa0f9e118879163687fcbcb0b5a7b (diff) | |
| download | luasocket-4110e4125dace9df3a744067066e5dee62670561.tar.gz luasocket-4110e4125dace9df3a744067066e5dee62670561.tar.bz2 luasocket-4110e4125dace9df3a744067066e5dee62670561.zip | |
Merge branch 'agnostic'
Seems safe to move to master.
Diffstat (limited to 'test')
| -rw-r--r-- | test/testclnt.lua | 119 | ||||
| -rw-r--r-- | test/testsrvr.lua | 2 | ||||
| -rw-r--r-- | test/udpconnectclnt.lua | 2 |
3 files changed, 63 insertions, 60 deletions
diff --git a/test/testclnt.lua b/test/testclnt.lua index 0014781..ee1201f 100644 --- a/test/testclnt.lua +++ b/test/testclnt.lua | |||
| @@ -8,7 +8,7 @@ function printf(...) | |||
| 8 | end | 8 | end |
| 9 | 9 | ||
| 10 | function pass(...) | 10 | function pass(...) |
| 11 | printf(...) | 11 | printf(...) |
| 12 | io.stderr:write("\n") | 12 | io.stderr:write("\n") |
| 13 | end | 13 | end |
| 14 | 14 | ||
| @@ -45,30 +45,30 @@ function check_timeout(tm, sl, elapsed, err, opp, mode, alldone) | |||
| 45 | if not err then warn("must be buffered") | 45 | if not err then warn("must be buffered") |
| 46 | elseif err == "timeout" then pass("proper timeout") | 46 | elseif err == "timeout" then pass("proper timeout") |
| 47 | else fail("unexpected error '%s'", err) end | 47 | else fail("unexpected error '%s'", err) end |
| 48 | else | 48 | else |
| 49 | if err ~= "timeout" then fail("should have timed out") | 49 | if err ~= "timeout" then fail("should have timed out") |
| 50 | else pass("proper timeout") end | 50 | else pass("proper timeout") end |
| 51 | end | 51 | end |
| 52 | else | 52 | else |
| 53 | if mode == "total" then | 53 | if mode == "total" then |
| 54 | if elapsed > tm then | 54 | if elapsed > tm then |
| 55 | if err ~= "timeout" then fail("should have timed out") | 55 | if err ~= "timeout" then fail("should have timed out") |
| 56 | else pass("proper timeout") end | 56 | else pass("proper timeout") end |
| 57 | elseif elapsed < tm then | 57 | elseif elapsed < tm then |
| 58 | if err then fail(err) | 58 | if err then fail(err) |
| 59 | else pass("ok") end | 59 | else pass("ok") end |
| 60 | else | 60 | else |
| 61 | if alldone then | 61 | if alldone then |
| 62 | if err then fail("unexpected error '%s'", err) | 62 | if err then fail("unexpected error '%s'", err) |
| 63 | else pass("ok") end | 63 | else pass("ok") end |
| 64 | else | 64 | else |
| 65 | if err ~= "timeout" then fail(err) | 65 | if err ~= "timeout" then fail(err) |
| 66 | else pass("proper timeoutk") end | 66 | else pass("proper timeoutk") end |
| 67 | end | 67 | end |
| 68 | end | 68 | end |
| 69 | else | 69 | else |
| 70 | if err then fail(err) | 70 | if err then fail(err) |
| 71 | else pass("ok") end | 71 | else pass("ok") end |
| 72 | end | 72 | end |
| 73 | end | 73 | end |
| 74 | end | 74 | end |
| @@ -104,8 +104,8 @@ control:setoption("tcp-nodelay", true) | |||
| 104 | ------------------------------------------------------------------------ | 104 | ------------------------------------------------------------------------ |
| 105 | function test_methods(sock, methods) | 105 | function test_methods(sock, methods) |
| 106 | for _, v in pairs(methods) do | 106 | for _, v in pairs(methods) do |
| 107 | if type(sock[v]) ~= "function" then | 107 | if type(sock[v]) ~= "function" then |
| 108 | fail(sock.class .. " method '" .. v .. "' not registered") | 108 | fail(sock.class .. " method '" .. v .. "' not registered") |
| 109 | end | 109 | end |
| 110 | end | 110 | end |
| 111 | pass(sock.class .. " methods are ok") | 111 | pass(sock.class .. " methods are ok") |
| @@ -121,7 +121,7 @@ function test_mixed(len) | |||
| 121 | local p3 = "raw " .. string.rep("z", inter) .. "bytes" | 121 | local p3 = "raw " .. string.rep("z", inter) .. "bytes" |
| 122 | local p4 = "end" .. string.rep("w", inter) .. "bytes" | 122 | local p4 = "end" .. string.rep("w", inter) .. "bytes" |
| 123 | local bp1, bp2, bp3, bp4 | 123 | local bp1, bp2, bp3, bp4 |
| 124 | remote (string.format("str = data:receive(%d)", | 124 | remote (string.format("str = data:receive(%d)", |
| 125 | string.len(p1)+string.len(p2)+string.len(p3)+string.len(p4))) | 125 | string.len(p1)+string.len(p2)+string.len(p3)+string.len(p4))) |
| 126 | sent, err = data:send(p1..p2..p3..p4) | 126 | sent, err = data:send(p1..p2..p3..p4) |
| 127 | if err then fail(err) end | 127 | if err then fail(err) end |
| @@ -166,7 +166,7 @@ function test_rawline(len) | |||
| 166 | io.stderr:write("length " .. len .. ": ") | 166 | io.stderr:write("length " .. len .. ": ") |
| 167 | local str, str10, back, err | 167 | local str, str10, back, err |
| 168 | str = string.rep(string.char(47), math.mod(len, 10)) | 168 | str = string.rep(string.char(47), math.mod(len, 10)) |
| 169 | str10 = string.rep(string.char(120,21,77,4,5,0,7,36,44,100), | 169 | str10 = string.rep(string.char(120,21,77,4,5,0,7,36,44,100), |
| 170 | math.floor(len/10)) | 170 | math.floor(len/10)) |
| 171 | str = str .. str10 | 171 | str = str .. str10 |
| 172 | remote "str = data:receive()" | 172 | remote "str = data:receive()" |
| @@ -216,7 +216,7 @@ function test_totaltimeoutreceive(len, tm, sl) | |||
| 216 | data:settimeout(tm, "total") | 216 | data:settimeout(tm, "total") |
| 217 | local t = socket.gettime() | 217 | local t = socket.gettime() |
| 218 | str, err, partial, elapsed = data:receive(2*len) | 218 | str, err, partial, elapsed = data:receive(2*len) |
| 219 | check_timeout(tm, sl, elapsed, err, "receive", "total", | 219 | check_timeout(tm, sl, elapsed, err, "receive", "total", |
| 220 | string.len(str or partial) == 2*len) | 220 | string.len(str or partial) == 2*len) |
| 221 | end | 221 | end |
| 222 | 222 | ||
| @@ -236,7 +236,7 @@ function test_totaltimeoutsend(len, tm, sl) | |||
| 236 | data:settimeout(tm, "total") | 236 | data:settimeout(tm, "total") |
| 237 | str = string.rep("a", 2*len) | 237 | str = string.rep("a", 2*len) |
| 238 | total, err, partial, elapsed = data:send(str) | 238 | total, err, partial, elapsed = data:send(str) |
| 239 | check_timeout(tm, sl, elapsed, err, "send", "total", | 239 | check_timeout(tm, sl, elapsed, err, "send", "total", |
| 240 | total == 2*len) | 240 | total == 2*len) |
| 241 | end | 241 | end |
| 242 | 242 | ||
| @@ -256,7 +256,7 @@ function test_blockingtimeoutreceive(len, tm, sl) | |||
| 256 | ]], 2*tm, len, sl, sl)) | 256 | ]], 2*tm, len, sl, sl)) |
| 257 | data:settimeout(tm) | 257 | data:settimeout(tm) |
| 258 | str, err, partial, elapsed = data:receive(2*len) | 258 | str, err, partial, elapsed = data:receive(2*len) |
| 259 | check_timeout(tm, sl, elapsed, err, "receive", "blocking", | 259 | check_timeout(tm, sl, elapsed, err, "receive", "blocking", |
| 260 | string.len(str or partial) == 2*len) | 260 | string.len(str or partial) == 2*len) |
| 261 | end | 261 | end |
| 262 | 262 | ||
| @@ -290,10 +290,10 @@ function empty_connect() | |||
| 290 | data = server:accept() | 290 | data = server:accept() |
| 291 | ]] | 291 | ]] |
| 292 | data, err = socket.connect("", port) | 292 | data, err = socket.connect("", port) |
| 293 | if not data then | 293 | if not data then |
| 294 | pass("ok") | 294 | pass("ok") |
| 295 | data = socket.connect(host, port) | 295 | data = socket.connect(host, port) |
| 296 | else | 296 | else |
| 297 | pass("gethostbyname returns localhost on empty string...") | 297 | pass("gethostbyname returns localhost on empty string...") |
| 298 | end | 298 | end |
| 299 | end | 299 | end |
| @@ -304,15 +304,20 @@ function isclosed(c) | |||
| 304 | end | 304 | end |
| 305 | 305 | ||
| 306 | function active_close() | 306 | function active_close() |
| 307 | reconnect() | 307 | local tcp = socket.tcp4() |
| 308 | if isclosed(data) then fail("should not be closed") end | 308 | if isclosed(tcp) then fail("should not be closed") end |
| 309 | data:close() | 309 | tcp:close() |
| 310 | if not isclosed(data) then fail("should be closed") end | 310 | if not isclosed(tcp) then fail("should be closed") end |
| 311 | data = nil | 311 | tcp = socket.tcp() |
| 312 | local udp = socket.udp() | 312 | if not isclosed(tcp) then fail("should be closed") end |
| 313 | tcp = nil | ||
| 314 | local udp = socket.udp4() | ||
| 313 | if isclosed(udp) then fail("should not be closed") end | 315 | if isclosed(udp) then fail("should not be closed") end |
| 314 | udp:close() | 316 | udp:close() |
| 315 | if not isclosed(udp) then fail("should be closed") end | 317 | if not isclosed(udp) then fail("should be closed") end |
| 318 | udp = socket.udp() | ||
| 319 | if not isclosed(udp) then fail("should be closed") end | ||
| 320 | udp = nil | ||
| 316 | pass("ok") | 321 | pass("ok") |
| 317 | end | 322 | end |
| 318 | 323 | ||
| @@ -327,7 +332,7 @@ function test_closed() | |||
| 327 | data:close() | 332 | data:close() |
| 328 | data = nil | 333 | data = nil |
| 329 | ]], str)) | 334 | ]], str)) |
| 330 | -- try to get a line | 335 | -- try to get a line |
| 331 | back, err, partial = data:receive() | 336 | back, err, partial = data:receive() |
| 332 | if not err then fail("should have gotten 'closed'.") | 337 | if not err then fail("should have gotten 'closed'.") |
| 333 | elseif err ~= "closed" then fail("got '"..err.."' instead of 'closed'.") | 338 | elseif err ~= "closed" then fail("got '"..err.."' instead of 'closed'.") |
| @@ -340,25 +345,25 @@ function test_closed() | |||
| 340 | data = nil | 345 | data = nil |
| 341 | ]] | 346 | ]] |
| 342 | total, err, partial = data:send(string.rep("ugauga", 100000)) | 347 | total, err, partial = data:send(string.rep("ugauga", 100000)) |
| 343 | if not err then | 348 | if not err then |
| 344 | pass("failed: output buffer is at least %d bytes long!", total) | 349 | pass("failed: output buffer is at least %d bytes long!", total) |
| 345 | elseif err ~= "closed" then | 350 | elseif err ~= "closed" then |
| 346 | fail("got '"..err.."' instead of 'closed'.") | 351 | fail("got '"..err.."' instead of 'closed'.") |
| 347 | else | 352 | else |
| 348 | pass("graceful 'closed' received after %d bytes were sent", partial) | 353 | pass("graceful 'closed' received after %d bytes were sent", partial) |
| 349 | end | 354 | end |
| 350 | end | 355 | end |
| 351 | 356 | ||
| 352 | ------------------------------------------------------------------------ | 357 | ------------------------------------------------------------------------ |
| 353 | function test_selectbugs() | 358 | function test_selectbugs() |
| 354 | local r, s, e = socket.select(nil, nil, 0.1) | 359 | local r, s, e = socket.select(nil, nil, 0.1) |
| 355 | assert(type(r) == "table" and type(s) == "table" and | 360 | assert(type(r) == "table" and type(s) == "table" and |
| 356 | (e == "timeout" or e == "error")) | 361 | (e == "timeout" or e == "error")) |
| 357 | pass("both nil: ok") | 362 | pass("both nil: ok") |
| 358 | local udp = socket.udp() | 363 | local udp = socket.udp() |
| 359 | udp:close() | 364 | udp:close() |
| 360 | r, s, e = socket.select({ udp }, { udp }, 0.1) | 365 | r, s, e = socket.select({ udp }, { udp }, 0.1) |
| 361 | assert(type(r) == "table" and type(s) == "table" and | 366 | assert(type(r) == "table" and type(s) == "table" and |
| 362 | (e == "timeout" or e == "error")) | 367 | (e == "timeout" or e == "error")) |
| 363 | pass("closed sockets: ok") | 368 | pass("closed sockets: ok") |
| 364 | e = pcall(socket.select, "wrong", 1, 0.1) | 369 | e = pcall(socket.select, "wrong", 1, 0.1) |
| @@ -368,7 +373,7 @@ function test_selectbugs() | |||
| 368 | pass("invalid input: ok") | 373 | pass("invalid input: ok") |
| 369 | local toomany = {} | 374 | local toomany = {} |
| 370 | for i = 1, socket._SETSIZE+1 do | 375 | for i = 1, socket._SETSIZE+1 do |
| 371 | toomany[#toomany+1] = socket.udp() | 376 | toomany[#toomany+1] = socket.udp4() |
| 372 | end | 377 | end |
| 373 | if #toomany > socket._SETSIZE then | 378 | if #toomany > socket._SETSIZE then |
| 374 | local e = pcall(socket.select, toomany, nil, 0.1) | 379 | local e = pcall(socket.select, toomany, nil, 0.1) |
| @@ -389,7 +394,7 @@ function accept_timeout() | |||
| 389 | local t = socket.gettime() | 394 | local t = socket.gettime() |
| 390 | s:settimeout(1) | 395 | s:settimeout(1) |
| 391 | local c, e = s:accept() | 396 | local c, e = s:accept() |
| 392 | assert(not c, "should not accept") | 397 | assert(not c, "should not accept") |
| 393 | assert(e == "timeout", string.format("wrong error message (%s)", e)) | 398 | assert(e == "timeout", string.format("wrong error message (%s)", e)) |
| 394 | t = socket.gettime() - t | 399 | t = socket.gettime() - t |
| 395 | assert(t < 2, string.format("took to long to give up (%gs)", t)) | 400 | assert(t < 2, string.format("took to long to give up (%gs)", t)) |
| @@ -407,9 +412,9 @@ function connect_timeout() | |||
| 407 | local t = socket.gettime() | 412 | local t = socket.gettime() |
| 408 | local r, e = c:connect("10.0.0.1", 81) | 413 | local r, e = c:connect("10.0.0.1", 81) |
| 409 | assert(not r, "should not connect") | 414 | assert(not r, "should not connect") |
| 410 | assert(socket.gettime() - t < 2, "took too long to give up.") | 415 | assert(socket.gettime() - t < 2, "took too long to give up.") |
| 411 | c:close() | 416 | c:close() |
| 412 | pass("ok") | 417 | pass("ok") |
| 413 | end | 418 | end |
| 414 | 419 | ||
| 415 | ------------------------------------------------------------------------ | 420 | ------------------------------------------------------------------------ |
| @@ -447,16 +452,14 @@ end | |||
| 447 | 452 | ||
| 448 | ------------------------------------------------------------------------ | 453 | ------------------------------------------------------------------------ |
| 449 | function rebind_test() | 454 | function rebind_test() |
| 450 | --local c ,c1 = socket.bind("localhost", 0) | ||
| 451 | local c ,c1 = socket.bind("127.0.0.1", 0) | 455 | local c ,c1 = socket.bind("127.0.0.1", 0) |
| 452 | if not c then pass ("failed to bind! " .. tostring(c) .. ' ' .. tostring(c1)) return end | 456 | if not c then pass ("failed to bind! " .. tostring(c) .. ' ' .. tostring(c1)) return end |
| 453 | assert(c,c1) | 457 | assert(c,c1) |
| 454 | |||
| 455 | local i, p = c:getsockname() | 458 | local i, p = c:getsockname() |
| 456 | local s, e = socket.tcp() | 459 | local s, e = socket.tcp() |
| 457 | assert(s, e) | 460 | assert(s, e) |
| 458 | s:setoption("reuseaddr", false) | 461 | s:setoption("reuseaddr", false) |
| 459 | r, e = s:bind("localhost", p) | 462 | r, e = s:bind(i, p) |
| 460 | assert(not r, "managed to rebind!") | 463 | assert(not r, "managed to rebind!") |
| 461 | assert(e) | 464 | assert(e) |
| 462 | pass("ok") | 465 | pass("ok") |
| @@ -476,9 +479,9 @@ function getstats_test() | |||
| 476 | data:receive(c) | 479 | data:receive(c) |
| 477 | t = t + c | 480 | t = t + c |
| 478 | local r, s, a = data:getstats() | 481 | local r, s, a = data:getstats() |
| 479 | assert(r == t, "received count failed" .. tostring(r) | 482 | assert(r == t, "received count failed" .. tostring(r) |
| 480 | .. "/" .. tostring(t)) | 483 | .. "/" .. tostring(t)) |
| 481 | assert(s == t, "sent count failed" .. tostring(s) | 484 | assert(s == t, "sent count failed" .. tostring(s) |
| 482 | .. "/" .. tostring(t)) | 485 | .. "/" .. tostring(t)) |
| 483 | end | 486 | end |
| 484 | pass("ok") | 487 | pass("ok") |
| @@ -486,7 +489,7 @@ end | |||
| 486 | 489 | ||
| 487 | 490 | ||
| 488 | ------------------------------------------------------------------------ | 491 | ------------------------------------------------------------------------ |
| 489 | function test_nonblocking(size) | 492 | function test_nonblocking(size) |
| 490 | reconnect() | 493 | reconnect() |
| 491 | printf("testing " .. 2*size .. " bytes: ") | 494 | printf("testing " .. 2*size .. " bytes: ") |
| 492 | remote(string.format([[ | 495 | remote(string.format([[ |
| @@ -545,7 +548,7 @@ function test_readafterclose() | |||
| 545 | data:close() | 548 | data:close() |
| 546 | data = nil | 549 | data = nil |
| 547 | ]])) | 550 | ]])) |
| 548 | data:close() | 551 | data:close() |
| 549 | back, err, partial = data:receive("*a") | 552 | back, err, partial = data:receive("*a") |
| 550 | assert(back == nil and err == "closed", "should have returned 'closed'") | 553 | assert(back == nil and err == "closed", "should have returned 'closed'") |
| 551 | pass("ok") | 554 | pass("ok") |
| @@ -555,7 +558,7 @@ function test_readafterclose() | |||
| 555 | data:close() | 558 | data:close() |
| 556 | data = nil | 559 | data = nil |
| 557 | ]])) | 560 | ]])) |
| 558 | data:close() | 561 | data:close() |
| 559 | back, err, partial = data:receive() | 562 | back, err, partial = data:receive() |
| 560 | assert(back == nil and err == "closed", "should have returned 'closed'") | 563 | assert(back == nil and err == "closed", "should have returned 'closed'") |
| 561 | pass("ok") | 564 | pass("ok") |
| @@ -565,7 +568,7 @@ function test_readafterclose() | |||
| 565 | data:close() | 568 | data:close() |
| 566 | data = nil | 569 | data = nil |
| 567 | ]])) | 570 | ]])) |
| 568 | data:close() | 571 | data:close() |
| 569 | back, err, partial = data:receive(1) | 572 | back, err, partial = data:receive(1) |
| 570 | assert(back == nil and err == "closed", "should have returned 'closed'") | 573 | assert(back == nil and err == "closed", "should have returned 'closed'") |
| 571 | pass("ok") | 574 | pass("ok") |
| @@ -575,7 +578,7 @@ function test_readafterclose() | |||
| 575 | data:close() | 578 | data:close() |
| 576 | data = nil | 579 | data = nil |
| 577 | ]])) | 580 | ]])) |
| 578 | data:close() | 581 | data:close() |
| 579 | back, err, partial = data:receive(0) | 582 | back, err, partial = data:receive(0) |
| 580 | assert(back == nil and err == "closed", "should have returned 'closed'") | 583 | assert(back == nil and err == "closed", "should have returned 'closed'") |
| 581 | pass("ok") | 584 | pass("ok") |
| @@ -593,7 +596,7 @@ function test_writeafterclose() | |||
| 593 | while not err do | 596 | while not err do |
| 594 | sent, err, errsent, time = data:send(str) | 597 | sent, err, errsent, time = data:send(str) |
| 595 | end | 598 | end |
| 596 | assert(err == "closed", "should have returned 'closed'") | 599 | assert(err == "closed", "got " .. err .. " instead of 'closed'") |
| 597 | pass("ok") | 600 | pass("ok") |
| 598 | end | 601 | end |
| 599 | 602 | ||
| @@ -648,18 +651,18 @@ else io.stderr:write("Warning! IPv6 does not support!\n") end | |||
| 648 | end | 651 | end |
| 649 | 652 | ||
| 650 | local udp_methods = { | 653 | local udp_methods = { |
| 651 | "close", | 654 | "close", |
| 652 | "dirty", | 655 | "dirty", |
| 653 | "getfamily", | 656 | "getfamily", |
| 654 | "getfd", | 657 | "getfd", |
| 655 | "getoption", | 658 | "getoption", |
| 656 | "getpeername", | 659 | "getpeername", |
| 657 | "getsockname", | 660 | "getsockname", |
| 658 | "receive", | 661 | "receive", |
| 659 | "receivefrom", | 662 | "receivefrom", |
| 660 | "send", | 663 | "send", |
| 661 | "sendto", | 664 | "sendto", |
| 662 | "setfd", | 665 | "setfd", |
| 663 | "setoption", | 666 | "setoption", |
| 664 | "setpeername", | 667 | "setpeername", |
| 665 | "setsockname", | 668 | "setsockname", |
| @@ -674,6 +677,9 @@ if sock then test_methods(socket.udp6(), udp_methods) | |||
| 674 | else io.stderr:write("Warning! IPv6 does not support!\n") end | 677 | else io.stderr:write("Warning! IPv6 does not support!\n") end |
| 675 | end | 678 | end |
| 676 | 679 | ||
| 680 | test("closed connection detection: ") | ||
| 681 | test_closed() | ||
| 682 | |||
| 677 | test("partial receive") | 683 | test("partial receive") |
| 678 | test_partialrecv() | 684 | test_partialrecv() |
| 679 | 685 | ||
| @@ -697,9 +703,6 @@ rebind_test() | |||
| 697 | test("active close: ") | 703 | test("active close: ") |
| 698 | active_close() | 704 | active_close() |
| 699 | 705 | ||
| 700 | test("closed connection detection: ") | ||
| 701 | test_closed() | ||
| 702 | |||
| 703 | test("accept function: ") | 706 | test("accept function: ") |
| 704 | accept_timeout() | 707 | accept_timeout() |
| 705 | accept_errors() | 708 | accept_errors() |
diff --git a/test/testsrvr.lua b/test/testsrvr.lua index 72b93ab..1eb2d5b 100644 --- a/test/testsrvr.lua +++ b/test/testsrvr.lua | |||
| @@ -6,7 +6,7 @@ ack = "\n"; | |||
| 6 | while 1 do | 6 | while 1 do |
| 7 | print("server: waiting for client connection..."); | 7 | print("server: waiting for client connection..."); |
| 8 | control = assert(server:accept()); | 8 | control = assert(server:accept()); |
| 9 | while 1 do | 9 | while 1 do |
| 10 | command, emsg = control:receive(); | 10 | command, emsg = control:receive(); |
| 11 | if emsg == "closed" then | 11 | if emsg == "closed" then |
| 12 | control:close() | 12 | control:close() |
diff --git a/test/udpconnectclnt.lua b/test/udpconnectclnt.lua index effe13a..ad6ab6a 100644 --- a/test/udpconnectclnt.lua +++ b/test/udpconnectclnt.lua | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | local socket = require"socket" | 1 | local socket = require"socket" |
| 2 | local udp = socket.udp | 2 | local udp = socket.udp |
| 3 | local localhost = "127.0.0.1" | 3 | local localhost = "127.0.0.1" |
| 4 | local port = arg[1] | 4 | local port = assert(arg[1], "missing port argument") |
| 5 | 5 | ||
| 6 | se = udp(); se:setoption("reuseaddr", true) | 6 | se = udp(); se:setoption("reuseaddr", true) |
| 7 | se:setsockname(localhost, 5062) | 7 | se:setsockname(localhost, 5062) |
