From 7acfeb55655ed2a2f1ec2ec1ee4dbfc112fc4c54 Mon Sep 17 00:00:00 2001 From: Hans Nilsson Date: Mon, 14 Nov 2016 10:18:02 +0100 Subject: ssh: interrupted_send receive loop reports missing number of bytes --- lib/ssh/test/ssh_connection_SUITE.erl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'lib/ssh') diff --git a/lib/ssh/test/ssh_connection_SUITE.erl b/lib/ssh/test/ssh_connection_SUITE.erl index e898d55b6f..fc7ea81caf 100644 --- a/lib/ssh/test/ssh_connection_SUITE.erl +++ b/lib/ssh/test/ssh_connection_SUITE.erl @@ -407,7 +407,7 @@ do_interrupted_send(Config, SendSize, EchoSize) -> Parent ! {self(), channelId, ChannelId}, Result = - try collect_data(ConnectionRef, ChannelId) + try collect_data(ConnectionRef, ChannelId, EchoSize) of ExpectedData -> ct:log("~p:~p got expected data",[?MODULE,?LINE]), @@ -931,23 +931,25 @@ big_cat_rx(ConnectionRef, ChannelId, Acc) -> timeout end. -collect_data(ConnectionRef, ChannelId) -> +collect_data(ConnectionRef, ChannelId, EchoSize) -> ct:log("~p:~p Listener ~p running! ConnectionRef=~p, ChannelId=~p",[?MODULE,?LINE,self(),ConnectionRef,ChannelId]), - collect_data(ConnectionRef, ChannelId, [], 0). + collect_data(ConnectionRef, ChannelId, EchoSize, [], 0). -collect_data(ConnectionRef, ChannelId, Acc, Sum) -> +collect_data(ConnectionRef, ChannelId, EchoSize, Acc, Sum) -> TO = 5000, receive {ssh_cm, ConnectionRef, {data, ChannelId, 0, Data}} when is_binary(Data) -> - ct:log("~p:~p collect_data: received ~p bytes. total ~p bytes",[?MODULE,?LINE,size(Data),Sum+size(Data)]), + ct:log("~p:~p collect_data: received ~p bytes. total ~p bytes, want ~p more", + [?MODULE,?LINE,size(Data),Sum+size(Data),EchoSize-Sum]), ssh_connection:adjust_window(ConnectionRef, ChannelId, size(Data)), - collect_data(ConnectionRef, ChannelId, [Data | Acc], Sum+size(Data)); + collect_data(ConnectionRef, ChannelId, EchoSize, [Data | Acc], Sum+size(Data)); {ssh_cm, ConnectionRef, {eof, ChannelId}} -> try iolist_to_binary(lists:reverse(Acc)) of Bin -> - ct:log("~p:~p collect_data: received eof.~nGot in total ~p bytes",[?MODULE,?LINE,size(Bin)]), + ct:log("~p:~p collect_data: received eof.~nGot in total ~p bytes, want ~p more", + [?MODULE,?LINE,size(Bin),EchoSize,size(Bin)]), Bin catch C:E -> @@ -957,11 +959,11 @@ collect_data(ConnectionRef, ChannelId, Acc, Sum) -> end; Msg -> ct:log("~p:~p collect_data: ***** unexpected message *****~n~p",[?MODULE,?LINE,Msg]), - collect_data(ConnectionRef, ChannelId, Acc, Sum) + collect_data(ConnectionRef, ChannelId, EchoSize, Acc, Sum) after TO -> ct:log("~p:~p collect_data: ----- Nothing received for ~p seconds -----~n",[?MODULE,?LINE,TO]), - collect_data(ConnectionRef, ChannelId, Acc, Sum) + collect_data(ConnectionRef, ChannelId, EchoSize, Acc, Sum) end. %%%------------------------------------------------------------------- -- cgit v1.2.3 From cd52f028687974abf62059610bd01fc8f238ec4d Mon Sep 17 00:00:00 2001 From: Hans Nilsson Date: Mon, 14 Nov 2016 10:25:44 +0100 Subject: ssh: interrupted_send test suite handle 'close CHANID' msg --- lib/ssh/test/ssh_connection_SUITE.erl | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'lib/ssh') diff --git a/lib/ssh/test/ssh_connection_SUITE.erl b/lib/ssh/test/ssh_connection_SUITE.erl index fc7ea81caf..2819a4dbd9 100644 --- a/lib/ssh/test/ssh_connection_SUITE.erl +++ b/lib/ssh/test/ssh_connection_SUITE.erl @@ -943,20 +943,12 @@ collect_data(ConnectionRef, ChannelId, EchoSize, Acc, Sum) -> [?MODULE,?LINE,size(Data),Sum+size(Data),EchoSize-Sum]), ssh_connection:adjust_window(ConnectionRef, ChannelId, size(Data)), collect_data(ConnectionRef, ChannelId, EchoSize, [Data | Acc], Sum+size(Data)); - {ssh_cm, ConnectionRef, {eof, ChannelId}} -> - try - iolist_to_binary(lists:reverse(Acc)) - of - Bin -> - ct:log("~p:~p collect_data: received eof.~nGot in total ~p bytes, want ~p more", - [?MODULE,?LINE,size(Bin),EchoSize,size(Bin)]), - Bin - catch - C:E -> - ct:log("~p:~p collect_data: received eof.~nAcc is strange...~nException=~p:~p~nAcc=~p", - [?MODULE,?LINE,C,E,Acc]), - {error,{C,E}} - end; + {ssh_cm, ConnectionRef, Msg={eof, ChannelId}} -> + collect_data_report_end(Acc, Msg, EchoSize); + + {ssh_cm, ConnectionRef, Msg={closed,ChannelId}} -> + collect_data_report_end(Acc, Msg, EchoSize); + Msg -> ct:log("~p:~p collect_data: ***** unexpected message *****~n~p",[?MODULE,?LINE,Msg]), collect_data(ConnectionRef, ChannelId, EchoSize, Acc, Sum) @@ -966,6 +958,21 @@ collect_data(ConnectionRef, ChannelId, EchoSize, Acc, Sum) -> collect_data(ConnectionRef, ChannelId, EchoSize, Acc, Sum) end. +collect_data_report_end(Acc, Msg, EchoSize) -> + try + iolist_to_binary(lists:reverse(Acc)) + of + Bin -> + ct:log("~p:~p collect_data: received ~p.~nGot in total ~p bytes, want ~p more", + [?MODULE,?LINE,Msg,size(Bin),EchoSize,size(Bin)]), + Bin + catch + C:E -> + ct:log("~p:~p collect_data: received ~p.~nAcc is strange...~nException=~p:~p~nAcc=~p", + [?MODULE,?LINE,Msg,C,E,Acc]), + {error,{C,E}} + end. + %%%------------------------------------------------------------------- %% This is taken from the ssh example code. start_our_shell(_User, _Peer) -> -- cgit v1.2.3