P2p: add regression test for oversized message
This commit is contained in:
parent
529795efd7
commit
c5b5a87ab7
@ -124,7 +124,7 @@ module Connection_message = struct
|
|||||||
let encoded_message_len =
|
let encoded_message_len =
|
||||||
Data_encoding.Binary.length encoding message in
|
Data_encoding.Binary.length encoding message in
|
||||||
fail_unless
|
fail_unless
|
||||||
(encoded_message_len < Crypto.max_content_length)
|
(encoded_message_len < 1 lsl (Crypto.header_length * 8))
|
||||||
Encoding_error >>=? fun () ->
|
Encoding_error >>=? fun () ->
|
||||||
let len = Crypto.header_length + encoded_message_len in
|
let len = Crypto.header_length + encoded_message_len in
|
||||||
let buf = MBytes.create len in
|
let buf = MBytes.create len in
|
||||||
|
@ -26,6 +26,13 @@ let id0 =
|
|||||||
|
|
||||||
let versions = Version.[{ name = "TEST" ; minor = 0 ; major = 0 }]
|
let versions = Version.[{ name = "TEST" ; minor = 0 ; major = 0 }]
|
||||||
|
|
||||||
|
let random_bytes len =
|
||||||
|
let msg = MBytes.create len in
|
||||||
|
for i = 0 to len / 8 - 1 do
|
||||||
|
MBytes.set_int64 msg (i*8) (Random.int64 Int64.max_int)
|
||||||
|
done ;
|
||||||
|
msg
|
||||||
|
|
||||||
let rec listen ?port addr =
|
let rec listen ?port addr =
|
||||||
let tentative_port =
|
let tentative_port =
|
||||||
match port with
|
match port with
|
||||||
@ -136,7 +143,7 @@ let is_decoding_error = function
|
|||||||
|
|
||||||
module Low_level = struct
|
module Low_level = struct
|
||||||
|
|
||||||
let simple_msg = MBytes.create (1 lsl 4)
|
let simple_msg = random_bytes (1 lsl 4)
|
||||||
|
|
||||||
let client _ch sched addr port =
|
let client _ch sched addr port =
|
||||||
let msg = MBytes.create (MBytes.length simple_msg) in
|
let msg = MBytes.create (MBytes.length simple_msg) in
|
||||||
@ -208,8 +215,8 @@ module Simple_message = struct
|
|||||||
|
|
||||||
let encoding = Data_encoding.bytes
|
let encoding = Data_encoding.bytes
|
||||||
|
|
||||||
let simple_msg = MBytes.create (1 lsl 4)
|
let simple_msg = random_bytes (1 lsl 4)
|
||||||
let simple_msg2 = MBytes.create (1 lsl 4)
|
let simple_msg2 = random_bytes (1 lsl 4)
|
||||||
|
|
||||||
let server ch sched socket =
|
let server ch sched socket =
|
||||||
accept sched socket >>=? fun (_info, auth_fd) ->
|
accept sched socket >>=? fun (_info, auth_fd) ->
|
||||||
@ -239,8 +246,8 @@ module Chunked_message = struct
|
|||||||
|
|
||||||
let encoding = Data_encoding.bytes
|
let encoding = Data_encoding.bytes
|
||||||
|
|
||||||
let simple_msg = MBytes.create (1 lsl 8)
|
let simple_msg = random_bytes (1 lsl 8)
|
||||||
let simple_msg2 = MBytes.create (1 lsl 8)
|
let simple_msg2 = random_bytes (1 lsl 8)
|
||||||
|
|
||||||
let server ch sched socket =
|
let server ch sched socket =
|
||||||
accept sched socket >>=? fun (_info, auth_fd) ->
|
accept sched socket >>=? fun (_info, auth_fd) ->
|
||||||
@ -268,11 +275,42 @@ module Chunked_message = struct
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module Oversized_message = struct
|
||||||
|
|
||||||
|
let encoding = Data_encoding.bytes
|
||||||
|
|
||||||
|
let simple_msg = random_bytes (1 lsl 17)
|
||||||
|
let simple_msg2 = random_bytes (1 lsl 17)
|
||||||
|
|
||||||
|
let server ch sched socket =
|
||||||
|
accept sched socket >>=? fun (_info, auth_fd) ->
|
||||||
|
P2p_connection.accept auth_fd encoding >>=? fun conn ->
|
||||||
|
P2p_connection.write_sync conn simple_msg >>=? fun () ->
|
||||||
|
P2p_connection.read conn >>=? fun (_msg_size, msg) ->
|
||||||
|
_assert (MBytes.compare simple_msg2 msg = 0) __LOC__ "" >>=? fun () ->
|
||||||
|
sync ch >>=? fun () ->
|
||||||
|
P2p_connection.close conn >>= fun _stat ->
|
||||||
|
return ()
|
||||||
|
|
||||||
|
let client ch sched addr port =
|
||||||
|
connect sched addr port id2 >>=? fun auth_fd ->
|
||||||
|
P2p_connection.accept auth_fd encoding >>=? fun conn ->
|
||||||
|
P2p_connection.write_sync conn simple_msg2 >>=? fun () ->
|
||||||
|
P2p_connection.read conn >>=? fun (_msg_size, msg) ->
|
||||||
|
_assert (MBytes.compare simple_msg msg = 0) __LOC__ "" >>=? fun () ->
|
||||||
|
sync ch >>=? fun () ->
|
||||||
|
P2p_connection.close conn >>= fun _stat ->
|
||||||
|
return ()
|
||||||
|
|
||||||
|
let run _dir = run_nodes client server
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
module Close_on_read = struct
|
module Close_on_read = struct
|
||||||
|
|
||||||
let encoding = Data_encoding.bytes
|
let encoding = Data_encoding.bytes
|
||||||
|
|
||||||
let simple_msg = MBytes.create (1 lsl 4)
|
let simple_msg = random_bytes (1 lsl 4)
|
||||||
|
|
||||||
let server _ch sched socket =
|
let server _ch sched socket =
|
||||||
accept sched socket >>=? fun (_info, auth_fd) ->
|
accept sched socket >>=? fun (_info, auth_fd) ->
|
||||||
@ -296,7 +334,7 @@ module Close_on_write = struct
|
|||||||
|
|
||||||
let encoding = Data_encoding.bytes
|
let encoding = Data_encoding.bytes
|
||||||
|
|
||||||
let simple_msg = MBytes.create (1 lsl 4)
|
let simple_msg = random_bytes (1 lsl 4)
|
||||||
|
|
||||||
let server ch sched socket =
|
let server ch sched socket =
|
||||||
accept sched socket >>=? fun (_info, auth_fd) ->
|
accept sched socket >>=? fun (_info, auth_fd) ->
|
||||||
@ -379,6 +417,7 @@ let main () =
|
|||||||
"kicked", Kicked.run ;
|
"kicked", Kicked.run ;
|
||||||
"simple-message", Simple_message.run ;
|
"simple-message", Simple_message.run ;
|
||||||
"chunked-message", Chunked_message.run ;
|
"chunked-message", Chunked_message.run ;
|
||||||
|
"oversized-message", Oversized_message.run ;
|
||||||
"close-on-read", Close_on_read.run ;
|
"close-on-read", Close_on_read.run ;
|
||||||
"close-on-write", Close_on_write.run ;
|
"close-on-write", Close_on_write.run ;
|
||||||
"garbled-data", Garbled_data.run ;
|
"garbled-data", Garbled_data.run ;
|
||||||
|
Loading…
Reference in New Issue
Block a user