On 06/12/2019 17:01, Ilya Kosarev wrote:
> Hi!
>
> Thanks for your review.
>
> 4. I run socket.test to simulate "high load" in parallel with itself
> (while ./test-run.py -j20 `for r in {1..64} ; do echo socket ; done` 2>/dev/null ; do l=$(($l+1)) ; echo ======== $l ============= ; done).
I tried this example on your branch and got that:
=========================================================================
[009] --- app/socket.result Sun Dec 8 15:40:58 2019
[009] +++ app/socket.reject Sun Dec 8 16:09:23 2019
[009] @@ -2670,13 +2670,17 @@
[009] -- case: recvfrom reads first 512 bytes from the message with tcp
[009] received_message, from = receiving_socket:recvfrom()
[009] ---
[009] +- error: '[string "received_message, from = receiving_socket:rec..."]:1: attempt to
[009] + index global ''receiving_socket'' (a nil value)'
[009] ...
[009] e = receiving_socket:errno()
[009] ---
[009] +- error: '[string "e = receiving_socket:errno() "]:1: attempt to index global ''receiving_socket''
[009] + (a nil value)'
[009] ...
[009] received_message == message:sub(1, 512) -- expected true
[009] ---
[009] -- true
[009] +- false
[009] ...
[009] received_message:len() == 512 -- expected true
[009] ---
[009] @@ -2684,7 +2688,7 @@
[009] ...
[009] received_message
[009] ---
[009] -- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[009] +- yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
[009] ...
[009] received_message:len()
[009] ---
[009] @@ -2692,11 +2696,13 @@
[009] ...
[009] from == nil -- expected true
[009] ---
[009] -- true
[009] +- false
[009] ...
[009] from
[009] ---
[009] -- null
[009] +- host: 127.0.0.1
[009] + family: AF_INET
[009] + port: 57721
[009] ...
[009] e == 0 -- expected true
[009] ---
[009] @@ -2709,33 +2715,39 @@
[009] -- case: recvfrom does not discard the message tail with tcp
[009] received_message, from = receiving_socket:recvfrom()
[009] ---
[009] +- error: '[string "received_message, from = receiving_socket:rec..."]:1: attempt to
[009] + index global ''receiving_socket'' (a nil value)'
[009] ...
[009] e = receiving_socket:errno()
[009] ---
[009] +- error: '[string "e = receiving_socket:errno() "]:1: attempt to index global ''receiving_socket''
[009] + (a nil value)'
[009] ...
[009] received_message == message:sub(513, 513) -- expected true
[009] ---
[009] -- true
[009] +- false
[009] ...
[009] received_message:len() == 1 -- expected true
[009] ---
[009] -- true
[009] +- false
[009] ...
[009] received_message
[009] ---
[009] -- x
[009] +- yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
[009] ...
[009] received_message:len()
[009] ---
[009] -- 1
[009] +- 512
[009] ...
[009] from == nil -- expected true
[009] ---
[009] -- true
[009] +- false
[009] ...
[009] from
[009] ---
[009] -- null
[009] +- host: 127.0.0.1
[009] + family: AF_INET
[009] + port: 57721
[009] ...
[009] e == 0 -- expected true
[009] ---
[009] @@ -2747,7 +2759,8 @@
[009] ...
[009] receiving_socket:close()
[009] ---
[009] -- true
[009] +- error: '[string "return receiving_socket:close() "]:1: attempt to index global ''receiving_socket''
[009] + (a nil value)'
[009] ...
[009] sending_socket:close()
[009] ---
[009]
=========================================================================
Sometimes I get this:
=========================================================================
[008] app/socket.test.lua [ fail ]
[008]
[008] Test failed! Result content mismatch:
[008] --- app/socket.result Sun Dec 8 15:40:58 2019
[008] +++ app/socket.reject Sun Dec 8 16:11:27 2019
[008] @@ -2340,23 +2340,24 @@
[008] ...
[008] received_message == '' -- expected true
[008] ---
[008] -- true
[008] +- false
[008] ...
[008] received_message
[008] ---
[008] --
[008] +- null
[008] ...
[008] from ~= nil -- expected true
[008] ---
[008] -- true
[008] +- false
[008] ...
[008] from.host == '127.0.0.1' -- expected true
[008] ---
[008] -- true
[008] +- error: '[string "return from.host == ''127.0.0.1'' -- expected t..."]:1: attempt
[008] + to index global ''from'' (a nil value)'
[008] ...
[008] e == 0 -- expected true
[008] ---
[008] -- true
[008] +- false
[008] ...
[008] -- case: recv, no datagram, explicit size
[008] received_message = receiving_socket:recv(512)
[008] @@ -2386,23 +2387,25 @@
[008] ...
[008] received_message == nil -- expected true
[008] ---
[008] -- true
[008] +- false
[008] ...
[008] received_message
[008] ---
[008] -- null
[008] +-
[008] ...
[008] from == nil -- expected true
[008] ---
[008] -- true
[008] +- false
[008] ...
[008] from
[008] ---
[008] -- null
[008] +- host: 127.0.0.1
[008] + family: AF_INET
[008] + port: 59867
[008] ...
[008] e == errno.EAGAIN -- expected true
[008] ---
[008] -- true
[008] +- false
[008] ...
[008] -- case: recv, zero datagram, explicit size
[008] sendto_zero(sending_socket, '127.0.0.1', receiving_socket_port)
=========================================================================
So socket.test.lua still is unstable. The command with 64
socket.test.lua gives me an error in 100% cases.